diff --git a/Frameworks/BVLinearGradient.xcframework/Info.plist b/Frameworks/BVLinearGradient.xcframework/Info.plist new file mode 100644 index 0000000..74c0409 --- /dev/null +++ b/Frameworks/BVLinearGradient.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libBVLinearGradient.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libBVLinearGradient.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libBVLinearGradient.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libBVLinearGradient.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/BVLinearGradient.xcframework/ios-arm64/Headers/BVLinearGradient.h b/Frameworks/BVLinearGradient.xcframework/ios-arm64/Headers/BVLinearGradient.h new file mode 100644 index 0000000..74a3f87 --- /dev/null +++ b/Frameworks/BVLinearGradient.xcframework/ios-arm64/Headers/BVLinearGradient.h @@ -0,0 +1,13 @@ +#import + +@interface BVLinearGradient : RCTView + +@property (nullable, nonatomic, copy) NSArray *colors; +@property (nullable, nonatomic, copy) NSArray *locations; +@property (nonatomic) CGPoint startPoint; +@property (nonatomic) CGPoint endPoint; +@property (nonatomic) BOOL useAngle; +@property (nonatomic) CGPoint angleCenter; +@property (nonatomic) CGFloat angle; + +@end diff --git a/Frameworks/BVLinearGradient.xcframework/ios-arm64/Headers/BVLinearGradientLayer.h b/Frameworks/BVLinearGradient.xcframework/ios-arm64/Headers/BVLinearGradientLayer.h new file mode 100644 index 0000000..9283fe0 --- /dev/null +++ b/Frameworks/BVLinearGradient.xcframework/ios-arm64/Headers/BVLinearGradientLayer.h @@ -0,0 +1,16 @@ +#import +#import + +@class UIColor; + +@interface BVLinearGradientLayer : CALayer + +@property (nullable, nonatomic, copy) NSArray *colors; +@property (nullable, nonatomic, copy) NSArray *locations; +@property (nonatomic) CGPoint startPoint; +@property (nonatomic) CGPoint endPoint; +@property (nonatomic) BOOL useAngle; +@property (nonatomic) CGPoint angleCenter; +@property (nonatomic) CGFloat angle; + +@end diff --git a/Frameworks/BVLinearGradient.xcframework/ios-arm64/Headers/BVLinearGradientManager.h b/Frameworks/BVLinearGradient.xcframework/ios-arm64/Headers/BVLinearGradientManager.h new file mode 100644 index 0000000..49f46f2 --- /dev/null +++ b/Frameworks/BVLinearGradient.xcframework/ios-arm64/Headers/BVLinearGradientManager.h @@ -0,0 +1,5 @@ +#import + +@interface BVLinearGradientManager : RCTViewManager + +@end diff --git a/Frameworks/BVLinearGradient.xcframework/ios-arm64/libBVLinearGradient.a b/Frameworks/BVLinearGradient.xcframework/ios-arm64/libBVLinearGradient.a new file mode 100644 index 0000000..bb110da Binary files /dev/null and b/Frameworks/BVLinearGradient.xcframework/ios-arm64/libBVLinearGradient.a differ diff --git a/Frameworks/BVLinearGradient.xcframework/ios-arm64_x86_64-simulator/Headers/BVLinearGradient.h b/Frameworks/BVLinearGradient.xcframework/ios-arm64_x86_64-simulator/Headers/BVLinearGradient.h new file mode 100644 index 0000000..74a3f87 --- /dev/null +++ b/Frameworks/BVLinearGradient.xcframework/ios-arm64_x86_64-simulator/Headers/BVLinearGradient.h @@ -0,0 +1,13 @@ +#import + +@interface BVLinearGradient : RCTView + +@property (nullable, nonatomic, copy) NSArray *colors; +@property (nullable, nonatomic, copy) NSArray *locations; +@property (nonatomic) CGPoint startPoint; +@property (nonatomic) CGPoint endPoint; +@property (nonatomic) BOOL useAngle; +@property (nonatomic) CGPoint angleCenter; +@property (nonatomic) CGFloat angle; + +@end diff --git a/Frameworks/BVLinearGradient.xcframework/ios-arm64_x86_64-simulator/Headers/BVLinearGradientLayer.h b/Frameworks/BVLinearGradient.xcframework/ios-arm64_x86_64-simulator/Headers/BVLinearGradientLayer.h new file mode 100644 index 0000000..9283fe0 --- /dev/null +++ b/Frameworks/BVLinearGradient.xcframework/ios-arm64_x86_64-simulator/Headers/BVLinearGradientLayer.h @@ -0,0 +1,16 @@ +#import +#import + +@class UIColor; + +@interface BVLinearGradientLayer : CALayer + +@property (nullable, nonatomic, copy) NSArray *colors; +@property (nullable, nonatomic, copy) NSArray *locations; +@property (nonatomic) CGPoint startPoint; +@property (nonatomic) CGPoint endPoint; +@property (nonatomic) BOOL useAngle; +@property (nonatomic) CGPoint angleCenter; +@property (nonatomic) CGFloat angle; + +@end diff --git a/Frameworks/BVLinearGradient.xcframework/ios-arm64_x86_64-simulator/Headers/BVLinearGradientManager.h b/Frameworks/BVLinearGradient.xcframework/ios-arm64_x86_64-simulator/Headers/BVLinearGradientManager.h new file mode 100644 index 0000000..49f46f2 --- /dev/null +++ b/Frameworks/BVLinearGradient.xcframework/ios-arm64_x86_64-simulator/Headers/BVLinearGradientManager.h @@ -0,0 +1,5 @@ +#import + +@interface BVLinearGradientManager : RCTViewManager + +@end diff --git a/Frameworks/BVLinearGradient.xcframework/ios-arm64_x86_64-simulator/libBVLinearGradient.a b/Frameworks/BVLinearGradient.xcframework/ios-arm64_x86_64-simulator/libBVLinearGradient.a new file mode 100644 index 0000000..e346517 Binary files /dev/null and b/Frameworks/BVLinearGradient.xcframework/ios-arm64_x86_64-simulator/libBVLinearGradient.a differ diff --git a/Frameworks/DoubleConversion.xcframework/Info.plist b/Frameworks/DoubleConversion.xcframework/Info.plist new file mode 100644 index 0000000..69b1ae2 --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libDoubleConversion.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libDoubleConversion.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libDoubleConversion.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libDoubleConversion.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/DoubleConversion/double-conversion/bignum-dtoa.h b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/DoubleConversion/double-conversion/bignum-dtoa.h new file mode 100644 index 0000000..34b9619 --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/DoubleConversion/double-conversion/bignum-dtoa.h @@ -0,0 +1,84 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_BIGNUM_DTOA_H_ +#define DOUBLE_CONVERSION_BIGNUM_DTOA_H_ + +#include "utils.h" + +namespace double_conversion { + +enum BignumDtoaMode { + // Return the shortest correct representation. + // For example the output of 0.299999999999999988897 is (the less accurate but + // correct) 0.3. + BIGNUM_DTOA_SHORTEST, + // Same as BIGNUM_DTOA_SHORTEST but for single-precision floats. + BIGNUM_DTOA_SHORTEST_SINGLE, + // Return a fixed number of digits after the decimal point. + // For instance fixed(0.1, 4) becomes 0.1000 + // If the input number is big, the output will be big. + BIGNUM_DTOA_FIXED, + // Return a fixed number of digits, no matter what the exponent is. + BIGNUM_DTOA_PRECISION +}; + +// Converts the given double 'v' to ascii. +// The result should be interpreted as buffer * 10^(point-length). +// The buffer will be null-terminated. +// +// The input v must be > 0 and different from NaN, and Infinity. +// +// The output depends on the given mode: +// - SHORTEST: produce the least amount of digits for which the internal +// identity requirement is still satisfied. If the digits are printed +// (together with the correct exponent) then reading this number will give +// 'v' again. The buffer will choose the representation that is closest to +// 'v'. If there are two at the same distance, than the number is round up. +// In this mode the 'requested_digits' parameter is ignored. +// - FIXED: produces digits necessary to print a given number with +// 'requested_digits' digits after the decimal point. The produced digits +// might be too short in which case the caller has to fill the gaps with '0's. +// Example: toFixed(0.001, 5) is allowed to return buffer="1", point=-2. +// Halfway cases are rounded up. The call toFixed(0.15, 2) thus returns +// buffer="2", point=0. +// Note: the length of the returned buffer has no meaning wrt the significance +// of its digits. That is, just because it contains '0's does not mean that +// any other digit would not satisfy the internal identity requirement. +// - PRECISION: produces 'requested_digits' where the first digit is not '0'. +// Even though the length of produced digits usually equals +// 'requested_digits', the function is allowed to return fewer digits, in +// which case the caller has to fill the missing digits with '0's. +// Halfway cases are again rounded up. +// 'BignumDtoa' expects the given buffer to be big enough to hold all digits +// and a terminating null-character. +void BignumDtoa(double v, BignumDtoaMode mode, int requested_digits, + Vector buffer, int* length, int* point); + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_BIGNUM_DTOA_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/DoubleConversion/double-conversion/bignum.h b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/DoubleConversion/double-conversion/bignum.h new file mode 100644 index 0000000..5ec3544 --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/DoubleConversion/double-conversion/bignum.h @@ -0,0 +1,145 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_BIGNUM_H_ +#define DOUBLE_CONVERSION_BIGNUM_H_ + +#include "utils.h" + +namespace double_conversion { + +class Bignum { + public: + // 3584 = 128 * 28. We can represent 2^3584 > 10^1000 accurately. + // This bignum can encode much bigger numbers, since it contains an + // exponent. + static const int kMaxSignificantBits = 3584; + + Bignum(); + void AssignUInt16(uint16_t value); + void AssignUInt64(uint64_t value); + void AssignBignum(const Bignum& other); + + void AssignDecimalString(Vector value); + void AssignHexString(Vector value); + + void AssignPowerUInt16(uint16_t base, int exponent); + + void AddUInt16(uint16_t operand); + void AddUInt64(uint64_t operand); + void AddBignum(const Bignum& other); + // Precondition: this >= other. + void SubtractBignum(const Bignum& other); + + void Square(); + void ShiftLeft(int shift_amount); + void MultiplyByUInt32(uint32_t factor); + void MultiplyByUInt64(uint64_t factor); + void MultiplyByPowerOfTen(int exponent); + void Times10() { return MultiplyByUInt32(10); } + // Pseudocode: + // int result = this / other; + // this = this % other; + // In the worst case this function is in O(this/other). + uint16_t DivideModuloIntBignum(const Bignum& other); + + bool ToHexString(char* buffer, int buffer_size) const; + + // Returns + // -1 if a < b, + // 0 if a == b, and + // +1 if a > b. + static int Compare(const Bignum& a, const Bignum& b); + static bool Equal(const Bignum& a, const Bignum& b) { + return Compare(a, b) == 0; + } + static bool LessEqual(const Bignum& a, const Bignum& b) { + return Compare(a, b) <= 0; + } + static bool Less(const Bignum& a, const Bignum& b) { + return Compare(a, b) < 0; + } + // Returns Compare(a + b, c); + static int PlusCompare(const Bignum& a, const Bignum& b, const Bignum& c); + // Returns a + b == c + static bool PlusEqual(const Bignum& a, const Bignum& b, const Bignum& c) { + return PlusCompare(a, b, c) == 0; + } + // Returns a + b <= c + static bool PlusLessEqual(const Bignum& a, const Bignum& b, const Bignum& c) { + return PlusCompare(a, b, c) <= 0; + } + // Returns a + b < c + static bool PlusLess(const Bignum& a, const Bignum& b, const Bignum& c) { + return PlusCompare(a, b, c) < 0; + } + private: + typedef uint32_t Chunk; + typedef uint64_t DoubleChunk; + + static const int kChunkSize = sizeof(Chunk) * 8; + static const int kDoubleChunkSize = sizeof(DoubleChunk) * 8; + // With bigit size of 28 we loose some bits, but a double still fits easily + // into two chunks, and more importantly we can use the Comba multiplication. + static const int kBigitSize = 28; + static const Chunk kBigitMask = (1 << kBigitSize) - 1; + // Every instance allocates kBigitLength chunks on the stack. Bignums cannot + // grow. There are no checks if the stack-allocated space is sufficient. + static const int kBigitCapacity = kMaxSignificantBits / kBigitSize; + + void EnsureCapacity(int size) { + if (size > kBigitCapacity) { + UNREACHABLE(); + } + } + void Align(const Bignum& other); + void Clamp(); + bool IsClamped() const; + void Zero(); + // Requires this to have enough capacity (no tests done). + // Updates used_digits_ if necessary. + // shift_amount must be < kBigitSize. + void BigitsShiftLeft(int shift_amount); + // BigitLength includes the "hidden" digits encoded in the exponent. + int BigitLength() const { return used_digits_ + exponent_; } + Chunk BigitAt(int index) const; + void SubtractTimes(const Bignum& other, int factor); + + Chunk bigits_buffer_[kBigitCapacity]; + // A vector backed by bigits_buffer_. This way accesses to the array are + // checked for out-of-bounds errors. + Vector bigits_; + int used_digits_; + // The Bignum's value equals value(bigits_) * 2^(exponent_ * kBigitSize). + int exponent_; + + DISALLOW_COPY_AND_ASSIGN(Bignum); +}; + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_BIGNUM_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/DoubleConversion/double-conversion/cached-powers.h b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/DoubleConversion/double-conversion/cached-powers.h new file mode 100644 index 0000000..61a5061 --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/DoubleConversion/double-conversion/cached-powers.h @@ -0,0 +1,64 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_CACHED_POWERS_H_ +#define DOUBLE_CONVERSION_CACHED_POWERS_H_ + +#include "diy-fp.h" + +namespace double_conversion { + +class PowersOfTenCache { + public: + + // Not all powers of ten are cached. The decimal exponent of two neighboring + // cached numbers will differ by kDecimalExponentDistance. + static const int kDecimalExponentDistance; + + static const int kMinDecimalExponent; + static const int kMaxDecimalExponent; + + // Returns a cached power-of-ten with a binary exponent in the range + // [min_exponent; max_exponent] (boundaries included). + static void GetCachedPowerForBinaryExponentRange(int min_exponent, + int max_exponent, + DiyFp* power, + int* decimal_exponent); + + // Returns a cached power of ten x ~= 10^k such that + // k <= decimal_exponent < k + kCachedPowersDecimalDistance. + // The given decimal_exponent must satisfy + // kMinDecimalExponent <= requested_exponent, and + // requested_exponent < kMaxDecimalExponent + kDecimalExponentDistance. + static void GetCachedPowerForDecimalExponent(int requested_exponent, + DiyFp* power, + int* found_exponent); +}; + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_CACHED_POWERS_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/DoubleConversion/double-conversion/diy-fp.h b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/DoubleConversion/double-conversion/diy-fp.h new file mode 100644 index 0000000..9dcf8fb --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/DoubleConversion/double-conversion/diy-fp.h @@ -0,0 +1,118 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_DIY_FP_H_ +#define DOUBLE_CONVERSION_DIY_FP_H_ + +#include "utils.h" + +namespace double_conversion { + +// This "Do It Yourself Floating Point" class implements a floating-point number +// with a uint64 significand and an int exponent. Normalized DiyFp numbers will +// have the most significant bit of the significand set. +// Multiplication and Subtraction do not normalize their results. +// DiyFp are not designed to contain special doubles (NaN and Infinity). +class DiyFp { + public: + static const int kSignificandSize = 64; + + DiyFp() : f_(0), e_(0) {} + DiyFp(uint64_t f, int e) : f_(f), e_(e) {} + + // this = this - other. + // The exponents of both numbers must be the same and the significand of this + // must be bigger than the significand of other. + // The result will not be normalized. + void Subtract(const DiyFp& other) { + ASSERT(e_ == other.e_); + ASSERT(f_ >= other.f_); + f_ -= other.f_; + } + + // Returns a - b. + // The exponents of both numbers must be the same and this must be bigger + // than other. The result will not be normalized. + static DiyFp Minus(const DiyFp& a, const DiyFp& b) { + DiyFp result = a; + result.Subtract(b); + return result; + } + + + // this = this * other. + void Multiply(const DiyFp& other); + + // returns a * b; + static DiyFp Times(const DiyFp& a, const DiyFp& b) { + DiyFp result = a; + result.Multiply(b); + return result; + } + + void Normalize() { + ASSERT(f_ != 0); + uint64_t f = f_; + int e = e_; + + // This method is mainly called for normalizing boundaries. In general + // boundaries need to be shifted by 10 bits. We thus optimize for this case. + const uint64_t k10MSBits = UINT64_2PART_C(0xFFC00000, 00000000); + while ((f & k10MSBits) == 0) { + f <<= 10; + e -= 10; + } + while ((f & kUint64MSB) == 0) { + f <<= 1; + e--; + } + f_ = f; + e_ = e; + } + + static DiyFp Normalize(const DiyFp& a) { + DiyFp result = a; + result.Normalize(); + return result; + } + + uint64_t f() const { return f_; } + int e() const { return e_; } + + void set_f(uint64_t new_value) { f_ = new_value; } + void set_e(int new_value) { e_ = new_value; } + + private: + static const uint64_t kUint64MSB = UINT64_2PART_C(0x80000000, 00000000); + + uint64_t f_; + int e_; +}; + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_DIY_FP_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/DoubleConversion/double-conversion/double-conversion.h b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/DoubleConversion/double-conversion/double-conversion.h new file mode 100644 index 0000000..1c3387d --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/DoubleConversion/double-conversion/double-conversion.h @@ -0,0 +1,536 @@ +// Copyright 2012 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_DOUBLE_CONVERSION_H_ +#define DOUBLE_CONVERSION_DOUBLE_CONVERSION_H_ + +#include "utils.h" + +namespace double_conversion { + +class DoubleToStringConverter { + public: + // When calling ToFixed with a double > 10^kMaxFixedDigitsBeforePoint + // or a requested_digits parameter > kMaxFixedDigitsAfterPoint then the + // function returns false. + static const int kMaxFixedDigitsBeforePoint = 60; + static const int kMaxFixedDigitsAfterPoint = 60; + + // When calling ToExponential with a requested_digits + // parameter > kMaxExponentialDigits then the function returns false. + static const int kMaxExponentialDigits = 120; + + // When calling ToPrecision with a requested_digits + // parameter < kMinPrecisionDigits or requested_digits > kMaxPrecisionDigits + // then the function returns false. + static const int kMinPrecisionDigits = 1; + static const int kMaxPrecisionDigits = 120; + + enum Flags { + NO_FLAGS = 0, + EMIT_POSITIVE_EXPONENT_SIGN = 1, + EMIT_TRAILING_DECIMAL_POINT = 2, + EMIT_TRAILING_ZERO_AFTER_POINT = 4, + UNIQUE_ZERO = 8 + }; + + // Flags should be a bit-or combination of the possible Flags-enum. + // - NO_FLAGS: no special flags. + // - EMIT_POSITIVE_EXPONENT_SIGN: when the number is converted into exponent + // form, emits a '+' for positive exponents. Example: 1.2e+2. + // - EMIT_TRAILING_DECIMAL_POINT: when the input number is an integer and is + // converted into decimal format then a trailing decimal point is appended. + // Example: 2345.0 is converted to "2345.". + // - EMIT_TRAILING_ZERO_AFTER_POINT: in addition to a trailing decimal point + // emits a trailing '0'-character. This flag requires the + // EXMIT_TRAILING_DECIMAL_POINT flag. + // Example: 2345.0 is converted to "2345.0". + // - UNIQUE_ZERO: "-0.0" is converted to "0.0". + // + // Infinity symbol and nan_symbol provide the string representation for these + // special values. If the string is NULL and the special value is encountered + // then the conversion functions return false. + // + // The exponent_character is used in exponential representations. It is + // usually 'e' or 'E'. + // + // When converting to the shortest representation the converter will + // represent input numbers in decimal format if they are in the interval + // [10^decimal_in_shortest_low; 10^decimal_in_shortest_high[ + // (lower boundary included, greater boundary excluded). + // Example: with decimal_in_shortest_low = -6 and + // decimal_in_shortest_high = 21: + // ToShortest(0.000001) -> "0.000001" + // ToShortest(0.0000001) -> "1e-7" + // ToShortest(111111111111111111111.0) -> "111111111111111110000" + // ToShortest(100000000000000000000.0) -> "100000000000000000000" + // ToShortest(1111111111111111111111.0) -> "1.1111111111111111e+21" + // + // When converting to precision mode the converter may add + // max_leading_padding_zeroes before returning the number in exponential + // format. + // Example with max_leading_padding_zeroes_in_precision_mode = 6. + // ToPrecision(0.0000012345, 2) -> "0.0000012" + // ToPrecision(0.00000012345, 2) -> "1.2e-7" + // Similarily the converter may add up to + // max_trailing_padding_zeroes_in_precision_mode in precision mode to avoid + // returning an exponential representation. A zero added by the + // EMIT_TRAILING_ZERO_AFTER_POINT flag is counted for this limit. + // Examples for max_trailing_padding_zeroes_in_precision_mode = 1: + // ToPrecision(230.0, 2) -> "230" + // ToPrecision(230.0, 2) -> "230." with EMIT_TRAILING_DECIMAL_POINT. + // ToPrecision(230.0, 2) -> "2.3e2" with EMIT_TRAILING_ZERO_AFTER_POINT. + DoubleToStringConverter(int flags, + const char* infinity_symbol, + const char* nan_symbol, + char exponent_character, + int decimal_in_shortest_low, + int decimal_in_shortest_high, + int max_leading_padding_zeroes_in_precision_mode, + int max_trailing_padding_zeroes_in_precision_mode) + : flags_(flags), + infinity_symbol_(infinity_symbol), + nan_symbol_(nan_symbol), + exponent_character_(exponent_character), + decimal_in_shortest_low_(decimal_in_shortest_low), + decimal_in_shortest_high_(decimal_in_shortest_high), + max_leading_padding_zeroes_in_precision_mode_( + max_leading_padding_zeroes_in_precision_mode), + max_trailing_padding_zeroes_in_precision_mode_( + max_trailing_padding_zeroes_in_precision_mode) { + // When 'trailing zero after the point' is set, then 'trailing point' + // must be set too. + ASSERT(((flags & EMIT_TRAILING_DECIMAL_POINT) != 0) || + !((flags & EMIT_TRAILING_ZERO_AFTER_POINT) != 0)); + } + + // Returns a converter following the EcmaScript specification. + static const DoubleToStringConverter& EcmaScriptConverter(); + + // Computes the shortest string of digits that correctly represent the input + // number. Depending on decimal_in_shortest_low and decimal_in_shortest_high + // (see constructor) it then either returns a decimal representation, or an + // exponential representation. + // Example with decimal_in_shortest_low = -6, + // decimal_in_shortest_high = 21, + // EMIT_POSITIVE_EXPONENT_SIGN activated, and + // EMIT_TRAILING_DECIMAL_POINT deactived: + // ToShortest(0.000001) -> "0.000001" + // ToShortest(0.0000001) -> "1e-7" + // ToShortest(111111111111111111111.0) -> "111111111111111110000" + // ToShortest(100000000000000000000.0) -> "100000000000000000000" + // ToShortest(1111111111111111111111.0) -> "1.1111111111111111e+21" + // + // Note: the conversion may round the output if the returned string + // is accurate enough to uniquely identify the input-number. + // For example the most precise representation of the double 9e59 equals + // "899999999999999918767229449717619953810131273674690656206848", but + // the converter will return the shorter (but still correct) "9e59". + // + // Returns true if the conversion succeeds. The conversion always succeeds + // except when the input value is special and no infinity_symbol or + // nan_symbol has been given to the constructor. + bool ToShortest(double value, StringBuilder* result_builder) const { + return ToShortestIeeeNumber(value, result_builder, SHORTEST); + } + + // Same as ToShortest, but for single-precision floats. + bool ToShortestSingle(float value, StringBuilder* result_builder) const { + return ToShortestIeeeNumber(value, result_builder, SHORTEST_SINGLE); + } + + + // Computes a decimal representation with a fixed number of digits after the + // decimal point. The last emitted digit is rounded. + // + // Examples: + // ToFixed(3.12, 1) -> "3.1" + // ToFixed(3.1415, 3) -> "3.142" + // ToFixed(1234.56789, 4) -> "1234.5679" + // ToFixed(1.23, 5) -> "1.23000" + // ToFixed(0.1, 4) -> "0.1000" + // ToFixed(1e30, 2) -> "1000000000000000019884624838656.00" + // ToFixed(0.1, 30) -> "0.100000000000000005551115123126" + // ToFixed(0.1, 17) -> "0.10000000000000001" + // + // If requested_digits equals 0, then the tail of the result depends on + // the EMIT_TRAILING_DECIMAL_POINT and EMIT_TRAILING_ZERO_AFTER_POINT. + // Examples, for requested_digits == 0, + // let EMIT_TRAILING_DECIMAL_POINT and EMIT_TRAILING_ZERO_AFTER_POINT be + // - false and false: then 123.45 -> 123 + // 0.678 -> 1 + // - true and false: then 123.45 -> 123. + // 0.678 -> 1. + // - true and true: then 123.45 -> 123.0 + // 0.678 -> 1.0 + // + // Returns true if the conversion succeeds. The conversion always succeeds + // except for the following cases: + // - the input value is special and no infinity_symbol or nan_symbol has + // been provided to the constructor, + // - 'value' > 10^kMaxFixedDigitsBeforePoint, or + // - 'requested_digits' > kMaxFixedDigitsAfterPoint. + // The last two conditions imply that the result will never contain more than + // 1 + kMaxFixedDigitsBeforePoint + 1 + kMaxFixedDigitsAfterPoint characters + // (one additional character for the sign, and one for the decimal point). + bool ToFixed(double value, + int requested_digits, + StringBuilder* result_builder) const; + + // Computes a representation in exponential format with requested_digits + // after the decimal point. The last emitted digit is rounded. + // If requested_digits equals -1, then the shortest exponential representation + // is computed. + // + // Examples with EMIT_POSITIVE_EXPONENT_SIGN deactivated, and + // exponent_character set to 'e'. + // ToExponential(3.12, 1) -> "3.1e0" + // ToExponential(5.0, 3) -> "5.000e0" + // ToExponential(0.001, 2) -> "1.00e-3" + // ToExponential(3.1415, -1) -> "3.1415e0" + // ToExponential(3.1415, 4) -> "3.1415e0" + // ToExponential(3.1415, 3) -> "3.142e0" + // ToExponential(123456789000000, 3) -> "1.235e14" + // ToExponential(1000000000000000019884624838656.0, -1) -> "1e30" + // ToExponential(1000000000000000019884624838656.0, 32) -> + // "1.00000000000000001988462483865600e30" + // ToExponential(1234, 0) -> "1e3" + // + // Returns true if the conversion succeeds. The conversion always succeeds + // except for the following cases: + // - the input value is special and no infinity_symbol or nan_symbol has + // been provided to the constructor, + // - 'requested_digits' > kMaxExponentialDigits. + // The last condition implies that the result will never contain more than + // kMaxExponentialDigits + 8 characters (the sign, the digit before the + // decimal point, the decimal point, the exponent character, the + // exponent's sign, and at most 3 exponent digits). + bool ToExponential(double value, + int requested_digits, + StringBuilder* result_builder) const; + + // Computes 'precision' leading digits of the given 'value' and returns them + // either in exponential or decimal format, depending on + // max_{leading|trailing}_padding_zeroes_in_precision_mode (given to the + // constructor). + // The last computed digit is rounded. + // + // Example with max_leading_padding_zeroes_in_precision_mode = 6. + // ToPrecision(0.0000012345, 2) -> "0.0000012" + // ToPrecision(0.00000012345, 2) -> "1.2e-7" + // Similarily the converter may add up to + // max_trailing_padding_zeroes_in_precision_mode in precision mode to avoid + // returning an exponential representation. A zero added by the + // EMIT_TRAILING_ZERO_AFTER_POINT flag is counted for this limit. + // Examples for max_trailing_padding_zeroes_in_precision_mode = 1: + // ToPrecision(230.0, 2) -> "230" + // ToPrecision(230.0, 2) -> "230." with EMIT_TRAILING_DECIMAL_POINT. + // ToPrecision(230.0, 2) -> "2.3e2" with EMIT_TRAILING_ZERO_AFTER_POINT. + // Examples for max_trailing_padding_zeroes_in_precision_mode = 3, and no + // EMIT_TRAILING_ZERO_AFTER_POINT: + // ToPrecision(123450.0, 6) -> "123450" + // ToPrecision(123450.0, 5) -> "123450" + // ToPrecision(123450.0, 4) -> "123500" + // ToPrecision(123450.0, 3) -> "123000" + // ToPrecision(123450.0, 2) -> "1.2e5" + // + // Returns true if the conversion succeeds. The conversion always succeeds + // except for the following cases: + // - the input value is special and no infinity_symbol or nan_symbol has + // been provided to the constructor, + // - precision < kMinPericisionDigits + // - precision > kMaxPrecisionDigits + // The last condition implies that the result will never contain more than + // kMaxPrecisionDigits + 7 characters (the sign, the decimal point, the + // exponent character, the exponent's sign, and at most 3 exponent digits). + bool ToPrecision(double value, + int precision, + StringBuilder* result_builder) const; + + enum DtoaMode { + // Produce the shortest correct representation. + // For example the output of 0.299999999999999988897 is (the less accurate + // but correct) 0.3. + SHORTEST, + // Same as SHORTEST, but for single-precision floats. + SHORTEST_SINGLE, + // Produce a fixed number of digits after the decimal point. + // For instance fixed(0.1, 4) becomes 0.1000 + // If the input number is big, the output will be big. + FIXED, + // Fixed number of digits (independent of the decimal point). + PRECISION + }; + + // The maximal number of digits that are needed to emit a double in base 10. + // A higher precision can be achieved by using more digits, but the shortest + // accurate representation of any double will never use more digits than + // kBase10MaximalLength. + // Note that DoubleToAscii null-terminates its input. So the given buffer + // should be at least kBase10MaximalLength + 1 characters long. + static const int kBase10MaximalLength = 17; + + // Converts the given double 'v' to ascii. 'v' must not be NaN, +Infinity, or + // -Infinity. In SHORTEST_SINGLE-mode this restriction also applies to 'v' + // after it has been casted to a single-precision float. That is, in this + // mode static_cast(v) must not be NaN, +Infinity or -Infinity. + // + // The result should be interpreted as buffer * 10^(point-length). + // + // The output depends on the given mode: + // - SHORTEST: produce the least amount of digits for which the internal + // identity requirement is still satisfied. If the digits are printed + // (together with the correct exponent) then reading this number will give + // 'v' again. The buffer will choose the representation that is closest to + // 'v'. If there are two at the same distance, than the one farther away + // from 0 is chosen (halfway cases - ending with 5 - are rounded up). + // In this mode the 'requested_digits' parameter is ignored. + // - SHORTEST_SINGLE: same as SHORTEST but with single-precision. + // - FIXED: produces digits necessary to print a given number with + // 'requested_digits' digits after the decimal point. The produced digits + // might be too short in which case the caller has to fill the remainder + // with '0's. + // Example: toFixed(0.001, 5) is allowed to return buffer="1", point=-2. + // Halfway cases are rounded towards +/-Infinity (away from 0). The call + // toFixed(0.15, 2) thus returns buffer="2", point=0. + // The returned buffer may contain digits that would be truncated from the + // shortest representation of the input. + // - PRECISION: produces 'requested_digits' where the first digit is not '0'. + // Even though the length of produced digits usually equals + // 'requested_digits', the function is allowed to return fewer digits, in + // which case the caller has to fill the missing digits with '0's. + // Halfway cases are again rounded away from 0. + // DoubleToAscii expects the given buffer to be big enough to hold all + // digits and a terminating null-character. In SHORTEST-mode it expects a + // buffer of at least kBase10MaximalLength + 1. In all other modes the + // requested_digits parameter and the padding-zeroes limit the size of the + // output. Don't forget the decimal point, the exponent character and the + // terminating null-character when computing the maximal output size. + // The given length is only used in debug mode to ensure the buffer is big + // enough. + static void DoubleToAscii(double v, + DtoaMode mode, + int requested_digits, + char* buffer, + int buffer_length, + bool* sign, + int* length, + int* point); + + private: + // Implementation for ToShortest and ToShortestSingle. + bool ToShortestIeeeNumber(double value, + StringBuilder* result_builder, + DtoaMode mode) const; + + // If the value is a special value (NaN or Infinity) constructs the + // corresponding string using the configured infinity/nan-symbol. + // If either of them is NULL or the value is not special then the + // function returns false. + bool HandleSpecialValues(double value, StringBuilder* result_builder) const; + // Constructs an exponential representation (i.e. 1.234e56). + // The given exponent assumes a decimal point after the first decimal digit. + void CreateExponentialRepresentation(const char* decimal_digits, + int length, + int exponent, + StringBuilder* result_builder) const; + // Creates a decimal representation (i.e 1234.5678). + void CreateDecimalRepresentation(const char* decimal_digits, + int length, + int decimal_point, + int digits_after_point, + StringBuilder* result_builder) const; + + const int flags_; + const char* const infinity_symbol_; + const char* const nan_symbol_; + const char exponent_character_; + const int decimal_in_shortest_low_; + const int decimal_in_shortest_high_; + const int max_leading_padding_zeroes_in_precision_mode_; + const int max_trailing_padding_zeroes_in_precision_mode_; + + DISALLOW_IMPLICIT_CONSTRUCTORS(DoubleToStringConverter); +}; + + +class StringToDoubleConverter { + public: + // Enumeration for allowing octals and ignoring junk when converting + // strings to numbers. + enum Flags { + NO_FLAGS = 0, + ALLOW_HEX = 1, + ALLOW_OCTALS = 2, + ALLOW_TRAILING_JUNK = 4, + ALLOW_LEADING_SPACES = 8, + ALLOW_TRAILING_SPACES = 16, + ALLOW_SPACES_AFTER_SIGN = 32 + }; + + // Flags should be a bit-or combination of the possible Flags-enum. + // - NO_FLAGS: no special flags. + // - ALLOW_HEX: recognizes the prefix "0x". Hex numbers may only be integers. + // Ex: StringToDouble("0x1234") -> 4660.0 + // In StringToDouble("0x1234.56") the characters ".56" are trailing + // junk. The result of the call is hence dependent on + // the ALLOW_TRAILING_JUNK flag and/or the junk value. + // With this flag "0x" is a junk-string. Even with ALLOW_TRAILING_JUNK, + // the string will not be parsed as "0" followed by junk. + // + // - ALLOW_OCTALS: recognizes the prefix "0" for octals: + // If a sequence of octal digits starts with '0', then the number is + // read as octal integer. Octal numbers may only be integers. + // Ex: StringToDouble("01234") -> 668.0 + // StringToDouble("012349") -> 12349.0 // Not a sequence of octal + // // digits. + // In StringToDouble("01234.56") the characters ".56" are trailing + // junk. The result of the call is hence dependent on + // the ALLOW_TRAILING_JUNK flag and/or the junk value. + // In StringToDouble("01234e56") the characters "e56" are trailing + // junk, too. + // - ALLOW_TRAILING_JUNK: ignore trailing characters that are not part of + // a double literal. + // - ALLOW_LEADING_SPACES: skip over leading spaces. + // - ALLOW_TRAILING_SPACES: ignore trailing spaces. + // - ALLOW_SPACES_AFTER_SIGN: ignore spaces after the sign. + // Ex: StringToDouble("- 123.2") -> -123.2. + // StringToDouble("+ 123.2") -> 123.2 + // + // empty_string_value is returned when an empty string is given as input. + // If ALLOW_LEADING_SPACES or ALLOW_TRAILING_SPACES are set, then a string + // containing only spaces is converted to the 'empty_string_value', too. + // + // junk_string_value is returned when + // a) ALLOW_TRAILING_JUNK is not set, and a junk character (a character not + // part of a double-literal) is found. + // b) ALLOW_TRAILING_JUNK is set, but the string does not start with a + // double literal. + // + // infinity_symbol and nan_symbol are strings that are used to detect + // inputs that represent infinity and NaN. They can be null, in which case + // they are ignored. + // The conversion routine first reads any possible signs. Then it compares the + // following character of the input-string with the first character of + // the infinity, and nan-symbol. If either matches, the function assumes, that + // a match has been found, and expects the following input characters to match + // the remaining characters of the special-value symbol. + // This means that the following restrictions apply to special-value symbols: + // - they must not start with signs ('+', or '-'), + // - they must not have the same first character. + // - they must not start with digits. + // + // Examples: + // flags = ALLOW_HEX | ALLOW_TRAILING_JUNK, + // empty_string_value = 0.0, + // junk_string_value = NaN, + // infinity_symbol = "infinity", + // nan_symbol = "nan": + // StringToDouble("0x1234") -> 4660.0. + // StringToDouble("0x1234K") -> 4660.0. + // StringToDouble("") -> 0.0 // empty_string_value. + // StringToDouble(" ") -> NaN // junk_string_value. + // StringToDouble(" 1") -> NaN // junk_string_value. + // StringToDouble("0x") -> NaN // junk_string_value. + // StringToDouble("-123.45") -> -123.45. + // StringToDouble("--123.45") -> NaN // junk_string_value. + // StringToDouble("123e45") -> 123e45. + // StringToDouble("123E45") -> 123e45. + // StringToDouble("123e+45") -> 123e45. + // StringToDouble("123E-45") -> 123e-45. + // StringToDouble("123e") -> 123.0 // trailing junk ignored. + // StringToDouble("123e-") -> 123.0 // trailing junk ignored. + // StringToDouble("+NaN") -> NaN // NaN string literal. + // StringToDouble("-infinity") -> -inf. // infinity literal. + // StringToDouble("Infinity") -> NaN // junk_string_value. + // + // flags = ALLOW_OCTAL | ALLOW_LEADING_SPACES, + // empty_string_value = 0.0, + // junk_string_value = NaN, + // infinity_symbol = NULL, + // nan_symbol = NULL: + // StringToDouble("0x1234") -> NaN // junk_string_value. + // StringToDouble("01234") -> 668.0. + // StringToDouble("") -> 0.0 // empty_string_value. + // StringToDouble(" ") -> 0.0 // empty_string_value. + // StringToDouble(" 1") -> 1.0 + // StringToDouble("0x") -> NaN // junk_string_value. + // StringToDouble("0123e45") -> NaN // junk_string_value. + // StringToDouble("01239E45") -> 1239e45. + // StringToDouble("-infinity") -> NaN // junk_string_value. + // StringToDouble("NaN") -> NaN // junk_string_value. + StringToDoubleConverter(int flags, + double empty_string_value, + double junk_string_value, + const char* infinity_symbol, + const char* nan_symbol) + : flags_(flags), + empty_string_value_(empty_string_value), + junk_string_value_(junk_string_value), + infinity_symbol_(infinity_symbol), + nan_symbol_(nan_symbol) { + } + + // Performs the conversion. + // The output parameter 'processed_characters_count' is set to the number + // of characters that have been processed to read the number. + // Spaces than are processed with ALLOW_{LEADING|TRAILING}_SPACES are included + // in the 'processed_characters_count'. Trailing junk is never included. + double StringToDouble(const char* buffer, + int length, + int* processed_characters_count) const { + return StringToIeee(buffer, length, processed_characters_count, true); + } + + // Same as StringToDouble but reads a float. + // Note that this is not equivalent to static_cast(StringToDouble(...)) + // due to potential double-rounding. + float StringToFloat(const char* buffer, + int length, + int* processed_characters_count) const { + return static_cast(StringToIeee(buffer, length, + processed_characters_count, false)); + } + + private: + const int flags_; + const double empty_string_value_; + const double junk_string_value_; + const char* const infinity_symbol_; + const char* const nan_symbol_; + + double StringToIeee(const char* buffer, + int length, + int* processed_characters_count, + bool read_as_double) const; + + DISALLOW_IMPLICIT_CONSTRUCTORS(StringToDoubleConverter); +}; + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_DOUBLE_CONVERSION_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/DoubleConversion/double-conversion/fast-dtoa.h b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/DoubleConversion/double-conversion/fast-dtoa.h new file mode 100644 index 0000000..5f1e8ee --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/DoubleConversion/double-conversion/fast-dtoa.h @@ -0,0 +1,88 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_FAST_DTOA_H_ +#define DOUBLE_CONVERSION_FAST_DTOA_H_ + +#include "utils.h" + +namespace double_conversion { + +enum FastDtoaMode { + // Computes the shortest representation of the given input. The returned + // result will be the most accurate number of this length. Longer + // representations might be more accurate. + FAST_DTOA_SHORTEST, + // Same as FAST_DTOA_SHORTEST but for single-precision floats. + FAST_DTOA_SHORTEST_SINGLE, + // Computes a representation where the precision (number of digits) is + // given as input. The precision is independent of the decimal point. + FAST_DTOA_PRECISION +}; + +// FastDtoa will produce at most kFastDtoaMaximalLength digits. This does not +// include the terminating '\0' character. +static const int kFastDtoaMaximalLength = 17; +// Same for single-precision numbers. +static const int kFastDtoaMaximalSingleLength = 9; + +// Provides a decimal representation of v. +// The result should be interpreted as buffer * 10^(point - length). +// +// Precondition: +// * v must be a strictly positive finite double. +// +// Returns true if it succeeds, otherwise the result can not be trusted. +// There will be *length digits inside the buffer followed by a null terminator. +// If the function returns true and mode equals +// - FAST_DTOA_SHORTEST, then +// the parameter requested_digits is ignored. +// The result satisfies +// v == (double) (buffer * 10^(point - length)). +// The digits in the buffer are the shortest representation possible. E.g. +// if 0.099999999999 and 0.1 represent the same double then "1" is returned +// with point = 0. +// The last digit will be closest to the actual v. That is, even if several +// digits might correctly yield 'v' when read again, the buffer will contain +// the one closest to v. +// - FAST_DTOA_PRECISION, then +// the buffer contains requested_digits digits. +// the difference v - (buffer * 10^(point-length)) is closest to zero for +// all possible representations of requested_digits digits. +// If there are two values that are equally close, then FastDtoa returns +// false. +// For both modes the buffer must be large enough to hold the result. +bool FastDtoa(double d, + FastDtoaMode mode, + int requested_digits, + Vector buffer, + int* length, + int* decimal_point); + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_FAST_DTOA_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/DoubleConversion/double-conversion/fixed-dtoa.h b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/DoubleConversion/double-conversion/fixed-dtoa.h new file mode 100644 index 0000000..3bdd08e --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/DoubleConversion/double-conversion/fixed-dtoa.h @@ -0,0 +1,56 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_FIXED_DTOA_H_ +#define DOUBLE_CONVERSION_FIXED_DTOA_H_ + +#include "utils.h" + +namespace double_conversion { + +// Produces digits necessary to print a given number with +// 'fractional_count' digits after the decimal point. +// The buffer must be big enough to hold the result plus one terminating null +// character. +// +// The produced digits might be too short in which case the caller has to fill +// the gaps with '0's. +// Example: FastFixedDtoa(0.001, 5, ...) is allowed to return buffer = "1", and +// decimal_point = -2. +// Halfway cases are rounded towards +/-Infinity (away from 0). The call +// FastFixedDtoa(0.15, 2, ...) thus returns buffer = "2", decimal_point = 0. +// The returned buffer may contain digits that would be truncated from the +// shortest representation of the input. +// +// This method only works for some parameters. If it can't handle the input it +// returns false. The output is null-terminated when the function succeeds. +bool FastFixedDtoa(double v, int fractional_count, + Vector buffer, int* length, int* decimal_point); + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_FIXED_DTOA_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/DoubleConversion/double-conversion/ieee.h b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/DoubleConversion/double-conversion/ieee.h new file mode 100644 index 0000000..661141d --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/DoubleConversion/double-conversion/ieee.h @@ -0,0 +1,402 @@ +// Copyright 2012 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_DOUBLE_H_ +#define DOUBLE_CONVERSION_DOUBLE_H_ + +#include "diy-fp.h" + +namespace double_conversion { + +// We assume that doubles and uint64_t have the same endianness. +static uint64_t double_to_uint64(double d) { return BitCast(d); } +static double uint64_to_double(uint64_t d64) { return BitCast(d64); } +static uint32_t float_to_uint32(float f) { return BitCast(f); } +static float uint32_to_float(uint32_t d32) { return BitCast(d32); } + +// Helper functions for doubles. +class Double { + public: + static const uint64_t kSignMask = UINT64_2PART_C(0x80000000, 00000000); + static const uint64_t kExponentMask = UINT64_2PART_C(0x7FF00000, 00000000); + static const uint64_t kSignificandMask = UINT64_2PART_C(0x000FFFFF, FFFFFFFF); + static const uint64_t kHiddenBit = UINT64_2PART_C(0x00100000, 00000000); + static const int kPhysicalSignificandSize = 52; // Excludes the hidden bit. + static const int kSignificandSize = 53; + + Double() : d64_(0) {} + explicit Double(double d) : d64_(double_to_uint64(d)) {} + explicit Double(uint64_t d64) : d64_(d64) {} + explicit Double(DiyFp diy_fp) + : d64_(DiyFpToUint64(diy_fp)) {} + + // The value encoded by this Double must be greater or equal to +0.0. + // It must not be special (infinity, or NaN). + DiyFp AsDiyFp() const { + ASSERT(Sign() > 0); + ASSERT(!IsSpecial()); + return DiyFp(Significand(), Exponent()); + } + + // The value encoded by this Double must be strictly greater than 0. + DiyFp AsNormalizedDiyFp() const { + ASSERT(value() > 0.0); + uint64_t f = Significand(); + int e = Exponent(); + + // The current double could be a denormal. + while ((f & kHiddenBit) == 0) { + f <<= 1; + e--; + } + // Do the final shifts in one go. + f <<= DiyFp::kSignificandSize - kSignificandSize; + e -= DiyFp::kSignificandSize - kSignificandSize; + return DiyFp(f, e); + } + + // Returns the double's bit as uint64. + uint64_t AsUint64() const { + return d64_; + } + + // Returns the next greater double. Returns +infinity on input +infinity. + double NextDouble() const { + if (d64_ == kInfinity) return Double(kInfinity).value(); + if (Sign() < 0 && Significand() == 0) { + // -0.0 + return 0.0; + } + if (Sign() < 0) { + return Double(d64_ - 1).value(); + } else { + return Double(d64_ + 1).value(); + } + } + + double PreviousDouble() const { + if (d64_ == (kInfinity | kSignMask)) return -Double::Infinity(); + if (Sign() < 0) { + return Double(d64_ + 1).value(); + } else { + if (Significand() == 0) return -0.0; + return Double(d64_ - 1).value(); + } + } + + int Exponent() const { + if (IsDenormal()) return kDenormalExponent; + + uint64_t d64 = AsUint64(); + int biased_e = + static_cast((d64 & kExponentMask) >> kPhysicalSignificandSize); + return biased_e - kExponentBias; + } + + uint64_t Significand() const { + uint64_t d64 = AsUint64(); + uint64_t significand = d64 & kSignificandMask; + if (!IsDenormal()) { + return significand + kHiddenBit; + } else { + return significand; + } + } + + // Returns true if the double is a denormal. + bool IsDenormal() const { + uint64_t d64 = AsUint64(); + return (d64 & kExponentMask) == 0; + } + + // We consider denormals not to be special. + // Hence only Infinity and NaN are special. + bool IsSpecial() const { + uint64_t d64 = AsUint64(); + return (d64 & kExponentMask) == kExponentMask; + } + + bool IsNan() const { + uint64_t d64 = AsUint64(); + return ((d64 & kExponentMask) == kExponentMask) && + ((d64 & kSignificandMask) != 0); + } + + bool IsInfinite() const { + uint64_t d64 = AsUint64(); + return ((d64 & kExponentMask) == kExponentMask) && + ((d64 & kSignificandMask) == 0); + } + + int Sign() const { + uint64_t d64 = AsUint64(); + return (d64 & kSignMask) == 0? 1: -1; + } + + // Precondition: the value encoded by this Double must be greater or equal + // than +0.0. + DiyFp UpperBoundary() const { + ASSERT(Sign() > 0); + return DiyFp(Significand() * 2 + 1, Exponent() - 1); + } + + // Computes the two boundaries of this. + // The bigger boundary (m_plus) is normalized. The lower boundary has the same + // exponent as m_plus. + // Precondition: the value encoded by this Double must be greater than 0. + void NormalizedBoundaries(DiyFp* out_m_minus, DiyFp* out_m_plus) const { + ASSERT(value() > 0.0); + DiyFp v = this->AsDiyFp(); + DiyFp m_plus = DiyFp::Normalize(DiyFp((v.f() << 1) + 1, v.e() - 1)); + DiyFp m_minus; + if (LowerBoundaryIsCloser()) { + m_minus = DiyFp((v.f() << 2) - 1, v.e() - 2); + } else { + m_minus = DiyFp((v.f() << 1) - 1, v.e() - 1); + } + m_minus.set_f(m_minus.f() << (m_minus.e() - m_plus.e())); + m_minus.set_e(m_plus.e()); + *out_m_plus = m_plus; + *out_m_minus = m_minus; + } + + bool LowerBoundaryIsCloser() const { + // The boundary is closer if the significand is of the form f == 2^p-1 then + // the lower boundary is closer. + // Think of v = 1000e10 and v- = 9999e9. + // Then the boundary (== (v - v-)/2) is not just at a distance of 1e9 but + // at a distance of 1e8. + // The only exception is for the smallest normal: the largest denormal is + // at the same distance as its successor. + // Note: denormals have the same exponent as the smallest normals. + bool physical_significand_is_zero = ((AsUint64() & kSignificandMask) == 0); + return physical_significand_is_zero && (Exponent() != kDenormalExponent); + } + + double value() const { return uint64_to_double(d64_); } + + // Returns the significand size for a given order of magnitude. + // If v = f*2^e with 2^p-1 <= f <= 2^p then p+e is v's order of magnitude. + // This function returns the number of significant binary digits v will have + // once it's encoded into a double. In almost all cases this is equal to + // kSignificandSize. The only exceptions are denormals. They start with + // leading zeroes and their effective significand-size is hence smaller. + static int SignificandSizeForOrderOfMagnitude(int order) { + if (order >= (kDenormalExponent + kSignificandSize)) { + return kSignificandSize; + } + if (order <= kDenormalExponent) return 0; + return order - kDenormalExponent; + } + + static double Infinity() { + return Double(kInfinity).value(); + } + + static double NaN() { + return Double(kNaN).value(); + } + + private: + static const int kExponentBias = 0x3FF + kPhysicalSignificandSize; + static const int kDenormalExponent = -kExponentBias + 1; + static const int kMaxExponent = 0x7FF - kExponentBias; + static const uint64_t kInfinity = UINT64_2PART_C(0x7FF00000, 00000000); + static const uint64_t kNaN = UINT64_2PART_C(0x7FF80000, 00000000); + + const uint64_t d64_; + + static uint64_t DiyFpToUint64(DiyFp diy_fp) { + uint64_t significand = diy_fp.f(); + int exponent = diy_fp.e(); + while (significand > kHiddenBit + kSignificandMask) { + significand >>= 1; + exponent++; + } + if (exponent >= kMaxExponent) { + return kInfinity; + } + if (exponent < kDenormalExponent) { + return 0; + } + while (exponent > kDenormalExponent && (significand & kHiddenBit) == 0) { + significand <<= 1; + exponent--; + } + uint64_t biased_exponent; + if (exponent == kDenormalExponent && (significand & kHiddenBit) == 0) { + biased_exponent = 0; + } else { + biased_exponent = static_cast(exponent + kExponentBias); + } + return (significand & kSignificandMask) | + (biased_exponent << kPhysicalSignificandSize); + } + + DISALLOW_COPY_AND_ASSIGN(Double); +}; + +class Single { + public: + static const uint32_t kSignMask = 0x80000000; + static const uint32_t kExponentMask = 0x7F800000; + static const uint32_t kSignificandMask = 0x007FFFFF; + static const uint32_t kHiddenBit = 0x00800000; + static const int kPhysicalSignificandSize = 23; // Excludes the hidden bit. + static const int kSignificandSize = 24; + + Single() : d32_(0) {} + explicit Single(float f) : d32_(float_to_uint32(f)) {} + explicit Single(uint32_t d32) : d32_(d32) {} + + // The value encoded by this Single must be greater or equal to +0.0. + // It must not be special (infinity, or NaN). + DiyFp AsDiyFp() const { + ASSERT(Sign() > 0); + ASSERT(!IsSpecial()); + return DiyFp(Significand(), Exponent()); + } + + // Returns the single's bit as uint64. + uint32_t AsUint32() const { + return d32_; + } + + int Exponent() const { + if (IsDenormal()) return kDenormalExponent; + + uint32_t d32 = AsUint32(); + int biased_e = + static_cast((d32 & kExponentMask) >> kPhysicalSignificandSize); + return biased_e - kExponentBias; + } + + uint32_t Significand() const { + uint32_t d32 = AsUint32(); + uint32_t significand = d32 & kSignificandMask; + if (!IsDenormal()) { + return significand + kHiddenBit; + } else { + return significand; + } + } + + // Returns true if the single is a denormal. + bool IsDenormal() const { + uint32_t d32 = AsUint32(); + return (d32 & kExponentMask) == 0; + } + + // We consider denormals not to be special. + // Hence only Infinity and NaN are special. + bool IsSpecial() const { + uint32_t d32 = AsUint32(); + return (d32 & kExponentMask) == kExponentMask; + } + + bool IsNan() const { + uint32_t d32 = AsUint32(); + return ((d32 & kExponentMask) == kExponentMask) && + ((d32 & kSignificandMask) != 0); + } + + bool IsInfinite() const { + uint32_t d32 = AsUint32(); + return ((d32 & kExponentMask) == kExponentMask) && + ((d32 & kSignificandMask) == 0); + } + + int Sign() const { + uint32_t d32 = AsUint32(); + return (d32 & kSignMask) == 0? 1: -1; + } + + // Computes the two boundaries of this. + // The bigger boundary (m_plus) is normalized. The lower boundary has the same + // exponent as m_plus. + // Precondition: the value encoded by this Single must be greater than 0. + void NormalizedBoundaries(DiyFp* out_m_minus, DiyFp* out_m_plus) const { + ASSERT(value() > 0.0); + DiyFp v = this->AsDiyFp(); + DiyFp m_plus = DiyFp::Normalize(DiyFp((v.f() << 1) + 1, v.e() - 1)); + DiyFp m_minus; + if (LowerBoundaryIsCloser()) { + m_minus = DiyFp((v.f() << 2) - 1, v.e() - 2); + } else { + m_minus = DiyFp((v.f() << 1) - 1, v.e() - 1); + } + m_minus.set_f(m_minus.f() << (m_minus.e() - m_plus.e())); + m_minus.set_e(m_plus.e()); + *out_m_plus = m_plus; + *out_m_minus = m_minus; + } + + // Precondition: the value encoded by this Single must be greater or equal + // than +0.0. + DiyFp UpperBoundary() const { + ASSERT(Sign() > 0); + return DiyFp(Significand() * 2 + 1, Exponent() - 1); + } + + bool LowerBoundaryIsCloser() const { + // The boundary is closer if the significand is of the form f == 2^p-1 then + // the lower boundary is closer. + // Think of v = 1000e10 and v- = 9999e9. + // Then the boundary (== (v - v-)/2) is not just at a distance of 1e9 but + // at a distance of 1e8. + // The only exception is for the smallest normal: the largest denormal is + // at the same distance as its successor. + // Note: denormals have the same exponent as the smallest normals. + bool physical_significand_is_zero = ((AsUint32() & kSignificandMask) == 0); + return physical_significand_is_zero && (Exponent() != kDenormalExponent); + } + + float value() const { return uint32_to_float(d32_); } + + static float Infinity() { + return Single(kInfinity).value(); + } + + static float NaN() { + return Single(kNaN).value(); + } + + private: + static const int kExponentBias = 0x7F + kPhysicalSignificandSize; + static const int kDenormalExponent = -kExponentBias + 1; + static const int kMaxExponent = 0xFF - kExponentBias; + static const uint32_t kInfinity = 0x7F800000; + static const uint32_t kNaN = 0x7FC00000; + + const uint32_t d32_; + + DISALLOW_COPY_AND_ASSIGN(Single); +}; + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_DOUBLE_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/DoubleConversion/double-conversion/strtod.h b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/DoubleConversion/double-conversion/strtod.h new file mode 100644 index 0000000..ed0293b --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/DoubleConversion/double-conversion/strtod.h @@ -0,0 +1,45 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_STRTOD_H_ +#define DOUBLE_CONVERSION_STRTOD_H_ + +#include "utils.h" + +namespace double_conversion { + +// The buffer must only contain digits in the range [0-9]. It must not +// contain a dot or a sign. It must not start with '0', and must not be empty. +double Strtod(Vector buffer, int exponent); + +// The buffer must only contain digits in the range [0-9]. It must not +// contain a dot or a sign. It must not start with '0', and must not be empty. +float Strtof(Vector buffer, int exponent); + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_STRTOD_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/DoubleConversion/double-conversion/utils.h b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/DoubleConversion/double-conversion/utils.h new file mode 100644 index 0000000..a7c9b42 --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/DoubleConversion/double-conversion/utils.h @@ -0,0 +1,324 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_UTILS_H_ +#define DOUBLE_CONVERSION_UTILS_H_ + +#include +#include + +#include +#ifndef ASSERT +#define ASSERT(condition) \ + assert(condition); +#endif +#ifndef UNIMPLEMENTED +#define UNIMPLEMENTED() (abort()) +#endif +#ifndef UNREACHABLE +#define UNREACHABLE() (abort()) +#endif + +// Double operations detection based on target architecture. +// Linux uses a 80bit wide floating point stack on x86. This induces double +// rounding, which in turn leads to wrong results. +// An easy way to test if the floating-point operations are correct is to +// evaluate: 89255.0/1e22. If the floating-point stack is 64 bits wide then +// the result is equal to 89255e-22. +// The best way to test this, is to create a division-function and to compare +// the output of the division with the expected result. (Inlining must be +// disabled.) +// On Linux,x86 89255e-22 != Div_double(89255.0/1e22) +#if defined(_M_X64) || defined(__x86_64__) || \ + defined(__ARMEL__) || defined(__avr32__) || \ + defined(__hppa__) || defined(__ia64__) || \ + defined(__mips__) || \ + defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) || \ + defined(__sparc__) || defined(__sparc) || defined(__s390__) || \ + defined(__SH4__) || defined(__alpha__) || \ + defined(_MIPS_ARCH_MIPS32R2) || \ + defined(__AARCH64EL__) +#define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 +#elif defined(__mc68000__) +#undef DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS +#elif defined(_M_IX86) || defined(__i386__) || defined(__i386) +#if defined(_WIN32) +// Windows uses a 64bit wide floating point stack. +#define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 +#else +#undef DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS +#endif // _WIN32 +#else +#error Target architecture was not detected as supported by Double-Conversion. +#endif + +#if defined(__GNUC__) +#define DOUBLE_CONVERSION_UNUSED __attribute__((unused)) +#else +#define DOUBLE_CONVERSION_UNUSED +#endif + +#if defined(_WIN32) && !defined(__MINGW32__) + +typedef signed char int8_t; +typedef unsigned char uint8_t; +typedef short int16_t; // NOLINT +typedef unsigned short uint16_t; // NOLINT +typedef int int32_t; +typedef unsigned int uint32_t; +typedef __int64 int64_t; +typedef unsigned __int64 uint64_t; +// intptr_t and friends are defined in crtdefs.h through stdio.h. + +#else + +#include + +#endif + +// The following macro works on both 32 and 64-bit platforms. +// Usage: instead of writing 0x1234567890123456 +// write UINT64_2PART_C(0x12345678,90123456); +#define UINT64_2PART_C(a, b) (((static_cast(a) << 32) + 0x##b##u)) + + +// The expression ARRAY_SIZE(a) is a compile-time constant of type +// size_t which represents the number of elements of the given +// array. You should only use ARRAY_SIZE on statically allocated +// arrays. +#ifndef ARRAY_SIZE +#define ARRAY_SIZE(a) \ + ((sizeof(a) / sizeof(*(a))) / \ + static_cast(!(sizeof(a) % sizeof(*(a))))) +#endif + +// A macro to disallow the evil copy constructor and operator= functions +// This should be used in the private: declarations for a class +#ifndef DISALLOW_COPY_AND_ASSIGN +#define DISALLOW_COPY_AND_ASSIGN(TypeName) \ + TypeName(const TypeName&); \ + void operator=(const TypeName&) +#endif + +// A macro to disallow all the implicit constructors, namely the +// default constructor, copy constructor and operator= functions. +// +// This should be used in the private: declarations for a class +// that wants to prevent anyone from instantiating it. This is +// especially useful for classes containing only static methods. +#ifndef DISALLOW_IMPLICIT_CONSTRUCTORS +#define DISALLOW_IMPLICIT_CONSTRUCTORS(TypeName) \ + TypeName(); \ + DISALLOW_COPY_AND_ASSIGN(TypeName) +#endif + +namespace double_conversion { + +static const int kCharSize = sizeof(char); + +// Returns the maximum of the two parameters. +template +static T Max(T a, T b) { + return a < b ? b : a; +} + + +// Returns the minimum of the two parameters. +template +static T Min(T a, T b) { + return a < b ? a : b; +} + + +inline int StrLength(const char* string) { + size_t length = strlen(string); + ASSERT(length == static_cast(static_cast(length))); + return static_cast(length); +} + +// This is a simplified version of V8's Vector class. +template +class Vector { + public: + Vector() : start_(NULL), length_(0) {} + Vector(T* data, int length) : start_(data), length_(length) { + ASSERT(length == 0 || (length > 0 && data != NULL)); + } + + // Returns a vector using the same backing storage as this one, + // spanning from and including 'from', to but not including 'to'. + Vector SubVector(int from, int to) { + ASSERT(to <= length_); + ASSERT(from < to); + ASSERT(0 <= from); + return Vector(start() + from, to - from); + } + + // Returns the length of the vector. + int length() const { return length_; } + + // Returns whether or not the vector is empty. + bool is_empty() const { return length_ == 0; } + + // Returns the pointer to the start of the data in the vector. + T* start() const { return start_; } + + // Access individual vector elements - checks bounds in debug mode. + T& operator[](int index) const { + ASSERT(0 <= index && index < length_); + return start_[index]; + } + + T& first() { return start_[0]; } + + T& last() { return start_[length_ - 1]; } + + private: + T* start_; + int length_; +}; + + +// Helper class for building result strings in a character buffer. The +// purpose of the class is to use safe operations that checks the +// buffer bounds on all operations in debug mode. +class StringBuilder { + public: + StringBuilder(char* buffer, int size) + : buffer_(buffer, size), position_(0) { } + + ~StringBuilder() { if (!is_finalized()) Finalize(); } + + int size() const { return buffer_.length(); } + + // Get the current position in the builder. + int position() const { + ASSERT(!is_finalized()); + return position_; + } + + // Reset the position. + void Reset() { position_ = 0; } + + // Add a single character to the builder. It is not allowed to add + // 0-characters; use the Finalize() method to terminate the string + // instead. + void AddCharacter(char c) { + ASSERT(c != '\0'); + ASSERT(!is_finalized() && position_ < buffer_.length()); + buffer_[position_++] = c; + } + + // Add an entire string to the builder. Uses strlen() internally to + // compute the length of the input string. + void AddString(const char* s) { + AddSubstring(s, StrLength(s)); + } + + // Add the first 'n' characters of the given string 's' to the + // builder. The input string must have enough characters. + void AddSubstring(const char* s, int n) { + ASSERT(!is_finalized() && position_ + n < buffer_.length()); + ASSERT(static_cast(n) <= strlen(s)); + memmove(&buffer_[position_], s, n * kCharSize); + position_ += n; + } + + + // Add character padding to the builder. If count is non-positive, + // nothing is added to the builder. + void AddPadding(char c, int count) { + for (int i = 0; i < count; i++) { + AddCharacter(c); + } + } + + // Finalize the string by 0-terminating it and returning the buffer. + char* Finalize() { + ASSERT(!is_finalized() && position_ < buffer_.length()); + buffer_[position_] = '\0'; + // Make sure nobody managed to add a 0-character to the + // buffer while building the string. + ASSERT(strlen(buffer_.start()) == static_cast(position_)); + position_ = -1; + ASSERT(is_finalized()); + return buffer_.start(); + } + + private: + Vector buffer_; + int position_; + + bool is_finalized() const { return position_ < 0; } + + DISALLOW_IMPLICIT_CONSTRUCTORS(StringBuilder); +}; + +// The type-based aliasing rule allows the compiler to assume that pointers of +// different types (for some definition of different) never alias each other. +// Thus the following code does not work: +// +// float f = foo(); +// int fbits = *(int*)(&f); +// +// The compiler 'knows' that the int pointer can't refer to f since the types +// don't match, so the compiler may cache f in a register, leaving random data +// in fbits. Using C++ style casts makes no difference, however a pointer to +// char data is assumed to alias any other pointer. This is the 'memcpy +// exception'. +// +// Bit_cast uses the memcpy exception to move the bits from a variable of one +// type of a variable of another type. Of course the end result is likely to +// be implementation dependent. Most compilers (gcc-4.2 and MSVC 2005) +// will completely optimize BitCast away. +// +// There is an additional use for BitCast. +// Recent gccs will warn when they see casts that may result in breakage due to +// the type-based aliasing rule. If you have checked that there is no breakage +// you can use BitCast to cast one pointer type to another. This confuses gcc +// enough that it can no longer see that you have cast one pointer type to +// another thus avoiding the warning. +template +inline Dest BitCast(const Source& source) { + // Compile time assertion: sizeof(Dest) == sizeof(Source) + // A compile error here means your Dest and Source have different sizes. + DOUBLE_CONVERSION_UNUSED + typedef char VerifySizesAreEqual[sizeof(Dest) == sizeof(Source) ? 1 : -1]; + + Dest dest; + memmove(&dest, &source, sizeof(dest)); + return dest; +} + +template +inline Dest BitCast(Source* source) { + return BitCast(reinterpret_cast(source)); +} + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_UTILS_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/double-conversion/bignum-dtoa.h b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/double-conversion/bignum-dtoa.h new file mode 100644 index 0000000..34b9619 --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/double-conversion/bignum-dtoa.h @@ -0,0 +1,84 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_BIGNUM_DTOA_H_ +#define DOUBLE_CONVERSION_BIGNUM_DTOA_H_ + +#include "utils.h" + +namespace double_conversion { + +enum BignumDtoaMode { + // Return the shortest correct representation. + // For example the output of 0.299999999999999988897 is (the less accurate but + // correct) 0.3. + BIGNUM_DTOA_SHORTEST, + // Same as BIGNUM_DTOA_SHORTEST but for single-precision floats. + BIGNUM_DTOA_SHORTEST_SINGLE, + // Return a fixed number of digits after the decimal point. + // For instance fixed(0.1, 4) becomes 0.1000 + // If the input number is big, the output will be big. + BIGNUM_DTOA_FIXED, + // Return a fixed number of digits, no matter what the exponent is. + BIGNUM_DTOA_PRECISION +}; + +// Converts the given double 'v' to ascii. +// The result should be interpreted as buffer * 10^(point-length). +// The buffer will be null-terminated. +// +// The input v must be > 0 and different from NaN, and Infinity. +// +// The output depends on the given mode: +// - SHORTEST: produce the least amount of digits for which the internal +// identity requirement is still satisfied. If the digits are printed +// (together with the correct exponent) then reading this number will give +// 'v' again. The buffer will choose the representation that is closest to +// 'v'. If there are two at the same distance, than the number is round up. +// In this mode the 'requested_digits' parameter is ignored. +// - FIXED: produces digits necessary to print a given number with +// 'requested_digits' digits after the decimal point. The produced digits +// might be too short in which case the caller has to fill the gaps with '0's. +// Example: toFixed(0.001, 5) is allowed to return buffer="1", point=-2. +// Halfway cases are rounded up. The call toFixed(0.15, 2) thus returns +// buffer="2", point=0. +// Note: the length of the returned buffer has no meaning wrt the significance +// of its digits. That is, just because it contains '0's does not mean that +// any other digit would not satisfy the internal identity requirement. +// - PRECISION: produces 'requested_digits' where the first digit is not '0'. +// Even though the length of produced digits usually equals +// 'requested_digits', the function is allowed to return fewer digits, in +// which case the caller has to fill the missing digits with '0's. +// Halfway cases are again rounded up. +// 'BignumDtoa' expects the given buffer to be big enough to hold all digits +// and a terminating null-character. +void BignumDtoa(double v, BignumDtoaMode mode, int requested_digits, + Vector buffer, int* length, int* point); + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_BIGNUM_DTOA_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/double-conversion/bignum.h b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/double-conversion/bignum.h new file mode 100644 index 0000000..5ec3544 --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/double-conversion/bignum.h @@ -0,0 +1,145 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_BIGNUM_H_ +#define DOUBLE_CONVERSION_BIGNUM_H_ + +#include "utils.h" + +namespace double_conversion { + +class Bignum { + public: + // 3584 = 128 * 28. We can represent 2^3584 > 10^1000 accurately. + // This bignum can encode much bigger numbers, since it contains an + // exponent. + static const int kMaxSignificantBits = 3584; + + Bignum(); + void AssignUInt16(uint16_t value); + void AssignUInt64(uint64_t value); + void AssignBignum(const Bignum& other); + + void AssignDecimalString(Vector value); + void AssignHexString(Vector value); + + void AssignPowerUInt16(uint16_t base, int exponent); + + void AddUInt16(uint16_t operand); + void AddUInt64(uint64_t operand); + void AddBignum(const Bignum& other); + // Precondition: this >= other. + void SubtractBignum(const Bignum& other); + + void Square(); + void ShiftLeft(int shift_amount); + void MultiplyByUInt32(uint32_t factor); + void MultiplyByUInt64(uint64_t factor); + void MultiplyByPowerOfTen(int exponent); + void Times10() { return MultiplyByUInt32(10); } + // Pseudocode: + // int result = this / other; + // this = this % other; + // In the worst case this function is in O(this/other). + uint16_t DivideModuloIntBignum(const Bignum& other); + + bool ToHexString(char* buffer, int buffer_size) const; + + // Returns + // -1 if a < b, + // 0 if a == b, and + // +1 if a > b. + static int Compare(const Bignum& a, const Bignum& b); + static bool Equal(const Bignum& a, const Bignum& b) { + return Compare(a, b) == 0; + } + static bool LessEqual(const Bignum& a, const Bignum& b) { + return Compare(a, b) <= 0; + } + static bool Less(const Bignum& a, const Bignum& b) { + return Compare(a, b) < 0; + } + // Returns Compare(a + b, c); + static int PlusCompare(const Bignum& a, const Bignum& b, const Bignum& c); + // Returns a + b == c + static bool PlusEqual(const Bignum& a, const Bignum& b, const Bignum& c) { + return PlusCompare(a, b, c) == 0; + } + // Returns a + b <= c + static bool PlusLessEqual(const Bignum& a, const Bignum& b, const Bignum& c) { + return PlusCompare(a, b, c) <= 0; + } + // Returns a + b < c + static bool PlusLess(const Bignum& a, const Bignum& b, const Bignum& c) { + return PlusCompare(a, b, c) < 0; + } + private: + typedef uint32_t Chunk; + typedef uint64_t DoubleChunk; + + static const int kChunkSize = sizeof(Chunk) * 8; + static const int kDoubleChunkSize = sizeof(DoubleChunk) * 8; + // With bigit size of 28 we loose some bits, but a double still fits easily + // into two chunks, and more importantly we can use the Comba multiplication. + static const int kBigitSize = 28; + static const Chunk kBigitMask = (1 << kBigitSize) - 1; + // Every instance allocates kBigitLength chunks on the stack. Bignums cannot + // grow. There are no checks if the stack-allocated space is sufficient. + static const int kBigitCapacity = kMaxSignificantBits / kBigitSize; + + void EnsureCapacity(int size) { + if (size > kBigitCapacity) { + UNREACHABLE(); + } + } + void Align(const Bignum& other); + void Clamp(); + bool IsClamped() const; + void Zero(); + // Requires this to have enough capacity (no tests done). + // Updates used_digits_ if necessary. + // shift_amount must be < kBigitSize. + void BigitsShiftLeft(int shift_amount); + // BigitLength includes the "hidden" digits encoded in the exponent. + int BigitLength() const { return used_digits_ + exponent_; } + Chunk BigitAt(int index) const; + void SubtractTimes(const Bignum& other, int factor); + + Chunk bigits_buffer_[kBigitCapacity]; + // A vector backed by bigits_buffer_. This way accesses to the array are + // checked for out-of-bounds errors. + Vector bigits_; + int used_digits_; + // The Bignum's value equals value(bigits_) * 2^(exponent_ * kBigitSize). + int exponent_; + + DISALLOW_COPY_AND_ASSIGN(Bignum); +}; + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_BIGNUM_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/double-conversion/cached-powers.h b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/double-conversion/cached-powers.h new file mode 100644 index 0000000..61a5061 --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/double-conversion/cached-powers.h @@ -0,0 +1,64 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_CACHED_POWERS_H_ +#define DOUBLE_CONVERSION_CACHED_POWERS_H_ + +#include "diy-fp.h" + +namespace double_conversion { + +class PowersOfTenCache { + public: + + // Not all powers of ten are cached. The decimal exponent of two neighboring + // cached numbers will differ by kDecimalExponentDistance. + static const int kDecimalExponentDistance; + + static const int kMinDecimalExponent; + static const int kMaxDecimalExponent; + + // Returns a cached power-of-ten with a binary exponent in the range + // [min_exponent; max_exponent] (boundaries included). + static void GetCachedPowerForBinaryExponentRange(int min_exponent, + int max_exponent, + DiyFp* power, + int* decimal_exponent); + + // Returns a cached power of ten x ~= 10^k such that + // k <= decimal_exponent < k + kCachedPowersDecimalDistance. + // The given decimal_exponent must satisfy + // kMinDecimalExponent <= requested_exponent, and + // requested_exponent < kMaxDecimalExponent + kDecimalExponentDistance. + static void GetCachedPowerForDecimalExponent(int requested_exponent, + DiyFp* power, + int* found_exponent); +}; + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_CACHED_POWERS_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/double-conversion/diy-fp.h b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/double-conversion/diy-fp.h new file mode 100644 index 0000000..9dcf8fb --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/double-conversion/diy-fp.h @@ -0,0 +1,118 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_DIY_FP_H_ +#define DOUBLE_CONVERSION_DIY_FP_H_ + +#include "utils.h" + +namespace double_conversion { + +// This "Do It Yourself Floating Point" class implements a floating-point number +// with a uint64 significand and an int exponent. Normalized DiyFp numbers will +// have the most significant bit of the significand set. +// Multiplication and Subtraction do not normalize their results. +// DiyFp are not designed to contain special doubles (NaN and Infinity). +class DiyFp { + public: + static const int kSignificandSize = 64; + + DiyFp() : f_(0), e_(0) {} + DiyFp(uint64_t f, int e) : f_(f), e_(e) {} + + // this = this - other. + // The exponents of both numbers must be the same and the significand of this + // must be bigger than the significand of other. + // The result will not be normalized. + void Subtract(const DiyFp& other) { + ASSERT(e_ == other.e_); + ASSERT(f_ >= other.f_); + f_ -= other.f_; + } + + // Returns a - b. + // The exponents of both numbers must be the same and this must be bigger + // than other. The result will not be normalized. + static DiyFp Minus(const DiyFp& a, const DiyFp& b) { + DiyFp result = a; + result.Subtract(b); + return result; + } + + + // this = this * other. + void Multiply(const DiyFp& other); + + // returns a * b; + static DiyFp Times(const DiyFp& a, const DiyFp& b) { + DiyFp result = a; + result.Multiply(b); + return result; + } + + void Normalize() { + ASSERT(f_ != 0); + uint64_t f = f_; + int e = e_; + + // This method is mainly called for normalizing boundaries. In general + // boundaries need to be shifted by 10 bits. We thus optimize for this case. + const uint64_t k10MSBits = UINT64_2PART_C(0xFFC00000, 00000000); + while ((f & k10MSBits) == 0) { + f <<= 10; + e -= 10; + } + while ((f & kUint64MSB) == 0) { + f <<= 1; + e--; + } + f_ = f; + e_ = e; + } + + static DiyFp Normalize(const DiyFp& a) { + DiyFp result = a; + result.Normalize(); + return result; + } + + uint64_t f() const { return f_; } + int e() const { return e_; } + + void set_f(uint64_t new_value) { f_ = new_value; } + void set_e(int new_value) { e_ = new_value; } + + private: + static const uint64_t kUint64MSB = UINT64_2PART_C(0x80000000, 00000000); + + uint64_t f_; + int e_; +}; + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_DIY_FP_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/double-conversion/double-conversion.h b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/double-conversion/double-conversion.h new file mode 100644 index 0000000..1c3387d --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/double-conversion/double-conversion.h @@ -0,0 +1,536 @@ +// Copyright 2012 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_DOUBLE_CONVERSION_H_ +#define DOUBLE_CONVERSION_DOUBLE_CONVERSION_H_ + +#include "utils.h" + +namespace double_conversion { + +class DoubleToStringConverter { + public: + // When calling ToFixed with a double > 10^kMaxFixedDigitsBeforePoint + // or a requested_digits parameter > kMaxFixedDigitsAfterPoint then the + // function returns false. + static const int kMaxFixedDigitsBeforePoint = 60; + static const int kMaxFixedDigitsAfterPoint = 60; + + // When calling ToExponential with a requested_digits + // parameter > kMaxExponentialDigits then the function returns false. + static const int kMaxExponentialDigits = 120; + + // When calling ToPrecision with a requested_digits + // parameter < kMinPrecisionDigits or requested_digits > kMaxPrecisionDigits + // then the function returns false. + static const int kMinPrecisionDigits = 1; + static const int kMaxPrecisionDigits = 120; + + enum Flags { + NO_FLAGS = 0, + EMIT_POSITIVE_EXPONENT_SIGN = 1, + EMIT_TRAILING_DECIMAL_POINT = 2, + EMIT_TRAILING_ZERO_AFTER_POINT = 4, + UNIQUE_ZERO = 8 + }; + + // Flags should be a bit-or combination of the possible Flags-enum. + // - NO_FLAGS: no special flags. + // - EMIT_POSITIVE_EXPONENT_SIGN: when the number is converted into exponent + // form, emits a '+' for positive exponents. Example: 1.2e+2. + // - EMIT_TRAILING_DECIMAL_POINT: when the input number is an integer and is + // converted into decimal format then a trailing decimal point is appended. + // Example: 2345.0 is converted to "2345.". + // - EMIT_TRAILING_ZERO_AFTER_POINT: in addition to a trailing decimal point + // emits a trailing '0'-character. This flag requires the + // EXMIT_TRAILING_DECIMAL_POINT flag. + // Example: 2345.0 is converted to "2345.0". + // - UNIQUE_ZERO: "-0.0" is converted to "0.0". + // + // Infinity symbol and nan_symbol provide the string representation for these + // special values. If the string is NULL and the special value is encountered + // then the conversion functions return false. + // + // The exponent_character is used in exponential representations. It is + // usually 'e' or 'E'. + // + // When converting to the shortest representation the converter will + // represent input numbers in decimal format if they are in the interval + // [10^decimal_in_shortest_low; 10^decimal_in_shortest_high[ + // (lower boundary included, greater boundary excluded). + // Example: with decimal_in_shortest_low = -6 and + // decimal_in_shortest_high = 21: + // ToShortest(0.000001) -> "0.000001" + // ToShortest(0.0000001) -> "1e-7" + // ToShortest(111111111111111111111.0) -> "111111111111111110000" + // ToShortest(100000000000000000000.0) -> "100000000000000000000" + // ToShortest(1111111111111111111111.0) -> "1.1111111111111111e+21" + // + // When converting to precision mode the converter may add + // max_leading_padding_zeroes before returning the number in exponential + // format. + // Example with max_leading_padding_zeroes_in_precision_mode = 6. + // ToPrecision(0.0000012345, 2) -> "0.0000012" + // ToPrecision(0.00000012345, 2) -> "1.2e-7" + // Similarily the converter may add up to + // max_trailing_padding_zeroes_in_precision_mode in precision mode to avoid + // returning an exponential representation. A zero added by the + // EMIT_TRAILING_ZERO_AFTER_POINT flag is counted for this limit. + // Examples for max_trailing_padding_zeroes_in_precision_mode = 1: + // ToPrecision(230.0, 2) -> "230" + // ToPrecision(230.0, 2) -> "230." with EMIT_TRAILING_DECIMAL_POINT. + // ToPrecision(230.0, 2) -> "2.3e2" with EMIT_TRAILING_ZERO_AFTER_POINT. + DoubleToStringConverter(int flags, + const char* infinity_symbol, + const char* nan_symbol, + char exponent_character, + int decimal_in_shortest_low, + int decimal_in_shortest_high, + int max_leading_padding_zeroes_in_precision_mode, + int max_trailing_padding_zeroes_in_precision_mode) + : flags_(flags), + infinity_symbol_(infinity_symbol), + nan_symbol_(nan_symbol), + exponent_character_(exponent_character), + decimal_in_shortest_low_(decimal_in_shortest_low), + decimal_in_shortest_high_(decimal_in_shortest_high), + max_leading_padding_zeroes_in_precision_mode_( + max_leading_padding_zeroes_in_precision_mode), + max_trailing_padding_zeroes_in_precision_mode_( + max_trailing_padding_zeroes_in_precision_mode) { + // When 'trailing zero after the point' is set, then 'trailing point' + // must be set too. + ASSERT(((flags & EMIT_TRAILING_DECIMAL_POINT) != 0) || + !((flags & EMIT_TRAILING_ZERO_AFTER_POINT) != 0)); + } + + // Returns a converter following the EcmaScript specification. + static const DoubleToStringConverter& EcmaScriptConverter(); + + // Computes the shortest string of digits that correctly represent the input + // number. Depending on decimal_in_shortest_low and decimal_in_shortest_high + // (see constructor) it then either returns a decimal representation, or an + // exponential representation. + // Example with decimal_in_shortest_low = -6, + // decimal_in_shortest_high = 21, + // EMIT_POSITIVE_EXPONENT_SIGN activated, and + // EMIT_TRAILING_DECIMAL_POINT deactived: + // ToShortest(0.000001) -> "0.000001" + // ToShortest(0.0000001) -> "1e-7" + // ToShortest(111111111111111111111.0) -> "111111111111111110000" + // ToShortest(100000000000000000000.0) -> "100000000000000000000" + // ToShortest(1111111111111111111111.0) -> "1.1111111111111111e+21" + // + // Note: the conversion may round the output if the returned string + // is accurate enough to uniquely identify the input-number. + // For example the most precise representation of the double 9e59 equals + // "899999999999999918767229449717619953810131273674690656206848", but + // the converter will return the shorter (but still correct) "9e59". + // + // Returns true if the conversion succeeds. The conversion always succeeds + // except when the input value is special and no infinity_symbol or + // nan_symbol has been given to the constructor. + bool ToShortest(double value, StringBuilder* result_builder) const { + return ToShortestIeeeNumber(value, result_builder, SHORTEST); + } + + // Same as ToShortest, but for single-precision floats. + bool ToShortestSingle(float value, StringBuilder* result_builder) const { + return ToShortestIeeeNumber(value, result_builder, SHORTEST_SINGLE); + } + + + // Computes a decimal representation with a fixed number of digits after the + // decimal point. The last emitted digit is rounded. + // + // Examples: + // ToFixed(3.12, 1) -> "3.1" + // ToFixed(3.1415, 3) -> "3.142" + // ToFixed(1234.56789, 4) -> "1234.5679" + // ToFixed(1.23, 5) -> "1.23000" + // ToFixed(0.1, 4) -> "0.1000" + // ToFixed(1e30, 2) -> "1000000000000000019884624838656.00" + // ToFixed(0.1, 30) -> "0.100000000000000005551115123126" + // ToFixed(0.1, 17) -> "0.10000000000000001" + // + // If requested_digits equals 0, then the tail of the result depends on + // the EMIT_TRAILING_DECIMAL_POINT and EMIT_TRAILING_ZERO_AFTER_POINT. + // Examples, for requested_digits == 0, + // let EMIT_TRAILING_DECIMAL_POINT and EMIT_TRAILING_ZERO_AFTER_POINT be + // - false and false: then 123.45 -> 123 + // 0.678 -> 1 + // - true and false: then 123.45 -> 123. + // 0.678 -> 1. + // - true and true: then 123.45 -> 123.0 + // 0.678 -> 1.0 + // + // Returns true if the conversion succeeds. The conversion always succeeds + // except for the following cases: + // - the input value is special and no infinity_symbol or nan_symbol has + // been provided to the constructor, + // - 'value' > 10^kMaxFixedDigitsBeforePoint, or + // - 'requested_digits' > kMaxFixedDigitsAfterPoint. + // The last two conditions imply that the result will never contain more than + // 1 + kMaxFixedDigitsBeforePoint + 1 + kMaxFixedDigitsAfterPoint characters + // (one additional character for the sign, and one for the decimal point). + bool ToFixed(double value, + int requested_digits, + StringBuilder* result_builder) const; + + // Computes a representation in exponential format with requested_digits + // after the decimal point. The last emitted digit is rounded. + // If requested_digits equals -1, then the shortest exponential representation + // is computed. + // + // Examples with EMIT_POSITIVE_EXPONENT_SIGN deactivated, and + // exponent_character set to 'e'. + // ToExponential(3.12, 1) -> "3.1e0" + // ToExponential(5.0, 3) -> "5.000e0" + // ToExponential(0.001, 2) -> "1.00e-3" + // ToExponential(3.1415, -1) -> "3.1415e0" + // ToExponential(3.1415, 4) -> "3.1415e0" + // ToExponential(3.1415, 3) -> "3.142e0" + // ToExponential(123456789000000, 3) -> "1.235e14" + // ToExponential(1000000000000000019884624838656.0, -1) -> "1e30" + // ToExponential(1000000000000000019884624838656.0, 32) -> + // "1.00000000000000001988462483865600e30" + // ToExponential(1234, 0) -> "1e3" + // + // Returns true if the conversion succeeds. The conversion always succeeds + // except for the following cases: + // - the input value is special and no infinity_symbol or nan_symbol has + // been provided to the constructor, + // - 'requested_digits' > kMaxExponentialDigits. + // The last condition implies that the result will never contain more than + // kMaxExponentialDigits + 8 characters (the sign, the digit before the + // decimal point, the decimal point, the exponent character, the + // exponent's sign, and at most 3 exponent digits). + bool ToExponential(double value, + int requested_digits, + StringBuilder* result_builder) const; + + // Computes 'precision' leading digits of the given 'value' and returns them + // either in exponential or decimal format, depending on + // max_{leading|trailing}_padding_zeroes_in_precision_mode (given to the + // constructor). + // The last computed digit is rounded. + // + // Example with max_leading_padding_zeroes_in_precision_mode = 6. + // ToPrecision(0.0000012345, 2) -> "0.0000012" + // ToPrecision(0.00000012345, 2) -> "1.2e-7" + // Similarily the converter may add up to + // max_trailing_padding_zeroes_in_precision_mode in precision mode to avoid + // returning an exponential representation. A zero added by the + // EMIT_TRAILING_ZERO_AFTER_POINT flag is counted for this limit. + // Examples for max_trailing_padding_zeroes_in_precision_mode = 1: + // ToPrecision(230.0, 2) -> "230" + // ToPrecision(230.0, 2) -> "230." with EMIT_TRAILING_DECIMAL_POINT. + // ToPrecision(230.0, 2) -> "2.3e2" with EMIT_TRAILING_ZERO_AFTER_POINT. + // Examples for max_trailing_padding_zeroes_in_precision_mode = 3, and no + // EMIT_TRAILING_ZERO_AFTER_POINT: + // ToPrecision(123450.0, 6) -> "123450" + // ToPrecision(123450.0, 5) -> "123450" + // ToPrecision(123450.0, 4) -> "123500" + // ToPrecision(123450.0, 3) -> "123000" + // ToPrecision(123450.0, 2) -> "1.2e5" + // + // Returns true if the conversion succeeds. The conversion always succeeds + // except for the following cases: + // - the input value is special and no infinity_symbol or nan_symbol has + // been provided to the constructor, + // - precision < kMinPericisionDigits + // - precision > kMaxPrecisionDigits + // The last condition implies that the result will never contain more than + // kMaxPrecisionDigits + 7 characters (the sign, the decimal point, the + // exponent character, the exponent's sign, and at most 3 exponent digits). + bool ToPrecision(double value, + int precision, + StringBuilder* result_builder) const; + + enum DtoaMode { + // Produce the shortest correct representation. + // For example the output of 0.299999999999999988897 is (the less accurate + // but correct) 0.3. + SHORTEST, + // Same as SHORTEST, but for single-precision floats. + SHORTEST_SINGLE, + // Produce a fixed number of digits after the decimal point. + // For instance fixed(0.1, 4) becomes 0.1000 + // If the input number is big, the output will be big. + FIXED, + // Fixed number of digits (independent of the decimal point). + PRECISION + }; + + // The maximal number of digits that are needed to emit a double in base 10. + // A higher precision can be achieved by using more digits, but the shortest + // accurate representation of any double will never use more digits than + // kBase10MaximalLength. + // Note that DoubleToAscii null-terminates its input. So the given buffer + // should be at least kBase10MaximalLength + 1 characters long. + static const int kBase10MaximalLength = 17; + + // Converts the given double 'v' to ascii. 'v' must not be NaN, +Infinity, or + // -Infinity. In SHORTEST_SINGLE-mode this restriction also applies to 'v' + // after it has been casted to a single-precision float. That is, in this + // mode static_cast(v) must not be NaN, +Infinity or -Infinity. + // + // The result should be interpreted as buffer * 10^(point-length). + // + // The output depends on the given mode: + // - SHORTEST: produce the least amount of digits for which the internal + // identity requirement is still satisfied. If the digits are printed + // (together with the correct exponent) then reading this number will give + // 'v' again. The buffer will choose the representation that is closest to + // 'v'. If there are two at the same distance, than the one farther away + // from 0 is chosen (halfway cases - ending with 5 - are rounded up). + // In this mode the 'requested_digits' parameter is ignored. + // - SHORTEST_SINGLE: same as SHORTEST but with single-precision. + // - FIXED: produces digits necessary to print a given number with + // 'requested_digits' digits after the decimal point. The produced digits + // might be too short in which case the caller has to fill the remainder + // with '0's. + // Example: toFixed(0.001, 5) is allowed to return buffer="1", point=-2. + // Halfway cases are rounded towards +/-Infinity (away from 0). The call + // toFixed(0.15, 2) thus returns buffer="2", point=0. + // The returned buffer may contain digits that would be truncated from the + // shortest representation of the input. + // - PRECISION: produces 'requested_digits' where the first digit is not '0'. + // Even though the length of produced digits usually equals + // 'requested_digits', the function is allowed to return fewer digits, in + // which case the caller has to fill the missing digits with '0's. + // Halfway cases are again rounded away from 0. + // DoubleToAscii expects the given buffer to be big enough to hold all + // digits and a terminating null-character. In SHORTEST-mode it expects a + // buffer of at least kBase10MaximalLength + 1. In all other modes the + // requested_digits parameter and the padding-zeroes limit the size of the + // output. Don't forget the decimal point, the exponent character and the + // terminating null-character when computing the maximal output size. + // The given length is only used in debug mode to ensure the buffer is big + // enough. + static void DoubleToAscii(double v, + DtoaMode mode, + int requested_digits, + char* buffer, + int buffer_length, + bool* sign, + int* length, + int* point); + + private: + // Implementation for ToShortest and ToShortestSingle. + bool ToShortestIeeeNumber(double value, + StringBuilder* result_builder, + DtoaMode mode) const; + + // If the value is a special value (NaN or Infinity) constructs the + // corresponding string using the configured infinity/nan-symbol. + // If either of them is NULL or the value is not special then the + // function returns false. + bool HandleSpecialValues(double value, StringBuilder* result_builder) const; + // Constructs an exponential representation (i.e. 1.234e56). + // The given exponent assumes a decimal point after the first decimal digit. + void CreateExponentialRepresentation(const char* decimal_digits, + int length, + int exponent, + StringBuilder* result_builder) const; + // Creates a decimal representation (i.e 1234.5678). + void CreateDecimalRepresentation(const char* decimal_digits, + int length, + int decimal_point, + int digits_after_point, + StringBuilder* result_builder) const; + + const int flags_; + const char* const infinity_symbol_; + const char* const nan_symbol_; + const char exponent_character_; + const int decimal_in_shortest_low_; + const int decimal_in_shortest_high_; + const int max_leading_padding_zeroes_in_precision_mode_; + const int max_trailing_padding_zeroes_in_precision_mode_; + + DISALLOW_IMPLICIT_CONSTRUCTORS(DoubleToStringConverter); +}; + + +class StringToDoubleConverter { + public: + // Enumeration for allowing octals and ignoring junk when converting + // strings to numbers. + enum Flags { + NO_FLAGS = 0, + ALLOW_HEX = 1, + ALLOW_OCTALS = 2, + ALLOW_TRAILING_JUNK = 4, + ALLOW_LEADING_SPACES = 8, + ALLOW_TRAILING_SPACES = 16, + ALLOW_SPACES_AFTER_SIGN = 32 + }; + + // Flags should be a bit-or combination of the possible Flags-enum. + // - NO_FLAGS: no special flags. + // - ALLOW_HEX: recognizes the prefix "0x". Hex numbers may only be integers. + // Ex: StringToDouble("0x1234") -> 4660.0 + // In StringToDouble("0x1234.56") the characters ".56" are trailing + // junk. The result of the call is hence dependent on + // the ALLOW_TRAILING_JUNK flag and/or the junk value. + // With this flag "0x" is a junk-string. Even with ALLOW_TRAILING_JUNK, + // the string will not be parsed as "0" followed by junk. + // + // - ALLOW_OCTALS: recognizes the prefix "0" for octals: + // If a sequence of octal digits starts with '0', then the number is + // read as octal integer. Octal numbers may only be integers. + // Ex: StringToDouble("01234") -> 668.0 + // StringToDouble("012349") -> 12349.0 // Not a sequence of octal + // // digits. + // In StringToDouble("01234.56") the characters ".56" are trailing + // junk. The result of the call is hence dependent on + // the ALLOW_TRAILING_JUNK flag and/or the junk value. + // In StringToDouble("01234e56") the characters "e56" are trailing + // junk, too. + // - ALLOW_TRAILING_JUNK: ignore trailing characters that are not part of + // a double literal. + // - ALLOW_LEADING_SPACES: skip over leading spaces. + // - ALLOW_TRAILING_SPACES: ignore trailing spaces. + // - ALLOW_SPACES_AFTER_SIGN: ignore spaces after the sign. + // Ex: StringToDouble("- 123.2") -> -123.2. + // StringToDouble("+ 123.2") -> 123.2 + // + // empty_string_value is returned when an empty string is given as input. + // If ALLOW_LEADING_SPACES or ALLOW_TRAILING_SPACES are set, then a string + // containing only spaces is converted to the 'empty_string_value', too. + // + // junk_string_value is returned when + // a) ALLOW_TRAILING_JUNK is not set, and a junk character (a character not + // part of a double-literal) is found. + // b) ALLOW_TRAILING_JUNK is set, but the string does not start with a + // double literal. + // + // infinity_symbol and nan_symbol are strings that are used to detect + // inputs that represent infinity and NaN. They can be null, in which case + // they are ignored. + // The conversion routine first reads any possible signs. Then it compares the + // following character of the input-string with the first character of + // the infinity, and nan-symbol. If either matches, the function assumes, that + // a match has been found, and expects the following input characters to match + // the remaining characters of the special-value symbol. + // This means that the following restrictions apply to special-value symbols: + // - they must not start with signs ('+', or '-'), + // - they must not have the same first character. + // - they must not start with digits. + // + // Examples: + // flags = ALLOW_HEX | ALLOW_TRAILING_JUNK, + // empty_string_value = 0.0, + // junk_string_value = NaN, + // infinity_symbol = "infinity", + // nan_symbol = "nan": + // StringToDouble("0x1234") -> 4660.0. + // StringToDouble("0x1234K") -> 4660.0. + // StringToDouble("") -> 0.0 // empty_string_value. + // StringToDouble(" ") -> NaN // junk_string_value. + // StringToDouble(" 1") -> NaN // junk_string_value. + // StringToDouble("0x") -> NaN // junk_string_value. + // StringToDouble("-123.45") -> -123.45. + // StringToDouble("--123.45") -> NaN // junk_string_value. + // StringToDouble("123e45") -> 123e45. + // StringToDouble("123E45") -> 123e45. + // StringToDouble("123e+45") -> 123e45. + // StringToDouble("123E-45") -> 123e-45. + // StringToDouble("123e") -> 123.0 // trailing junk ignored. + // StringToDouble("123e-") -> 123.0 // trailing junk ignored. + // StringToDouble("+NaN") -> NaN // NaN string literal. + // StringToDouble("-infinity") -> -inf. // infinity literal. + // StringToDouble("Infinity") -> NaN // junk_string_value. + // + // flags = ALLOW_OCTAL | ALLOW_LEADING_SPACES, + // empty_string_value = 0.0, + // junk_string_value = NaN, + // infinity_symbol = NULL, + // nan_symbol = NULL: + // StringToDouble("0x1234") -> NaN // junk_string_value. + // StringToDouble("01234") -> 668.0. + // StringToDouble("") -> 0.0 // empty_string_value. + // StringToDouble(" ") -> 0.0 // empty_string_value. + // StringToDouble(" 1") -> 1.0 + // StringToDouble("0x") -> NaN // junk_string_value. + // StringToDouble("0123e45") -> NaN // junk_string_value. + // StringToDouble("01239E45") -> 1239e45. + // StringToDouble("-infinity") -> NaN // junk_string_value. + // StringToDouble("NaN") -> NaN // junk_string_value. + StringToDoubleConverter(int flags, + double empty_string_value, + double junk_string_value, + const char* infinity_symbol, + const char* nan_symbol) + : flags_(flags), + empty_string_value_(empty_string_value), + junk_string_value_(junk_string_value), + infinity_symbol_(infinity_symbol), + nan_symbol_(nan_symbol) { + } + + // Performs the conversion. + // The output parameter 'processed_characters_count' is set to the number + // of characters that have been processed to read the number. + // Spaces than are processed with ALLOW_{LEADING|TRAILING}_SPACES are included + // in the 'processed_characters_count'. Trailing junk is never included. + double StringToDouble(const char* buffer, + int length, + int* processed_characters_count) const { + return StringToIeee(buffer, length, processed_characters_count, true); + } + + // Same as StringToDouble but reads a float. + // Note that this is not equivalent to static_cast(StringToDouble(...)) + // due to potential double-rounding. + float StringToFloat(const char* buffer, + int length, + int* processed_characters_count) const { + return static_cast(StringToIeee(buffer, length, + processed_characters_count, false)); + } + + private: + const int flags_; + const double empty_string_value_; + const double junk_string_value_; + const char* const infinity_symbol_; + const char* const nan_symbol_; + + double StringToIeee(const char* buffer, + int length, + int* processed_characters_count, + bool read_as_double) const; + + DISALLOW_IMPLICIT_CONSTRUCTORS(StringToDoubleConverter); +}; + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_DOUBLE_CONVERSION_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/double-conversion/fast-dtoa.h b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/double-conversion/fast-dtoa.h new file mode 100644 index 0000000..5f1e8ee --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/double-conversion/fast-dtoa.h @@ -0,0 +1,88 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_FAST_DTOA_H_ +#define DOUBLE_CONVERSION_FAST_DTOA_H_ + +#include "utils.h" + +namespace double_conversion { + +enum FastDtoaMode { + // Computes the shortest representation of the given input. The returned + // result will be the most accurate number of this length. Longer + // representations might be more accurate. + FAST_DTOA_SHORTEST, + // Same as FAST_DTOA_SHORTEST but for single-precision floats. + FAST_DTOA_SHORTEST_SINGLE, + // Computes a representation where the precision (number of digits) is + // given as input. The precision is independent of the decimal point. + FAST_DTOA_PRECISION +}; + +// FastDtoa will produce at most kFastDtoaMaximalLength digits. This does not +// include the terminating '\0' character. +static const int kFastDtoaMaximalLength = 17; +// Same for single-precision numbers. +static const int kFastDtoaMaximalSingleLength = 9; + +// Provides a decimal representation of v. +// The result should be interpreted as buffer * 10^(point - length). +// +// Precondition: +// * v must be a strictly positive finite double. +// +// Returns true if it succeeds, otherwise the result can not be trusted. +// There will be *length digits inside the buffer followed by a null terminator. +// If the function returns true and mode equals +// - FAST_DTOA_SHORTEST, then +// the parameter requested_digits is ignored. +// The result satisfies +// v == (double) (buffer * 10^(point - length)). +// The digits in the buffer are the shortest representation possible. E.g. +// if 0.099999999999 and 0.1 represent the same double then "1" is returned +// with point = 0. +// The last digit will be closest to the actual v. That is, even if several +// digits might correctly yield 'v' when read again, the buffer will contain +// the one closest to v. +// - FAST_DTOA_PRECISION, then +// the buffer contains requested_digits digits. +// the difference v - (buffer * 10^(point-length)) is closest to zero for +// all possible representations of requested_digits digits. +// If there are two values that are equally close, then FastDtoa returns +// false. +// For both modes the buffer must be large enough to hold the result. +bool FastDtoa(double d, + FastDtoaMode mode, + int requested_digits, + Vector buffer, + int* length, + int* decimal_point); + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_FAST_DTOA_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/double-conversion/fixed-dtoa.h b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/double-conversion/fixed-dtoa.h new file mode 100644 index 0000000..3bdd08e --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/double-conversion/fixed-dtoa.h @@ -0,0 +1,56 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_FIXED_DTOA_H_ +#define DOUBLE_CONVERSION_FIXED_DTOA_H_ + +#include "utils.h" + +namespace double_conversion { + +// Produces digits necessary to print a given number with +// 'fractional_count' digits after the decimal point. +// The buffer must be big enough to hold the result plus one terminating null +// character. +// +// The produced digits might be too short in which case the caller has to fill +// the gaps with '0's. +// Example: FastFixedDtoa(0.001, 5, ...) is allowed to return buffer = "1", and +// decimal_point = -2. +// Halfway cases are rounded towards +/-Infinity (away from 0). The call +// FastFixedDtoa(0.15, 2, ...) thus returns buffer = "2", decimal_point = 0. +// The returned buffer may contain digits that would be truncated from the +// shortest representation of the input. +// +// This method only works for some parameters. If it can't handle the input it +// returns false. The output is null-terminated when the function succeeds. +bool FastFixedDtoa(double v, int fractional_count, + Vector buffer, int* length, int* decimal_point); + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_FIXED_DTOA_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/double-conversion/ieee.h b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/double-conversion/ieee.h new file mode 100644 index 0000000..661141d --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/double-conversion/ieee.h @@ -0,0 +1,402 @@ +// Copyright 2012 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_DOUBLE_H_ +#define DOUBLE_CONVERSION_DOUBLE_H_ + +#include "diy-fp.h" + +namespace double_conversion { + +// We assume that doubles and uint64_t have the same endianness. +static uint64_t double_to_uint64(double d) { return BitCast(d); } +static double uint64_to_double(uint64_t d64) { return BitCast(d64); } +static uint32_t float_to_uint32(float f) { return BitCast(f); } +static float uint32_to_float(uint32_t d32) { return BitCast(d32); } + +// Helper functions for doubles. +class Double { + public: + static const uint64_t kSignMask = UINT64_2PART_C(0x80000000, 00000000); + static const uint64_t kExponentMask = UINT64_2PART_C(0x7FF00000, 00000000); + static const uint64_t kSignificandMask = UINT64_2PART_C(0x000FFFFF, FFFFFFFF); + static const uint64_t kHiddenBit = UINT64_2PART_C(0x00100000, 00000000); + static const int kPhysicalSignificandSize = 52; // Excludes the hidden bit. + static const int kSignificandSize = 53; + + Double() : d64_(0) {} + explicit Double(double d) : d64_(double_to_uint64(d)) {} + explicit Double(uint64_t d64) : d64_(d64) {} + explicit Double(DiyFp diy_fp) + : d64_(DiyFpToUint64(diy_fp)) {} + + // The value encoded by this Double must be greater or equal to +0.0. + // It must not be special (infinity, or NaN). + DiyFp AsDiyFp() const { + ASSERT(Sign() > 0); + ASSERT(!IsSpecial()); + return DiyFp(Significand(), Exponent()); + } + + // The value encoded by this Double must be strictly greater than 0. + DiyFp AsNormalizedDiyFp() const { + ASSERT(value() > 0.0); + uint64_t f = Significand(); + int e = Exponent(); + + // The current double could be a denormal. + while ((f & kHiddenBit) == 0) { + f <<= 1; + e--; + } + // Do the final shifts in one go. + f <<= DiyFp::kSignificandSize - kSignificandSize; + e -= DiyFp::kSignificandSize - kSignificandSize; + return DiyFp(f, e); + } + + // Returns the double's bit as uint64. + uint64_t AsUint64() const { + return d64_; + } + + // Returns the next greater double. Returns +infinity on input +infinity. + double NextDouble() const { + if (d64_ == kInfinity) return Double(kInfinity).value(); + if (Sign() < 0 && Significand() == 0) { + // -0.0 + return 0.0; + } + if (Sign() < 0) { + return Double(d64_ - 1).value(); + } else { + return Double(d64_ + 1).value(); + } + } + + double PreviousDouble() const { + if (d64_ == (kInfinity | kSignMask)) return -Double::Infinity(); + if (Sign() < 0) { + return Double(d64_ + 1).value(); + } else { + if (Significand() == 0) return -0.0; + return Double(d64_ - 1).value(); + } + } + + int Exponent() const { + if (IsDenormal()) return kDenormalExponent; + + uint64_t d64 = AsUint64(); + int biased_e = + static_cast((d64 & kExponentMask) >> kPhysicalSignificandSize); + return biased_e - kExponentBias; + } + + uint64_t Significand() const { + uint64_t d64 = AsUint64(); + uint64_t significand = d64 & kSignificandMask; + if (!IsDenormal()) { + return significand + kHiddenBit; + } else { + return significand; + } + } + + // Returns true if the double is a denormal. + bool IsDenormal() const { + uint64_t d64 = AsUint64(); + return (d64 & kExponentMask) == 0; + } + + // We consider denormals not to be special. + // Hence only Infinity and NaN are special. + bool IsSpecial() const { + uint64_t d64 = AsUint64(); + return (d64 & kExponentMask) == kExponentMask; + } + + bool IsNan() const { + uint64_t d64 = AsUint64(); + return ((d64 & kExponentMask) == kExponentMask) && + ((d64 & kSignificandMask) != 0); + } + + bool IsInfinite() const { + uint64_t d64 = AsUint64(); + return ((d64 & kExponentMask) == kExponentMask) && + ((d64 & kSignificandMask) == 0); + } + + int Sign() const { + uint64_t d64 = AsUint64(); + return (d64 & kSignMask) == 0? 1: -1; + } + + // Precondition: the value encoded by this Double must be greater or equal + // than +0.0. + DiyFp UpperBoundary() const { + ASSERT(Sign() > 0); + return DiyFp(Significand() * 2 + 1, Exponent() - 1); + } + + // Computes the two boundaries of this. + // The bigger boundary (m_plus) is normalized. The lower boundary has the same + // exponent as m_plus. + // Precondition: the value encoded by this Double must be greater than 0. + void NormalizedBoundaries(DiyFp* out_m_minus, DiyFp* out_m_plus) const { + ASSERT(value() > 0.0); + DiyFp v = this->AsDiyFp(); + DiyFp m_plus = DiyFp::Normalize(DiyFp((v.f() << 1) + 1, v.e() - 1)); + DiyFp m_minus; + if (LowerBoundaryIsCloser()) { + m_minus = DiyFp((v.f() << 2) - 1, v.e() - 2); + } else { + m_minus = DiyFp((v.f() << 1) - 1, v.e() - 1); + } + m_minus.set_f(m_minus.f() << (m_minus.e() - m_plus.e())); + m_minus.set_e(m_plus.e()); + *out_m_plus = m_plus; + *out_m_minus = m_minus; + } + + bool LowerBoundaryIsCloser() const { + // The boundary is closer if the significand is of the form f == 2^p-1 then + // the lower boundary is closer. + // Think of v = 1000e10 and v- = 9999e9. + // Then the boundary (== (v - v-)/2) is not just at a distance of 1e9 but + // at a distance of 1e8. + // The only exception is for the smallest normal: the largest denormal is + // at the same distance as its successor. + // Note: denormals have the same exponent as the smallest normals. + bool physical_significand_is_zero = ((AsUint64() & kSignificandMask) == 0); + return physical_significand_is_zero && (Exponent() != kDenormalExponent); + } + + double value() const { return uint64_to_double(d64_); } + + // Returns the significand size for a given order of magnitude. + // If v = f*2^e with 2^p-1 <= f <= 2^p then p+e is v's order of magnitude. + // This function returns the number of significant binary digits v will have + // once it's encoded into a double. In almost all cases this is equal to + // kSignificandSize. The only exceptions are denormals. They start with + // leading zeroes and their effective significand-size is hence smaller. + static int SignificandSizeForOrderOfMagnitude(int order) { + if (order >= (kDenormalExponent + kSignificandSize)) { + return kSignificandSize; + } + if (order <= kDenormalExponent) return 0; + return order - kDenormalExponent; + } + + static double Infinity() { + return Double(kInfinity).value(); + } + + static double NaN() { + return Double(kNaN).value(); + } + + private: + static const int kExponentBias = 0x3FF + kPhysicalSignificandSize; + static const int kDenormalExponent = -kExponentBias + 1; + static const int kMaxExponent = 0x7FF - kExponentBias; + static const uint64_t kInfinity = UINT64_2PART_C(0x7FF00000, 00000000); + static const uint64_t kNaN = UINT64_2PART_C(0x7FF80000, 00000000); + + const uint64_t d64_; + + static uint64_t DiyFpToUint64(DiyFp diy_fp) { + uint64_t significand = diy_fp.f(); + int exponent = diy_fp.e(); + while (significand > kHiddenBit + kSignificandMask) { + significand >>= 1; + exponent++; + } + if (exponent >= kMaxExponent) { + return kInfinity; + } + if (exponent < kDenormalExponent) { + return 0; + } + while (exponent > kDenormalExponent && (significand & kHiddenBit) == 0) { + significand <<= 1; + exponent--; + } + uint64_t biased_exponent; + if (exponent == kDenormalExponent && (significand & kHiddenBit) == 0) { + biased_exponent = 0; + } else { + biased_exponent = static_cast(exponent + kExponentBias); + } + return (significand & kSignificandMask) | + (biased_exponent << kPhysicalSignificandSize); + } + + DISALLOW_COPY_AND_ASSIGN(Double); +}; + +class Single { + public: + static const uint32_t kSignMask = 0x80000000; + static const uint32_t kExponentMask = 0x7F800000; + static const uint32_t kSignificandMask = 0x007FFFFF; + static const uint32_t kHiddenBit = 0x00800000; + static const int kPhysicalSignificandSize = 23; // Excludes the hidden bit. + static const int kSignificandSize = 24; + + Single() : d32_(0) {} + explicit Single(float f) : d32_(float_to_uint32(f)) {} + explicit Single(uint32_t d32) : d32_(d32) {} + + // The value encoded by this Single must be greater or equal to +0.0. + // It must not be special (infinity, or NaN). + DiyFp AsDiyFp() const { + ASSERT(Sign() > 0); + ASSERT(!IsSpecial()); + return DiyFp(Significand(), Exponent()); + } + + // Returns the single's bit as uint64. + uint32_t AsUint32() const { + return d32_; + } + + int Exponent() const { + if (IsDenormal()) return kDenormalExponent; + + uint32_t d32 = AsUint32(); + int biased_e = + static_cast((d32 & kExponentMask) >> kPhysicalSignificandSize); + return biased_e - kExponentBias; + } + + uint32_t Significand() const { + uint32_t d32 = AsUint32(); + uint32_t significand = d32 & kSignificandMask; + if (!IsDenormal()) { + return significand + kHiddenBit; + } else { + return significand; + } + } + + // Returns true if the single is a denormal. + bool IsDenormal() const { + uint32_t d32 = AsUint32(); + return (d32 & kExponentMask) == 0; + } + + // We consider denormals not to be special. + // Hence only Infinity and NaN are special. + bool IsSpecial() const { + uint32_t d32 = AsUint32(); + return (d32 & kExponentMask) == kExponentMask; + } + + bool IsNan() const { + uint32_t d32 = AsUint32(); + return ((d32 & kExponentMask) == kExponentMask) && + ((d32 & kSignificandMask) != 0); + } + + bool IsInfinite() const { + uint32_t d32 = AsUint32(); + return ((d32 & kExponentMask) == kExponentMask) && + ((d32 & kSignificandMask) == 0); + } + + int Sign() const { + uint32_t d32 = AsUint32(); + return (d32 & kSignMask) == 0? 1: -1; + } + + // Computes the two boundaries of this. + // The bigger boundary (m_plus) is normalized. The lower boundary has the same + // exponent as m_plus. + // Precondition: the value encoded by this Single must be greater than 0. + void NormalizedBoundaries(DiyFp* out_m_minus, DiyFp* out_m_plus) const { + ASSERT(value() > 0.0); + DiyFp v = this->AsDiyFp(); + DiyFp m_plus = DiyFp::Normalize(DiyFp((v.f() << 1) + 1, v.e() - 1)); + DiyFp m_minus; + if (LowerBoundaryIsCloser()) { + m_minus = DiyFp((v.f() << 2) - 1, v.e() - 2); + } else { + m_minus = DiyFp((v.f() << 1) - 1, v.e() - 1); + } + m_minus.set_f(m_minus.f() << (m_minus.e() - m_plus.e())); + m_minus.set_e(m_plus.e()); + *out_m_plus = m_plus; + *out_m_minus = m_minus; + } + + // Precondition: the value encoded by this Single must be greater or equal + // than +0.0. + DiyFp UpperBoundary() const { + ASSERT(Sign() > 0); + return DiyFp(Significand() * 2 + 1, Exponent() - 1); + } + + bool LowerBoundaryIsCloser() const { + // The boundary is closer if the significand is of the form f == 2^p-1 then + // the lower boundary is closer. + // Think of v = 1000e10 and v- = 9999e9. + // Then the boundary (== (v - v-)/2) is not just at a distance of 1e9 but + // at a distance of 1e8. + // The only exception is for the smallest normal: the largest denormal is + // at the same distance as its successor. + // Note: denormals have the same exponent as the smallest normals. + bool physical_significand_is_zero = ((AsUint32() & kSignificandMask) == 0); + return physical_significand_is_zero && (Exponent() != kDenormalExponent); + } + + float value() const { return uint32_to_float(d32_); } + + static float Infinity() { + return Single(kInfinity).value(); + } + + static float NaN() { + return Single(kNaN).value(); + } + + private: + static const int kExponentBias = 0x7F + kPhysicalSignificandSize; + static const int kDenormalExponent = -kExponentBias + 1; + static const int kMaxExponent = 0xFF - kExponentBias; + static const uint32_t kInfinity = 0x7F800000; + static const uint32_t kNaN = 0x7FC00000; + + const uint32_t d32_; + + DISALLOW_COPY_AND_ASSIGN(Single); +}; + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_DOUBLE_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/double-conversion/strtod.h b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/double-conversion/strtod.h new file mode 100644 index 0000000..ed0293b --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/double-conversion/strtod.h @@ -0,0 +1,45 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_STRTOD_H_ +#define DOUBLE_CONVERSION_STRTOD_H_ + +#include "utils.h" + +namespace double_conversion { + +// The buffer must only contain digits in the range [0-9]. It must not +// contain a dot or a sign. It must not start with '0', and must not be empty. +double Strtod(Vector buffer, int exponent); + +// The buffer must only contain digits in the range [0-9]. It must not +// contain a dot or a sign. It must not start with '0', and must not be empty. +float Strtof(Vector buffer, int exponent); + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_STRTOD_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/double-conversion/utils.h b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/double-conversion/utils.h new file mode 100644 index 0000000..a7c9b42 --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64/Headers/double-conversion/utils.h @@ -0,0 +1,324 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_UTILS_H_ +#define DOUBLE_CONVERSION_UTILS_H_ + +#include +#include + +#include +#ifndef ASSERT +#define ASSERT(condition) \ + assert(condition); +#endif +#ifndef UNIMPLEMENTED +#define UNIMPLEMENTED() (abort()) +#endif +#ifndef UNREACHABLE +#define UNREACHABLE() (abort()) +#endif + +// Double operations detection based on target architecture. +// Linux uses a 80bit wide floating point stack on x86. This induces double +// rounding, which in turn leads to wrong results. +// An easy way to test if the floating-point operations are correct is to +// evaluate: 89255.0/1e22. If the floating-point stack is 64 bits wide then +// the result is equal to 89255e-22. +// The best way to test this, is to create a division-function and to compare +// the output of the division with the expected result. (Inlining must be +// disabled.) +// On Linux,x86 89255e-22 != Div_double(89255.0/1e22) +#if defined(_M_X64) || defined(__x86_64__) || \ + defined(__ARMEL__) || defined(__avr32__) || \ + defined(__hppa__) || defined(__ia64__) || \ + defined(__mips__) || \ + defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) || \ + defined(__sparc__) || defined(__sparc) || defined(__s390__) || \ + defined(__SH4__) || defined(__alpha__) || \ + defined(_MIPS_ARCH_MIPS32R2) || \ + defined(__AARCH64EL__) +#define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 +#elif defined(__mc68000__) +#undef DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS +#elif defined(_M_IX86) || defined(__i386__) || defined(__i386) +#if defined(_WIN32) +// Windows uses a 64bit wide floating point stack. +#define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 +#else +#undef DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS +#endif // _WIN32 +#else +#error Target architecture was not detected as supported by Double-Conversion. +#endif + +#if defined(__GNUC__) +#define DOUBLE_CONVERSION_UNUSED __attribute__((unused)) +#else +#define DOUBLE_CONVERSION_UNUSED +#endif + +#if defined(_WIN32) && !defined(__MINGW32__) + +typedef signed char int8_t; +typedef unsigned char uint8_t; +typedef short int16_t; // NOLINT +typedef unsigned short uint16_t; // NOLINT +typedef int int32_t; +typedef unsigned int uint32_t; +typedef __int64 int64_t; +typedef unsigned __int64 uint64_t; +// intptr_t and friends are defined in crtdefs.h through stdio.h. + +#else + +#include + +#endif + +// The following macro works on both 32 and 64-bit platforms. +// Usage: instead of writing 0x1234567890123456 +// write UINT64_2PART_C(0x12345678,90123456); +#define UINT64_2PART_C(a, b) (((static_cast(a) << 32) + 0x##b##u)) + + +// The expression ARRAY_SIZE(a) is a compile-time constant of type +// size_t which represents the number of elements of the given +// array. You should only use ARRAY_SIZE on statically allocated +// arrays. +#ifndef ARRAY_SIZE +#define ARRAY_SIZE(a) \ + ((sizeof(a) / sizeof(*(a))) / \ + static_cast(!(sizeof(a) % sizeof(*(a))))) +#endif + +// A macro to disallow the evil copy constructor and operator= functions +// This should be used in the private: declarations for a class +#ifndef DISALLOW_COPY_AND_ASSIGN +#define DISALLOW_COPY_AND_ASSIGN(TypeName) \ + TypeName(const TypeName&); \ + void operator=(const TypeName&) +#endif + +// A macro to disallow all the implicit constructors, namely the +// default constructor, copy constructor and operator= functions. +// +// This should be used in the private: declarations for a class +// that wants to prevent anyone from instantiating it. This is +// especially useful for classes containing only static methods. +#ifndef DISALLOW_IMPLICIT_CONSTRUCTORS +#define DISALLOW_IMPLICIT_CONSTRUCTORS(TypeName) \ + TypeName(); \ + DISALLOW_COPY_AND_ASSIGN(TypeName) +#endif + +namespace double_conversion { + +static const int kCharSize = sizeof(char); + +// Returns the maximum of the two parameters. +template +static T Max(T a, T b) { + return a < b ? b : a; +} + + +// Returns the minimum of the two parameters. +template +static T Min(T a, T b) { + return a < b ? a : b; +} + + +inline int StrLength(const char* string) { + size_t length = strlen(string); + ASSERT(length == static_cast(static_cast(length))); + return static_cast(length); +} + +// This is a simplified version of V8's Vector class. +template +class Vector { + public: + Vector() : start_(NULL), length_(0) {} + Vector(T* data, int length) : start_(data), length_(length) { + ASSERT(length == 0 || (length > 0 && data != NULL)); + } + + // Returns a vector using the same backing storage as this one, + // spanning from and including 'from', to but not including 'to'. + Vector SubVector(int from, int to) { + ASSERT(to <= length_); + ASSERT(from < to); + ASSERT(0 <= from); + return Vector(start() + from, to - from); + } + + // Returns the length of the vector. + int length() const { return length_; } + + // Returns whether or not the vector is empty. + bool is_empty() const { return length_ == 0; } + + // Returns the pointer to the start of the data in the vector. + T* start() const { return start_; } + + // Access individual vector elements - checks bounds in debug mode. + T& operator[](int index) const { + ASSERT(0 <= index && index < length_); + return start_[index]; + } + + T& first() { return start_[0]; } + + T& last() { return start_[length_ - 1]; } + + private: + T* start_; + int length_; +}; + + +// Helper class for building result strings in a character buffer. The +// purpose of the class is to use safe operations that checks the +// buffer bounds on all operations in debug mode. +class StringBuilder { + public: + StringBuilder(char* buffer, int size) + : buffer_(buffer, size), position_(0) { } + + ~StringBuilder() { if (!is_finalized()) Finalize(); } + + int size() const { return buffer_.length(); } + + // Get the current position in the builder. + int position() const { + ASSERT(!is_finalized()); + return position_; + } + + // Reset the position. + void Reset() { position_ = 0; } + + // Add a single character to the builder. It is not allowed to add + // 0-characters; use the Finalize() method to terminate the string + // instead. + void AddCharacter(char c) { + ASSERT(c != '\0'); + ASSERT(!is_finalized() && position_ < buffer_.length()); + buffer_[position_++] = c; + } + + // Add an entire string to the builder. Uses strlen() internally to + // compute the length of the input string. + void AddString(const char* s) { + AddSubstring(s, StrLength(s)); + } + + // Add the first 'n' characters of the given string 's' to the + // builder. The input string must have enough characters. + void AddSubstring(const char* s, int n) { + ASSERT(!is_finalized() && position_ + n < buffer_.length()); + ASSERT(static_cast(n) <= strlen(s)); + memmove(&buffer_[position_], s, n * kCharSize); + position_ += n; + } + + + // Add character padding to the builder. If count is non-positive, + // nothing is added to the builder. + void AddPadding(char c, int count) { + for (int i = 0; i < count; i++) { + AddCharacter(c); + } + } + + // Finalize the string by 0-terminating it and returning the buffer. + char* Finalize() { + ASSERT(!is_finalized() && position_ < buffer_.length()); + buffer_[position_] = '\0'; + // Make sure nobody managed to add a 0-character to the + // buffer while building the string. + ASSERT(strlen(buffer_.start()) == static_cast(position_)); + position_ = -1; + ASSERT(is_finalized()); + return buffer_.start(); + } + + private: + Vector buffer_; + int position_; + + bool is_finalized() const { return position_ < 0; } + + DISALLOW_IMPLICIT_CONSTRUCTORS(StringBuilder); +}; + +// The type-based aliasing rule allows the compiler to assume that pointers of +// different types (for some definition of different) never alias each other. +// Thus the following code does not work: +// +// float f = foo(); +// int fbits = *(int*)(&f); +// +// The compiler 'knows' that the int pointer can't refer to f since the types +// don't match, so the compiler may cache f in a register, leaving random data +// in fbits. Using C++ style casts makes no difference, however a pointer to +// char data is assumed to alias any other pointer. This is the 'memcpy +// exception'. +// +// Bit_cast uses the memcpy exception to move the bits from a variable of one +// type of a variable of another type. Of course the end result is likely to +// be implementation dependent. Most compilers (gcc-4.2 and MSVC 2005) +// will completely optimize BitCast away. +// +// There is an additional use for BitCast. +// Recent gccs will warn when they see casts that may result in breakage due to +// the type-based aliasing rule. If you have checked that there is no breakage +// you can use BitCast to cast one pointer type to another. This confuses gcc +// enough that it can no longer see that you have cast one pointer type to +// another thus avoiding the warning. +template +inline Dest BitCast(const Source& source) { + // Compile time assertion: sizeof(Dest) == sizeof(Source) + // A compile error here means your Dest and Source have different sizes. + DOUBLE_CONVERSION_UNUSED + typedef char VerifySizesAreEqual[sizeof(Dest) == sizeof(Source) ? 1 : -1]; + + Dest dest; + memmove(&dest, &source, sizeof(dest)); + return dest; +} + +template +inline Dest BitCast(Source* source) { + return BitCast(reinterpret_cast(source)); +} + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_UTILS_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64/libDoubleConversion.a b/Frameworks/DoubleConversion.xcframework/ios-arm64/libDoubleConversion.a new file mode 100644 index 0000000..9c849d8 Binary files /dev/null and b/Frameworks/DoubleConversion.xcframework/ios-arm64/libDoubleConversion.a differ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/DoubleConversion/double-conversion/bignum-dtoa.h b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/DoubleConversion/double-conversion/bignum-dtoa.h new file mode 100644 index 0000000..34b9619 --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/DoubleConversion/double-conversion/bignum-dtoa.h @@ -0,0 +1,84 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_BIGNUM_DTOA_H_ +#define DOUBLE_CONVERSION_BIGNUM_DTOA_H_ + +#include "utils.h" + +namespace double_conversion { + +enum BignumDtoaMode { + // Return the shortest correct representation. + // For example the output of 0.299999999999999988897 is (the less accurate but + // correct) 0.3. + BIGNUM_DTOA_SHORTEST, + // Same as BIGNUM_DTOA_SHORTEST but for single-precision floats. + BIGNUM_DTOA_SHORTEST_SINGLE, + // Return a fixed number of digits after the decimal point. + // For instance fixed(0.1, 4) becomes 0.1000 + // If the input number is big, the output will be big. + BIGNUM_DTOA_FIXED, + // Return a fixed number of digits, no matter what the exponent is. + BIGNUM_DTOA_PRECISION +}; + +// Converts the given double 'v' to ascii. +// The result should be interpreted as buffer * 10^(point-length). +// The buffer will be null-terminated. +// +// The input v must be > 0 and different from NaN, and Infinity. +// +// The output depends on the given mode: +// - SHORTEST: produce the least amount of digits for which the internal +// identity requirement is still satisfied. If the digits are printed +// (together with the correct exponent) then reading this number will give +// 'v' again. The buffer will choose the representation that is closest to +// 'v'. If there are two at the same distance, than the number is round up. +// In this mode the 'requested_digits' parameter is ignored. +// - FIXED: produces digits necessary to print a given number with +// 'requested_digits' digits after the decimal point. The produced digits +// might be too short in which case the caller has to fill the gaps with '0's. +// Example: toFixed(0.001, 5) is allowed to return buffer="1", point=-2. +// Halfway cases are rounded up. The call toFixed(0.15, 2) thus returns +// buffer="2", point=0. +// Note: the length of the returned buffer has no meaning wrt the significance +// of its digits. That is, just because it contains '0's does not mean that +// any other digit would not satisfy the internal identity requirement. +// - PRECISION: produces 'requested_digits' where the first digit is not '0'. +// Even though the length of produced digits usually equals +// 'requested_digits', the function is allowed to return fewer digits, in +// which case the caller has to fill the missing digits with '0's. +// Halfway cases are again rounded up. +// 'BignumDtoa' expects the given buffer to be big enough to hold all digits +// and a terminating null-character. +void BignumDtoa(double v, BignumDtoaMode mode, int requested_digits, + Vector buffer, int* length, int* point); + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_BIGNUM_DTOA_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/DoubleConversion/double-conversion/bignum.h b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/DoubleConversion/double-conversion/bignum.h new file mode 100644 index 0000000..5ec3544 --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/DoubleConversion/double-conversion/bignum.h @@ -0,0 +1,145 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_BIGNUM_H_ +#define DOUBLE_CONVERSION_BIGNUM_H_ + +#include "utils.h" + +namespace double_conversion { + +class Bignum { + public: + // 3584 = 128 * 28. We can represent 2^3584 > 10^1000 accurately. + // This bignum can encode much bigger numbers, since it contains an + // exponent. + static const int kMaxSignificantBits = 3584; + + Bignum(); + void AssignUInt16(uint16_t value); + void AssignUInt64(uint64_t value); + void AssignBignum(const Bignum& other); + + void AssignDecimalString(Vector value); + void AssignHexString(Vector value); + + void AssignPowerUInt16(uint16_t base, int exponent); + + void AddUInt16(uint16_t operand); + void AddUInt64(uint64_t operand); + void AddBignum(const Bignum& other); + // Precondition: this >= other. + void SubtractBignum(const Bignum& other); + + void Square(); + void ShiftLeft(int shift_amount); + void MultiplyByUInt32(uint32_t factor); + void MultiplyByUInt64(uint64_t factor); + void MultiplyByPowerOfTen(int exponent); + void Times10() { return MultiplyByUInt32(10); } + // Pseudocode: + // int result = this / other; + // this = this % other; + // In the worst case this function is in O(this/other). + uint16_t DivideModuloIntBignum(const Bignum& other); + + bool ToHexString(char* buffer, int buffer_size) const; + + // Returns + // -1 if a < b, + // 0 if a == b, and + // +1 if a > b. + static int Compare(const Bignum& a, const Bignum& b); + static bool Equal(const Bignum& a, const Bignum& b) { + return Compare(a, b) == 0; + } + static bool LessEqual(const Bignum& a, const Bignum& b) { + return Compare(a, b) <= 0; + } + static bool Less(const Bignum& a, const Bignum& b) { + return Compare(a, b) < 0; + } + // Returns Compare(a + b, c); + static int PlusCompare(const Bignum& a, const Bignum& b, const Bignum& c); + // Returns a + b == c + static bool PlusEqual(const Bignum& a, const Bignum& b, const Bignum& c) { + return PlusCompare(a, b, c) == 0; + } + // Returns a + b <= c + static bool PlusLessEqual(const Bignum& a, const Bignum& b, const Bignum& c) { + return PlusCompare(a, b, c) <= 0; + } + // Returns a + b < c + static bool PlusLess(const Bignum& a, const Bignum& b, const Bignum& c) { + return PlusCompare(a, b, c) < 0; + } + private: + typedef uint32_t Chunk; + typedef uint64_t DoubleChunk; + + static const int kChunkSize = sizeof(Chunk) * 8; + static const int kDoubleChunkSize = sizeof(DoubleChunk) * 8; + // With bigit size of 28 we loose some bits, but a double still fits easily + // into two chunks, and more importantly we can use the Comba multiplication. + static const int kBigitSize = 28; + static const Chunk kBigitMask = (1 << kBigitSize) - 1; + // Every instance allocates kBigitLength chunks on the stack. Bignums cannot + // grow. There are no checks if the stack-allocated space is sufficient. + static const int kBigitCapacity = kMaxSignificantBits / kBigitSize; + + void EnsureCapacity(int size) { + if (size > kBigitCapacity) { + UNREACHABLE(); + } + } + void Align(const Bignum& other); + void Clamp(); + bool IsClamped() const; + void Zero(); + // Requires this to have enough capacity (no tests done). + // Updates used_digits_ if necessary. + // shift_amount must be < kBigitSize. + void BigitsShiftLeft(int shift_amount); + // BigitLength includes the "hidden" digits encoded in the exponent. + int BigitLength() const { return used_digits_ + exponent_; } + Chunk BigitAt(int index) const; + void SubtractTimes(const Bignum& other, int factor); + + Chunk bigits_buffer_[kBigitCapacity]; + // A vector backed by bigits_buffer_. This way accesses to the array are + // checked for out-of-bounds errors. + Vector bigits_; + int used_digits_; + // The Bignum's value equals value(bigits_) * 2^(exponent_ * kBigitSize). + int exponent_; + + DISALLOW_COPY_AND_ASSIGN(Bignum); +}; + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_BIGNUM_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/DoubleConversion/double-conversion/cached-powers.h b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/DoubleConversion/double-conversion/cached-powers.h new file mode 100644 index 0000000..61a5061 --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/DoubleConversion/double-conversion/cached-powers.h @@ -0,0 +1,64 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_CACHED_POWERS_H_ +#define DOUBLE_CONVERSION_CACHED_POWERS_H_ + +#include "diy-fp.h" + +namespace double_conversion { + +class PowersOfTenCache { + public: + + // Not all powers of ten are cached. The decimal exponent of two neighboring + // cached numbers will differ by kDecimalExponentDistance. + static const int kDecimalExponentDistance; + + static const int kMinDecimalExponent; + static const int kMaxDecimalExponent; + + // Returns a cached power-of-ten with a binary exponent in the range + // [min_exponent; max_exponent] (boundaries included). + static void GetCachedPowerForBinaryExponentRange(int min_exponent, + int max_exponent, + DiyFp* power, + int* decimal_exponent); + + // Returns a cached power of ten x ~= 10^k such that + // k <= decimal_exponent < k + kCachedPowersDecimalDistance. + // The given decimal_exponent must satisfy + // kMinDecimalExponent <= requested_exponent, and + // requested_exponent < kMaxDecimalExponent + kDecimalExponentDistance. + static void GetCachedPowerForDecimalExponent(int requested_exponent, + DiyFp* power, + int* found_exponent); +}; + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_CACHED_POWERS_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/DoubleConversion/double-conversion/diy-fp.h b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/DoubleConversion/double-conversion/diy-fp.h new file mode 100644 index 0000000..9dcf8fb --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/DoubleConversion/double-conversion/diy-fp.h @@ -0,0 +1,118 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_DIY_FP_H_ +#define DOUBLE_CONVERSION_DIY_FP_H_ + +#include "utils.h" + +namespace double_conversion { + +// This "Do It Yourself Floating Point" class implements a floating-point number +// with a uint64 significand and an int exponent. Normalized DiyFp numbers will +// have the most significant bit of the significand set. +// Multiplication and Subtraction do not normalize their results. +// DiyFp are not designed to contain special doubles (NaN and Infinity). +class DiyFp { + public: + static const int kSignificandSize = 64; + + DiyFp() : f_(0), e_(0) {} + DiyFp(uint64_t f, int e) : f_(f), e_(e) {} + + // this = this - other. + // The exponents of both numbers must be the same and the significand of this + // must be bigger than the significand of other. + // The result will not be normalized. + void Subtract(const DiyFp& other) { + ASSERT(e_ == other.e_); + ASSERT(f_ >= other.f_); + f_ -= other.f_; + } + + // Returns a - b. + // The exponents of both numbers must be the same and this must be bigger + // than other. The result will not be normalized. + static DiyFp Minus(const DiyFp& a, const DiyFp& b) { + DiyFp result = a; + result.Subtract(b); + return result; + } + + + // this = this * other. + void Multiply(const DiyFp& other); + + // returns a * b; + static DiyFp Times(const DiyFp& a, const DiyFp& b) { + DiyFp result = a; + result.Multiply(b); + return result; + } + + void Normalize() { + ASSERT(f_ != 0); + uint64_t f = f_; + int e = e_; + + // This method is mainly called for normalizing boundaries. In general + // boundaries need to be shifted by 10 bits. We thus optimize for this case. + const uint64_t k10MSBits = UINT64_2PART_C(0xFFC00000, 00000000); + while ((f & k10MSBits) == 0) { + f <<= 10; + e -= 10; + } + while ((f & kUint64MSB) == 0) { + f <<= 1; + e--; + } + f_ = f; + e_ = e; + } + + static DiyFp Normalize(const DiyFp& a) { + DiyFp result = a; + result.Normalize(); + return result; + } + + uint64_t f() const { return f_; } + int e() const { return e_; } + + void set_f(uint64_t new_value) { f_ = new_value; } + void set_e(int new_value) { e_ = new_value; } + + private: + static const uint64_t kUint64MSB = UINT64_2PART_C(0x80000000, 00000000); + + uint64_t f_; + int e_; +}; + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_DIY_FP_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/DoubleConversion/double-conversion/double-conversion.h b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/DoubleConversion/double-conversion/double-conversion.h new file mode 100644 index 0000000..1c3387d --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/DoubleConversion/double-conversion/double-conversion.h @@ -0,0 +1,536 @@ +// Copyright 2012 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_DOUBLE_CONVERSION_H_ +#define DOUBLE_CONVERSION_DOUBLE_CONVERSION_H_ + +#include "utils.h" + +namespace double_conversion { + +class DoubleToStringConverter { + public: + // When calling ToFixed with a double > 10^kMaxFixedDigitsBeforePoint + // or a requested_digits parameter > kMaxFixedDigitsAfterPoint then the + // function returns false. + static const int kMaxFixedDigitsBeforePoint = 60; + static const int kMaxFixedDigitsAfterPoint = 60; + + // When calling ToExponential with a requested_digits + // parameter > kMaxExponentialDigits then the function returns false. + static const int kMaxExponentialDigits = 120; + + // When calling ToPrecision with a requested_digits + // parameter < kMinPrecisionDigits or requested_digits > kMaxPrecisionDigits + // then the function returns false. + static const int kMinPrecisionDigits = 1; + static const int kMaxPrecisionDigits = 120; + + enum Flags { + NO_FLAGS = 0, + EMIT_POSITIVE_EXPONENT_SIGN = 1, + EMIT_TRAILING_DECIMAL_POINT = 2, + EMIT_TRAILING_ZERO_AFTER_POINT = 4, + UNIQUE_ZERO = 8 + }; + + // Flags should be a bit-or combination of the possible Flags-enum. + // - NO_FLAGS: no special flags. + // - EMIT_POSITIVE_EXPONENT_SIGN: when the number is converted into exponent + // form, emits a '+' for positive exponents. Example: 1.2e+2. + // - EMIT_TRAILING_DECIMAL_POINT: when the input number is an integer and is + // converted into decimal format then a trailing decimal point is appended. + // Example: 2345.0 is converted to "2345.". + // - EMIT_TRAILING_ZERO_AFTER_POINT: in addition to a trailing decimal point + // emits a trailing '0'-character. This flag requires the + // EXMIT_TRAILING_DECIMAL_POINT flag. + // Example: 2345.0 is converted to "2345.0". + // - UNIQUE_ZERO: "-0.0" is converted to "0.0". + // + // Infinity symbol and nan_symbol provide the string representation for these + // special values. If the string is NULL and the special value is encountered + // then the conversion functions return false. + // + // The exponent_character is used in exponential representations. It is + // usually 'e' or 'E'. + // + // When converting to the shortest representation the converter will + // represent input numbers in decimal format if they are in the interval + // [10^decimal_in_shortest_low; 10^decimal_in_shortest_high[ + // (lower boundary included, greater boundary excluded). + // Example: with decimal_in_shortest_low = -6 and + // decimal_in_shortest_high = 21: + // ToShortest(0.000001) -> "0.000001" + // ToShortest(0.0000001) -> "1e-7" + // ToShortest(111111111111111111111.0) -> "111111111111111110000" + // ToShortest(100000000000000000000.0) -> "100000000000000000000" + // ToShortest(1111111111111111111111.0) -> "1.1111111111111111e+21" + // + // When converting to precision mode the converter may add + // max_leading_padding_zeroes before returning the number in exponential + // format. + // Example with max_leading_padding_zeroes_in_precision_mode = 6. + // ToPrecision(0.0000012345, 2) -> "0.0000012" + // ToPrecision(0.00000012345, 2) -> "1.2e-7" + // Similarily the converter may add up to + // max_trailing_padding_zeroes_in_precision_mode in precision mode to avoid + // returning an exponential representation. A zero added by the + // EMIT_TRAILING_ZERO_AFTER_POINT flag is counted for this limit. + // Examples for max_trailing_padding_zeroes_in_precision_mode = 1: + // ToPrecision(230.0, 2) -> "230" + // ToPrecision(230.0, 2) -> "230." with EMIT_TRAILING_DECIMAL_POINT. + // ToPrecision(230.0, 2) -> "2.3e2" with EMIT_TRAILING_ZERO_AFTER_POINT. + DoubleToStringConverter(int flags, + const char* infinity_symbol, + const char* nan_symbol, + char exponent_character, + int decimal_in_shortest_low, + int decimal_in_shortest_high, + int max_leading_padding_zeroes_in_precision_mode, + int max_trailing_padding_zeroes_in_precision_mode) + : flags_(flags), + infinity_symbol_(infinity_symbol), + nan_symbol_(nan_symbol), + exponent_character_(exponent_character), + decimal_in_shortest_low_(decimal_in_shortest_low), + decimal_in_shortest_high_(decimal_in_shortest_high), + max_leading_padding_zeroes_in_precision_mode_( + max_leading_padding_zeroes_in_precision_mode), + max_trailing_padding_zeroes_in_precision_mode_( + max_trailing_padding_zeroes_in_precision_mode) { + // When 'trailing zero after the point' is set, then 'trailing point' + // must be set too. + ASSERT(((flags & EMIT_TRAILING_DECIMAL_POINT) != 0) || + !((flags & EMIT_TRAILING_ZERO_AFTER_POINT) != 0)); + } + + // Returns a converter following the EcmaScript specification. + static const DoubleToStringConverter& EcmaScriptConverter(); + + // Computes the shortest string of digits that correctly represent the input + // number. Depending on decimal_in_shortest_low and decimal_in_shortest_high + // (see constructor) it then either returns a decimal representation, or an + // exponential representation. + // Example with decimal_in_shortest_low = -6, + // decimal_in_shortest_high = 21, + // EMIT_POSITIVE_EXPONENT_SIGN activated, and + // EMIT_TRAILING_DECIMAL_POINT deactived: + // ToShortest(0.000001) -> "0.000001" + // ToShortest(0.0000001) -> "1e-7" + // ToShortest(111111111111111111111.0) -> "111111111111111110000" + // ToShortest(100000000000000000000.0) -> "100000000000000000000" + // ToShortest(1111111111111111111111.0) -> "1.1111111111111111e+21" + // + // Note: the conversion may round the output if the returned string + // is accurate enough to uniquely identify the input-number. + // For example the most precise representation of the double 9e59 equals + // "899999999999999918767229449717619953810131273674690656206848", but + // the converter will return the shorter (but still correct) "9e59". + // + // Returns true if the conversion succeeds. The conversion always succeeds + // except when the input value is special and no infinity_symbol or + // nan_symbol has been given to the constructor. + bool ToShortest(double value, StringBuilder* result_builder) const { + return ToShortestIeeeNumber(value, result_builder, SHORTEST); + } + + // Same as ToShortest, but for single-precision floats. + bool ToShortestSingle(float value, StringBuilder* result_builder) const { + return ToShortestIeeeNumber(value, result_builder, SHORTEST_SINGLE); + } + + + // Computes a decimal representation with a fixed number of digits after the + // decimal point. The last emitted digit is rounded. + // + // Examples: + // ToFixed(3.12, 1) -> "3.1" + // ToFixed(3.1415, 3) -> "3.142" + // ToFixed(1234.56789, 4) -> "1234.5679" + // ToFixed(1.23, 5) -> "1.23000" + // ToFixed(0.1, 4) -> "0.1000" + // ToFixed(1e30, 2) -> "1000000000000000019884624838656.00" + // ToFixed(0.1, 30) -> "0.100000000000000005551115123126" + // ToFixed(0.1, 17) -> "0.10000000000000001" + // + // If requested_digits equals 0, then the tail of the result depends on + // the EMIT_TRAILING_DECIMAL_POINT and EMIT_TRAILING_ZERO_AFTER_POINT. + // Examples, for requested_digits == 0, + // let EMIT_TRAILING_DECIMAL_POINT and EMIT_TRAILING_ZERO_AFTER_POINT be + // - false and false: then 123.45 -> 123 + // 0.678 -> 1 + // - true and false: then 123.45 -> 123. + // 0.678 -> 1. + // - true and true: then 123.45 -> 123.0 + // 0.678 -> 1.0 + // + // Returns true if the conversion succeeds. The conversion always succeeds + // except for the following cases: + // - the input value is special and no infinity_symbol or nan_symbol has + // been provided to the constructor, + // - 'value' > 10^kMaxFixedDigitsBeforePoint, or + // - 'requested_digits' > kMaxFixedDigitsAfterPoint. + // The last two conditions imply that the result will never contain more than + // 1 + kMaxFixedDigitsBeforePoint + 1 + kMaxFixedDigitsAfterPoint characters + // (one additional character for the sign, and one for the decimal point). + bool ToFixed(double value, + int requested_digits, + StringBuilder* result_builder) const; + + // Computes a representation in exponential format with requested_digits + // after the decimal point. The last emitted digit is rounded. + // If requested_digits equals -1, then the shortest exponential representation + // is computed. + // + // Examples with EMIT_POSITIVE_EXPONENT_SIGN deactivated, and + // exponent_character set to 'e'. + // ToExponential(3.12, 1) -> "3.1e0" + // ToExponential(5.0, 3) -> "5.000e0" + // ToExponential(0.001, 2) -> "1.00e-3" + // ToExponential(3.1415, -1) -> "3.1415e0" + // ToExponential(3.1415, 4) -> "3.1415e0" + // ToExponential(3.1415, 3) -> "3.142e0" + // ToExponential(123456789000000, 3) -> "1.235e14" + // ToExponential(1000000000000000019884624838656.0, -1) -> "1e30" + // ToExponential(1000000000000000019884624838656.0, 32) -> + // "1.00000000000000001988462483865600e30" + // ToExponential(1234, 0) -> "1e3" + // + // Returns true if the conversion succeeds. The conversion always succeeds + // except for the following cases: + // - the input value is special and no infinity_symbol or nan_symbol has + // been provided to the constructor, + // - 'requested_digits' > kMaxExponentialDigits. + // The last condition implies that the result will never contain more than + // kMaxExponentialDigits + 8 characters (the sign, the digit before the + // decimal point, the decimal point, the exponent character, the + // exponent's sign, and at most 3 exponent digits). + bool ToExponential(double value, + int requested_digits, + StringBuilder* result_builder) const; + + // Computes 'precision' leading digits of the given 'value' and returns them + // either in exponential or decimal format, depending on + // max_{leading|trailing}_padding_zeroes_in_precision_mode (given to the + // constructor). + // The last computed digit is rounded. + // + // Example with max_leading_padding_zeroes_in_precision_mode = 6. + // ToPrecision(0.0000012345, 2) -> "0.0000012" + // ToPrecision(0.00000012345, 2) -> "1.2e-7" + // Similarily the converter may add up to + // max_trailing_padding_zeroes_in_precision_mode in precision mode to avoid + // returning an exponential representation. A zero added by the + // EMIT_TRAILING_ZERO_AFTER_POINT flag is counted for this limit. + // Examples for max_trailing_padding_zeroes_in_precision_mode = 1: + // ToPrecision(230.0, 2) -> "230" + // ToPrecision(230.0, 2) -> "230." with EMIT_TRAILING_DECIMAL_POINT. + // ToPrecision(230.0, 2) -> "2.3e2" with EMIT_TRAILING_ZERO_AFTER_POINT. + // Examples for max_trailing_padding_zeroes_in_precision_mode = 3, and no + // EMIT_TRAILING_ZERO_AFTER_POINT: + // ToPrecision(123450.0, 6) -> "123450" + // ToPrecision(123450.0, 5) -> "123450" + // ToPrecision(123450.0, 4) -> "123500" + // ToPrecision(123450.0, 3) -> "123000" + // ToPrecision(123450.0, 2) -> "1.2e5" + // + // Returns true if the conversion succeeds. The conversion always succeeds + // except for the following cases: + // - the input value is special and no infinity_symbol or nan_symbol has + // been provided to the constructor, + // - precision < kMinPericisionDigits + // - precision > kMaxPrecisionDigits + // The last condition implies that the result will never contain more than + // kMaxPrecisionDigits + 7 characters (the sign, the decimal point, the + // exponent character, the exponent's sign, and at most 3 exponent digits). + bool ToPrecision(double value, + int precision, + StringBuilder* result_builder) const; + + enum DtoaMode { + // Produce the shortest correct representation. + // For example the output of 0.299999999999999988897 is (the less accurate + // but correct) 0.3. + SHORTEST, + // Same as SHORTEST, but for single-precision floats. + SHORTEST_SINGLE, + // Produce a fixed number of digits after the decimal point. + // For instance fixed(0.1, 4) becomes 0.1000 + // If the input number is big, the output will be big. + FIXED, + // Fixed number of digits (independent of the decimal point). + PRECISION + }; + + // The maximal number of digits that are needed to emit a double in base 10. + // A higher precision can be achieved by using more digits, but the shortest + // accurate representation of any double will never use more digits than + // kBase10MaximalLength. + // Note that DoubleToAscii null-terminates its input. So the given buffer + // should be at least kBase10MaximalLength + 1 characters long. + static const int kBase10MaximalLength = 17; + + // Converts the given double 'v' to ascii. 'v' must not be NaN, +Infinity, or + // -Infinity. In SHORTEST_SINGLE-mode this restriction also applies to 'v' + // after it has been casted to a single-precision float. That is, in this + // mode static_cast(v) must not be NaN, +Infinity or -Infinity. + // + // The result should be interpreted as buffer * 10^(point-length). + // + // The output depends on the given mode: + // - SHORTEST: produce the least amount of digits for which the internal + // identity requirement is still satisfied. If the digits are printed + // (together with the correct exponent) then reading this number will give + // 'v' again. The buffer will choose the representation that is closest to + // 'v'. If there are two at the same distance, than the one farther away + // from 0 is chosen (halfway cases - ending with 5 - are rounded up). + // In this mode the 'requested_digits' parameter is ignored. + // - SHORTEST_SINGLE: same as SHORTEST but with single-precision. + // - FIXED: produces digits necessary to print a given number with + // 'requested_digits' digits after the decimal point. The produced digits + // might be too short in which case the caller has to fill the remainder + // with '0's. + // Example: toFixed(0.001, 5) is allowed to return buffer="1", point=-2. + // Halfway cases are rounded towards +/-Infinity (away from 0). The call + // toFixed(0.15, 2) thus returns buffer="2", point=0. + // The returned buffer may contain digits that would be truncated from the + // shortest representation of the input. + // - PRECISION: produces 'requested_digits' where the first digit is not '0'. + // Even though the length of produced digits usually equals + // 'requested_digits', the function is allowed to return fewer digits, in + // which case the caller has to fill the missing digits with '0's. + // Halfway cases are again rounded away from 0. + // DoubleToAscii expects the given buffer to be big enough to hold all + // digits and a terminating null-character. In SHORTEST-mode it expects a + // buffer of at least kBase10MaximalLength + 1. In all other modes the + // requested_digits parameter and the padding-zeroes limit the size of the + // output. Don't forget the decimal point, the exponent character and the + // terminating null-character when computing the maximal output size. + // The given length is only used in debug mode to ensure the buffer is big + // enough. + static void DoubleToAscii(double v, + DtoaMode mode, + int requested_digits, + char* buffer, + int buffer_length, + bool* sign, + int* length, + int* point); + + private: + // Implementation for ToShortest and ToShortestSingle. + bool ToShortestIeeeNumber(double value, + StringBuilder* result_builder, + DtoaMode mode) const; + + // If the value is a special value (NaN or Infinity) constructs the + // corresponding string using the configured infinity/nan-symbol. + // If either of them is NULL or the value is not special then the + // function returns false. + bool HandleSpecialValues(double value, StringBuilder* result_builder) const; + // Constructs an exponential representation (i.e. 1.234e56). + // The given exponent assumes a decimal point after the first decimal digit. + void CreateExponentialRepresentation(const char* decimal_digits, + int length, + int exponent, + StringBuilder* result_builder) const; + // Creates a decimal representation (i.e 1234.5678). + void CreateDecimalRepresentation(const char* decimal_digits, + int length, + int decimal_point, + int digits_after_point, + StringBuilder* result_builder) const; + + const int flags_; + const char* const infinity_symbol_; + const char* const nan_symbol_; + const char exponent_character_; + const int decimal_in_shortest_low_; + const int decimal_in_shortest_high_; + const int max_leading_padding_zeroes_in_precision_mode_; + const int max_trailing_padding_zeroes_in_precision_mode_; + + DISALLOW_IMPLICIT_CONSTRUCTORS(DoubleToStringConverter); +}; + + +class StringToDoubleConverter { + public: + // Enumeration for allowing octals and ignoring junk when converting + // strings to numbers. + enum Flags { + NO_FLAGS = 0, + ALLOW_HEX = 1, + ALLOW_OCTALS = 2, + ALLOW_TRAILING_JUNK = 4, + ALLOW_LEADING_SPACES = 8, + ALLOW_TRAILING_SPACES = 16, + ALLOW_SPACES_AFTER_SIGN = 32 + }; + + // Flags should be a bit-or combination of the possible Flags-enum. + // - NO_FLAGS: no special flags. + // - ALLOW_HEX: recognizes the prefix "0x". Hex numbers may only be integers. + // Ex: StringToDouble("0x1234") -> 4660.0 + // In StringToDouble("0x1234.56") the characters ".56" are trailing + // junk. The result of the call is hence dependent on + // the ALLOW_TRAILING_JUNK flag and/or the junk value. + // With this flag "0x" is a junk-string. Even with ALLOW_TRAILING_JUNK, + // the string will not be parsed as "0" followed by junk. + // + // - ALLOW_OCTALS: recognizes the prefix "0" for octals: + // If a sequence of octal digits starts with '0', then the number is + // read as octal integer. Octal numbers may only be integers. + // Ex: StringToDouble("01234") -> 668.0 + // StringToDouble("012349") -> 12349.0 // Not a sequence of octal + // // digits. + // In StringToDouble("01234.56") the characters ".56" are trailing + // junk. The result of the call is hence dependent on + // the ALLOW_TRAILING_JUNK flag and/or the junk value. + // In StringToDouble("01234e56") the characters "e56" are trailing + // junk, too. + // - ALLOW_TRAILING_JUNK: ignore trailing characters that are not part of + // a double literal. + // - ALLOW_LEADING_SPACES: skip over leading spaces. + // - ALLOW_TRAILING_SPACES: ignore trailing spaces. + // - ALLOW_SPACES_AFTER_SIGN: ignore spaces after the sign. + // Ex: StringToDouble("- 123.2") -> -123.2. + // StringToDouble("+ 123.2") -> 123.2 + // + // empty_string_value is returned when an empty string is given as input. + // If ALLOW_LEADING_SPACES or ALLOW_TRAILING_SPACES are set, then a string + // containing only spaces is converted to the 'empty_string_value', too. + // + // junk_string_value is returned when + // a) ALLOW_TRAILING_JUNK is not set, and a junk character (a character not + // part of a double-literal) is found. + // b) ALLOW_TRAILING_JUNK is set, but the string does not start with a + // double literal. + // + // infinity_symbol and nan_symbol are strings that are used to detect + // inputs that represent infinity and NaN. They can be null, in which case + // they are ignored. + // The conversion routine first reads any possible signs. Then it compares the + // following character of the input-string with the first character of + // the infinity, and nan-symbol. If either matches, the function assumes, that + // a match has been found, and expects the following input characters to match + // the remaining characters of the special-value symbol. + // This means that the following restrictions apply to special-value symbols: + // - they must not start with signs ('+', or '-'), + // - they must not have the same first character. + // - they must not start with digits. + // + // Examples: + // flags = ALLOW_HEX | ALLOW_TRAILING_JUNK, + // empty_string_value = 0.0, + // junk_string_value = NaN, + // infinity_symbol = "infinity", + // nan_symbol = "nan": + // StringToDouble("0x1234") -> 4660.0. + // StringToDouble("0x1234K") -> 4660.0. + // StringToDouble("") -> 0.0 // empty_string_value. + // StringToDouble(" ") -> NaN // junk_string_value. + // StringToDouble(" 1") -> NaN // junk_string_value. + // StringToDouble("0x") -> NaN // junk_string_value. + // StringToDouble("-123.45") -> -123.45. + // StringToDouble("--123.45") -> NaN // junk_string_value. + // StringToDouble("123e45") -> 123e45. + // StringToDouble("123E45") -> 123e45. + // StringToDouble("123e+45") -> 123e45. + // StringToDouble("123E-45") -> 123e-45. + // StringToDouble("123e") -> 123.0 // trailing junk ignored. + // StringToDouble("123e-") -> 123.0 // trailing junk ignored. + // StringToDouble("+NaN") -> NaN // NaN string literal. + // StringToDouble("-infinity") -> -inf. // infinity literal. + // StringToDouble("Infinity") -> NaN // junk_string_value. + // + // flags = ALLOW_OCTAL | ALLOW_LEADING_SPACES, + // empty_string_value = 0.0, + // junk_string_value = NaN, + // infinity_symbol = NULL, + // nan_symbol = NULL: + // StringToDouble("0x1234") -> NaN // junk_string_value. + // StringToDouble("01234") -> 668.0. + // StringToDouble("") -> 0.0 // empty_string_value. + // StringToDouble(" ") -> 0.0 // empty_string_value. + // StringToDouble(" 1") -> 1.0 + // StringToDouble("0x") -> NaN // junk_string_value. + // StringToDouble("0123e45") -> NaN // junk_string_value. + // StringToDouble("01239E45") -> 1239e45. + // StringToDouble("-infinity") -> NaN // junk_string_value. + // StringToDouble("NaN") -> NaN // junk_string_value. + StringToDoubleConverter(int flags, + double empty_string_value, + double junk_string_value, + const char* infinity_symbol, + const char* nan_symbol) + : flags_(flags), + empty_string_value_(empty_string_value), + junk_string_value_(junk_string_value), + infinity_symbol_(infinity_symbol), + nan_symbol_(nan_symbol) { + } + + // Performs the conversion. + // The output parameter 'processed_characters_count' is set to the number + // of characters that have been processed to read the number. + // Spaces than are processed with ALLOW_{LEADING|TRAILING}_SPACES are included + // in the 'processed_characters_count'. Trailing junk is never included. + double StringToDouble(const char* buffer, + int length, + int* processed_characters_count) const { + return StringToIeee(buffer, length, processed_characters_count, true); + } + + // Same as StringToDouble but reads a float. + // Note that this is not equivalent to static_cast(StringToDouble(...)) + // due to potential double-rounding. + float StringToFloat(const char* buffer, + int length, + int* processed_characters_count) const { + return static_cast(StringToIeee(buffer, length, + processed_characters_count, false)); + } + + private: + const int flags_; + const double empty_string_value_; + const double junk_string_value_; + const char* const infinity_symbol_; + const char* const nan_symbol_; + + double StringToIeee(const char* buffer, + int length, + int* processed_characters_count, + bool read_as_double) const; + + DISALLOW_IMPLICIT_CONSTRUCTORS(StringToDoubleConverter); +}; + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_DOUBLE_CONVERSION_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/DoubleConversion/double-conversion/fast-dtoa.h b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/DoubleConversion/double-conversion/fast-dtoa.h new file mode 100644 index 0000000..5f1e8ee --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/DoubleConversion/double-conversion/fast-dtoa.h @@ -0,0 +1,88 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_FAST_DTOA_H_ +#define DOUBLE_CONVERSION_FAST_DTOA_H_ + +#include "utils.h" + +namespace double_conversion { + +enum FastDtoaMode { + // Computes the shortest representation of the given input. The returned + // result will be the most accurate number of this length. Longer + // representations might be more accurate. + FAST_DTOA_SHORTEST, + // Same as FAST_DTOA_SHORTEST but for single-precision floats. + FAST_DTOA_SHORTEST_SINGLE, + // Computes a representation where the precision (number of digits) is + // given as input. The precision is independent of the decimal point. + FAST_DTOA_PRECISION +}; + +// FastDtoa will produce at most kFastDtoaMaximalLength digits. This does not +// include the terminating '\0' character. +static const int kFastDtoaMaximalLength = 17; +// Same for single-precision numbers. +static const int kFastDtoaMaximalSingleLength = 9; + +// Provides a decimal representation of v. +// The result should be interpreted as buffer * 10^(point - length). +// +// Precondition: +// * v must be a strictly positive finite double. +// +// Returns true if it succeeds, otherwise the result can not be trusted. +// There will be *length digits inside the buffer followed by a null terminator. +// If the function returns true and mode equals +// - FAST_DTOA_SHORTEST, then +// the parameter requested_digits is ignored. +// The result satisfies +// v == (double) (buffer * 10^(point - length)). +// The digits in the buffer are the shortest representation possible. E.g. +// if 0.099999999999 and 0.1 represent the same double then "1" is returned +// with point = 0. +// The last digit will be closest to the actual v. That is, even if several +// digits might correctly yield 'v' when read again, the buffer will contain +// the one closest to v. +// - FAST_DTOA_PRECISION, then +// the buffer contains requested_digits digits. +// the difference v - (buffer * 10^(point-length)) is closest to zero for +// all possible representations of requested_digits digits. +// If there are two values that are equally close, then FastDtoa returns +// false. +// For both modes the buffer must be large enough to hold the result. +bool FastDtoa(double d, + FastDtoaMode mode, + int requested_digits, + Vector buffer, + int* length, + int* decimal_point); + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_FAST_DTOA_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/DoubleConversion/double-conversion/fixed-dtoa.h b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/DoubleConversion/double-conversion/fixed-dtoa.h new file mode 100644 index 0000000..3bdd08e --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/DoubleConversion/double-conversion/fixed-dtoa.h @@ -0,0 +1,56 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_FIXED_DTOA_H_ +#define DOUBLE_CONVERSION_FIXED_DTOA_H_ + +#include "utils.h" + +namespace double_conversion { + +// Produces digits necessary to print a given number with +// 'fractional_count' digits after the decimal point. +// The buffer must be big enough to hold the result plus one terminating null +// character. +// +// The produced digits might be too short in which case the caller has to fill +// the gaps with '0's. +// Example: FastFixedDtoa(0.001, 5, ...) is allowed to return buffer = "1", and +// decimal_point = -2. +// Halfway cases are rounded towards +/-Infinity (away from 0). The call +// FastFixedDtoa(0.15, 2, ...) thus returns buffer = "2", decimal_point = 0. +// The returned buffer may contain digits that would be truncated from the +// shortest representation of the input. +// +// This method only works for some parameters. If it can't handle the input it +// returns false. The output is null-terminated when the function succeeds. +bool FastFixedDtoa(double v, int fractional_count, + Vector buffer, int* length, int* decimal_point); + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_FIXED_DTOA_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/DoubleConversion/double-conversion/ieee.h b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/DoubleConversion/double-conversion/ieee.h new file mode 100644 index 0000000..661141d --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/DoubleConversion/double-conversion/ieee.h @@ -0,0 +1,402 @@ +// Copyright 2012 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_DOUBLE_H_ +#define DOUBLE_CONVERSION_DOUBLE_H_ + +#include "diy-fp.h" + +namespace double_conversion { + +// We assume that doubles and uint64_t have the same endianness. +static uint64_t double_to_uint64(double d) { return BitCast(d); } +static double uint64_to_double(uint64_t d64) { return BitCast(d64); } +static uint32_t float_to_uint32(float f) { return BitCast(f); } +static float uint32_to_float(uint32_t d32) { return BitCast(d32); } + +// Helper functions for doubles. +class Double { + public: + static const uint64_t kSignMask = UINT64_2PART_C(0x80000000, 00000000); + static const uint64_t kExponentMask = UINT64_2PART_C(0x7FF00000, 00000000); + static const uint64_t kSignificandMask = UINT64_2PART_C(0x000FFFFF, FFFFFFFF); + static const uint64_t kHiddenBit = UINT64_2PART_C(0x00100000, 00000000); + static const int kPhysicalSignificandSize = 52; // Excludes the hidden bit. + static const int kSignificandSize = 53; + + Double() : d64_(0) {} + explicit Double(double d) : d64_(double_to_uint64(d)) {} + explicit Double(uint64_t d64) : d64_(d64) {} + explicit Double(DiyFp diy_fp) + : d64_(DiyFpToUint64(diy_fp)) {} + + // The value encoded by this Double must be greater or equal to +0.0. + // It must not be special (infinity, or NaN). + DiyFp AsDiyFp() const { + ASSERT(Sign() > 0); + ASSERT(!IsSpecial()); + return DiyFp(Significand(), Exponent()); + } + + // The value encoded by this Double must be strictly greater than 0. + DiyFp AsNormalizedDiyFp() const { + ASSERT(value() > 0.0); + uint64_t f = Significand(); + int e = Exponent(); + + // The current double could be a denormal. + while ((f & kHiddenBit) == 0) { + f <<= 1; + e--; + } + // Do the final shifts in one go. + f <<= DiyFp::kSignificandSize - kSignificandSize; + e -= DiyFp::kSignificandSize - kSignificandSize; + return DiyFp(f, e); + } + + // Returns the double's bit as uint64. + uint64_t AsUint64() const { + return d64_; + } + + // Returns the next greater double. Returns +infinity on input +infinity. + double NextDouble() const { + if (d64_ == kInfinity) return Double(kInfinity).value(); + if (Sign() < 0 && Significand() == 0) { + // -0.0 + return 0.0; + } + if (Sign() < 0) { + return Double(d64_ - 1).value(); + } else { + return Double(d64_ + 1).value(); + } + } + + double PreviousDouble() const { + if (d64_ == (kInfinity | kSignMask)) return -Double::Infinity(); + if (Sign() < 0) { + return Double(d64_ + 1).value(); + } else { + if (Significand() == 0) return -0.0; + return Double(d64_ - 1).value(); + } + } + + int Exponent() const { + if (IsDenormal()) return kDenormalExponent; + + uint64_t d64 = AsUint64(); + int biased_e = + static_cast((d64 & kExponentMask) >> kPhysicalSignificandSize); + return biased_e - kExponentBias; + } + + uint64_t Significand() const { + uint64_t d64 = AsUint64(); + uint64_t significand = d64 & kSignificandMask; + if (!IsDenormal()) { + return significand + kHiddenBit; + } else { + return significand; + } + } + + // Returns true if the double is a denormal. + bool IsDenormal() const { + uint64_t d64 = AsUint64(); + return (d64 & kExponentMask) == 0; + } + + // We consider denormals not to be special. + // Hence only Infinity and NaN are special. + bool IsSpecial() const { + uint64_t d64 = AsUint64(); + return (d64 & kExponentMask) == kExponentMask; + } + + bool IsNan() const { + uint64_t d64 = AsUint64(); + return ((d64 & kExponentMask) == kExponentMask) && + ((d64 & kSignificandMask) != 0); + } + + bool IsInfinite() const { + uint64_t d64 = AsUint64(); + return ((d64 & kExponentMask) == kExponentMask) && + ((d64 & kSignificandMask) == 0); + } + + int Sign() const { + uint64_t d64 = AsUint64(); + return (d64 & kSignMask) == 0? 1: -1; + } + + // Precondition: the value encoded by this Double must be greater or equal + // than +0.0. + DiyFp UpperBoundary() const { + ASSERT(Sign() > 0); + return DiyFp(Significand() * 2 + 1, Exponent() - 1); + } + + // Computes the two boundaries of this. + // The bigger boundary (m_plus) is normalized. The lower boundary has the same + // exponent as m_plus. + // Precondition: the value encoded by this Double must be greater than 0. + void NormalizedBoundaries(DiyFp* out_m_minus, DiyFp* out_m_plus) const { + ASSERT(value() > 0.0); + DiyFp v = this->AsDiyFp(); + DiyFp m_plus = DiyFp::Normalize(DiyFp((v.f() << 1) + 1, v.e() - 1)); + DiyFp m_minus; + if (LowerBoundaryIsCloser()) { + m_minus = DiyFp((v.f() << 2) - 1, v.e() - 2); + } else { + m_minus = DiyFp((v.f() << 1) - 1, v.e() - 1); + } + m_minus.set_f(m_minus.f() << (m_minus.e() - m_plus.e())); + m_minus.set_e(m_plus.e()); + *out_m_plus = m_plus; + *out_m_minus = m_minus; + } + + bool LowerBoundaryIsCloser() const { + // The boundary is closer if the significand is of the form f == 2^p-1 then + // the lower boundary is closer. + // Think of v = 1000e10 and v- = 9999e9. + // Then the boundary (== (v - v-)/2) is not just at a distance of 1e9 but + // at a distance of 1e8. + // The only exception is for the smallest normal: the largest denormal is + // at the same distance as its successor. + // Note: denormals have the same exponent as the smallest normals. + bool physical_significand_is_zero = ((AsUint64() & kSignificandMask) == 0); + return physical_significand_is_zero && (Exponent() != kDenormalExponent); + } + + double value() const { return uint64_to_double(d64_); } + + // Returns the significand size for a given order of magnitude. + // If v = f*2^e with 2^p-1 <= f <= 2^p then p+e is v's order of magnitude. + // This function returns the number of significant binary digits v will have + // once it's encoded into a double. In almost all cases this is equal to + // kSignificandSize. The only exceptions are denormals. They start with + // leading zeroes and their effective significand-size is hence smaller. + static int SignificandSizeForOrderOfMagnitude(int order) { + if (order >= (kDenormalExponent + kSignificandSize)) { + return kSignificandSize; + } + if (order <= kDenormalExponent) return 0; + return order - kDenormalExponent; + } + + static double Infinity() { + return Double(kInfinity).value(); + } + + static double NaN() { + return Double(kNaN).value(); + } + + private: + static const int kExponentBias = 0x3FF + kPhysicalSignificandSize; + static const int kDenormalExponent = -kExponentBias + 1; + static const int kMaxExponent = 0x7FF - kExponentBias; + static const uint64_t kInfinity = UINT64_2PART_C(0x7FF00000, 00000000); + static const uint64_t kNaN = UINT64_2PART_C(0x7FF80000, 00000000); + + const uint64_t d64_; + + static uint64_t DiyFpToUint64(DiyFp diy_fp) { + uint64_t significand = diy_fp.f(); + int exponent = diy_fp.e(); + while (significand > kHiddenBit + kSignificandMask) { + significand >>= 1; + exponent++; + } + if (exponent >= kMaxExponent) { + return kInfinity; + } + if (exponent < kDenormalExponent) { + return 0; + } + while (exponent > kDenormalExponent && (significand & kHiddenBit) == 0) { + significand <<= 1; + exponent--; + } + uint64_t biased_exponent; + if (exponent == kDenormalExponent && (significand & kHiddenBit) == 0) { + biased_exponent = 0; + } else { + biased_exponent = static_cast(exponent + kExponentBias); + } + return (significand & kSignificandMask) | + (biased_exponent << kPhysicalSignificandSize); + } + + DISALLOW_COPY_AND_ASSIGN(Double); +}; + +class Single { + public: + static const uint32_t kSignMask = 0x80000000; + static const uint32_t kExponentMask = 0x7F800000; + static const uint32_t kSignificandMask = 0x007FFFFF; + static const uint32_t kHiddenBit = 0x00800000; + static const int kPhysicalSignificandSize = 23; // Excludes the hidden bit. + static const int kSignificandSize = 24; + + Single() : d32_(0) {} + explicit Single(float f) : d32_(float_to_uint32(f)) {} + explicit Single(uint32_t d32) : d32_(d32) {} + + // The value encoded by this Single must be greater or equal to +0.0. + // It must not be special (infinity, or NaN). + DiyFp AsDiyFp() const { + ASSERT(Sign() > 0); + ASSERT(!IsSpecial()); + return DiyFp(Significand(), Exponent()); + } + + // Returns the single's bit as uint64. + uint32_t AsUint32() const { + return d32_; + } + + int Exponent() const { + if (IsDenormal()) return kDenormalExponent; + + uint32_t d32 = AsUint32(); + int biased_e = + static_cast((d32 & kExponentMask) >> kPhysicalSignificandSize); + return biased_e - kExponentBias; + } + + uint32_t Significand() const { + uint32_t d32 = AsUint32(); + uint32_t significand = d32 & kSignificandMask; + if (!IsDenormal()) { + return significand + kHiddenBit; + } else { + return significand; + } + } + + // Returns true if the single is a denormal. + bool IsDenormal() const { + uint32_t d32 = AsUint32(); + return (d32 & kExponentMask) == 0; + } + + // We consider denormals not to be special. + // Hence only Infinity and NaN are special. + bool IsSpecial() const { + uint32_t d32 = AsUint32(); + return (d32 & kExponentMask) == kExponentMask; + } + + bool IsNan() const { + uint32_t d32 = AsUint32(); + return ((d32 & kExponentMask) == kExponentMask) && + ((d32 & kSignificandMask) != 0); + } + + bool IsInfinite() const { + uint32_t d32 = AsUint32(); + return ((d32 & kExponentMask) == kExponentMask) && + ((d32 & kSignificandMask) == 0); + } + + int Sign() const { + uint32_t d32 = AsUint32(); + return (d32 & kSignMask) == 0? 1: -1; + } + + // Computes the two boundaries of this. + // The bigger boundary (m_plus) is normalized. The lower boundary has the same + // exponent as m_plus. + // Precondition: the value encoded by this Single must be greater than 0. + void NormalizedBoundaries(DiyFp* out_m_minus, DiyFp* out_m_plus) const { + ASSERT(value() > 0.0); + DiyFp v = this->AsDiyFp(); + DiyFp m_plus = DiyFp::Normalize(DiyFp((v.f() << 1) + 1, v.e() - 1)); + DiyFp m_minus; + if (LowerBoundaryIsCloser()) { + m_minus = DiyFp((v.f() << 2) - 1, v.e() - 2); + } else { + m_minus = DiyFp((v.f() << 1) - 1, v.e() - 1); + } + m_minus.set_f(m_minus.f() << (m_minus.e() - m_plus.e())); + m_minus.set_e(m_plus.e()); + *out_m_plus = m_plus; + *out_m_minus = m_minus; + } + + // Precondition: the value encoded by this Single must be greater or equal + // than +0.0. + DiyFp UpperBoundary() const { + ASSERT(Sign() > 0); + return DiyFp(Significand() * 2 + 1, Exponent() - 1); + } + + bool LowerBoundaryIsCloser() const { + // The boundary is closer if the significand is of the form f == 2^p-1 then + // the lower boundary is closer. + // Think of v = 1000e10 and v- = 9999e9. + // Then the boundary (== (v - v-)/2) is not just at a distance of 1e9 but + // at a distance of 1e8. + // The only exception is for the smallest normal: the largest denormal is + // at the same distance as its successor. + // Note: denormals have the same exponent as the smallest normals. + bool physical_significand_is_zero = ((AsUint32() & kSignificandMask) == 0); + return physical_significand_is_zero && (Exponent() != kDenormalExponent); + } + + float value() const { return uint32_to_float(d32_); } + + static float Infinity() { + return Single(kInfinity).value(); + } + + static float NaN() { + return Single(kNaN).value(); + } + + private: + static const int kExponentBias = 0x7F + kPhysicalSignificandSize; + static const int kDenormalExponent = -kExponentBias + 1; + static const int kMaxExponent = 0xFF - kExponentBias; + static const uint32_t kInfinity = 0x7F800000; + static const uint32_t kNaN = 0x7FC00000; + + const uint32_t d32_; + + DISALLOW_COPY_AND_ASSIGN(Single); +}; + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_DOUBLE_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/DoubleConversion/double-conversion/strtod.h b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/DoubleConversion/double-conversion/strtod.h new file mode 100644 index 0000000..ed0293b --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/DoubleConversion/double-conversion/strtod.h @@ -0,0 +1,45 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_STRTOD_H_ +#define DOUBLE_CONVERSION_STRTOD_H_ + +#include "utils.h" + +namespace double_conversion { + +// The buffer must only contain digits in the range [0-9]. It must not +// contain a dot or a sign. It must not start with '0', and must not be empty. +double Strtod(Vector buffer, int exponent); + +// The buffer must only contain digits in the range [0-9]. It must not +// contain a dot or a sign. It must not start with '0', and must not be empty. +float Strtof(Vector buffer, int exponent); + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_STRTOD_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/DoubleConversion/double-conversion/utils.h b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/DoubleConversion/double-conversion/utils.h new file mode 100644 index 0000000..a7c9b42 --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/DoubleConversion/double-conversion/utils.h @@ -0,0 +1,324 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_UTILS_H_ +#define DOUBLE_CONVERSION_UTILS_H_ + +#include +#include + +#include +#ifndef ASSERT +#define ASSERT(condition) \ + assert(condition); +#endif +#ifndef UNIMPLEMENTED +#define UNIMPLEMENTED() (abort()) +#endif +#ifndef UNREACHABLE +#define UNREACHABLE() (abort()) +#endif + +// Double operations detection based on target architecture. +// Linux uses a 80bit wide floating point stack on x86. This induces double +// rounding, which in turn leads to wrong results. +// An easy way to test if the floating-point operations are correct is to +// evaluate: 89255.0/1e22. If the floating-point stack is 64 bits wide then +// the result is equal to 89255e-22. +// The best way to test this, is to create a division-function and to compare +// the output of the division with the expected result. (Inlining must be +// disabled.) +// On Linux,x86 89255e-22 != Div_double(89255.0/1e22) +#if defined(_M_X64) || defined(__x86_64__) || \ + defined(__ARMEL__) || defined(__avr32__) || \ + defined(__hppa__) || defined(__ia64__) || \ + defined(__mips__) || \ + defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) || \ + defined(__sparc__) || defined(__sparc) || defined(__s390__) || \ + defined(__SH4__) || defined(__alpha__) || \ + defined(_MIPS_ARCH_MIPS32R2) || \ + defined(__AARCH64EL__) +#define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 +#elif defined(__mc68000__) +#undef DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS +#elif defined(_M_IX86) || defined(__i386__) || defined(__i386) +#if defined(_WIN32) +// Windows uses a 64bit wide floating point stack. +#define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 +#else +#undef DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS +#endif // _WIN32 +#else +#error Target architecture was not detected as supported by Double-Conversion. +#endif + +#if defined(__GNUC__) +#define DOUBLE_CONVERSION_UNUSED __attribute__((unused)) +#else +#define DOUBLE_CONVERSION_UNUSED +#endif + +#if defined(_WIN32) && !defined(__MINGW32__) + +typedef signed char int8_t; +typedef unsigned char uint8_t; +typedef short int16_t; // NOLINT +typedef unsigned short uint16_t; // NOLINT +typedef int int32_t; +typedef unsigned int uint32_t; +typedef __int64 int64_t; +typedef unsigned __int64 uint64_t; +// intptr_t and friends are defined in crtdefs.h through stdio.h. + +#else + +#include + +#endif + +// The following macro works on both 32 and 64-bit platforms. +// Usage: instead of writing 0x1234567890123456 +// write UINT64_2PART_C(0x12345678,90123456); +#define UINT64_2PART_C(a, b) (((static_cast(a) << 32) + 0x##b##u)) + + +// The expression ARRAY_SIZE(a) is a compile-time constant of type +// size_t which represents the number of elements of the given +// array. You should only use ARRAY_SIZE on statically allocated +// arrays. +#ifndef ARRAY_SIZE +#define ARRAY_SIZE(a) \ + ((sizeof(a) / sizeof(*(a))) / \ + static_cast(!(sizeof(a) % sizeof(*(a))))) +#endif + +// A macro to disallow the evil copy constructor and operator= functions +// This should be used in the private: declarations for a class +#ifndef DISALLOW_COPY_AND_ASSIGN +#define DISALLOW_COPY_AND_ASSIGN(TypeName) \ + TypeName(const TypeName&); \ + void operator=(const TypeName&) +#endif + +// A macro to disallow all the implicit constructors, namely the +// default constructor, copy constructor and operator= functions. +// +// This should be used in the private: declarations for a class +// that wants to prevent anyone from instantiating it. This is +// especially useful for classes containing only static methods. +#ifndef DISALLOW_IMPLICIT_CONSTRUCTORS +#define DISALLOW_IMPLICIT_CONSTRUCTORS(TypeName) \ + TypeName(); \ + DISALLOW_COPY_AND_ASSIGN(TypeName) +#endif + +namespace double_conversion { + +static const int kCharSize = sizeof(char); + +// Returns the maximum of the two parameters. +template +static T Max(T a, T b) { + return a < b ? b : a; +} + + +// Returns the minimum of the two parameters. +template +static T Min(T a, T b) { + return a < b ? a : b; +} + + +inline int StrLength(const char* string) { + size_t length = strlen(string); + ASSERT(length == static_cast(static_cast(length))); + return static_cast(length); +} + +// This is a simplified version of V8's Vector class. +template +class Vector { + public: + Vector() : start_(NULL), length_(0) {} + Vector(T* data, int length) : start_(data), length_(length) { + ASSERT(length == 0 || (length > 0 && data != NULL)); + } + + // Returns a vector using the same backing storage as this one, + // spanning from and including 'from', to but not including 'to'. + Vector SubVector(int from, int to) { + ASSERT(to <= length_); + ASSERT(from < to); + ASSERT(0 <= from); + return Vector(start() + from, to - from); + } + + // Returns the length of the vector. + int length() const { return length_; } + + // Returns whether or not the vector is empty. + bool is_empty() const { return length_ == 0; } + + // Returns the pointer to the start of the data in the vector. + T* start() const { return start_; } + + // Access individual vector elements - checks bounds in debug mode. + T& operator[](int index) const { + ASSERT(0 <= index && index < length_); + return start_[index]; + } + + T& first() { return start_[0]; } + + T& last() { return start_[length_ - 1]; } + + private: + T* start_; + int length_; +}; + + +// Helper class for building result strings in a character buffer. The +// purpose of the class is to use safe operations that checks the +// buffer bounds on all operations in debug mode. +class StringBuilder { + public: + StringBuilder(char* buffer, int size) + : buffer_(buffer, size), position_(0) { } + + ~StringBuilder() { if (!is_finalized()) Finalize(); } + + int size() const { return buffer_.length(); } + + // Get the current position in the builder. + int position() const { + ASSERT(!is_finalized()); + return position_; + } + + // Reset the position. + void Reset() { position_ = 0; } + + // Add a single character to the builder. It is not allowed to add + // 0-characters; use the Finalize() method to terminate the string + // instead. + void AddCharacter(char c) { + ASSERT(c != '\0'); + ASSERT(!is_finalized() && position_ < buffer_.length()); + buffer_[position_++] = c; + } + + // Add an entire string to the builder. Uses strlen() internally to + // compute the length of the input string. + void AddString(const char* s) { + AddSubstring(s, StrLength(s)); + } + + // Add the first 'n' characters of the given string 's' to the + // builder. The input string must have enough characters. + void AddSubstring(const char* s, int n) { + ASSERT(!is_finalized() && position_ + n < buffer_.length()); + ASSERT(static_cast(n) <= strlen(s)); + memmove(&buffer_[position_], s, n * kCharSize); + position_ += n; + } + + + // Add character padding to the builder. If count is non-positive, + // nothing is added to the builder. + void AddPadding(char c, int count) { + for (int i = 0; i < count; i++) { + AddCharacter(c); + } + } + + // Finalize the string by 0-terminating it and returning the buffer. + char* Finalize() { + ASSERT(!is_finalized() && position_ < buffer_.length()); + buffer_[position_] = '\0'; + // Make sure nobody managed to add a 0-character to the + // buffer while building the string. + ASSERT(strlen(buffer_.start()) == static_cast(position_)); + position_ = -1; + ASSERT(is_finalized()); + return buffer_.start(); + } + + private: + Vector buffer_; + int position_; + + bool is_finalized() const { return position_ < 0; } + + DISALLOW_IMPLICIT_CONSTRUCTORS(StringBuilder); +}; + +// The type-based aliasing rule allows the compiler to assume that pointers of +// different types (for some definition of different) never alias each other. +// Thus the following code does not work: +// +// float f = foo(); +// int fbits = *(int*)(&f); +// +// The compiler 'knows' that the int pointer can't refer to f since the types +// don't match, so the compiler may cache f in a register, leaving random data +// in fbits. Using C++ style casts makes no difference, however a pointer to +// char data is assumed to alias any other pointer. This is the 'memcpy +// exception'. +// +// Bit_cast uses the memcpy exception to move the bits from a variable of one +// type of a variable of another type. Of course the end result is likely to +// be implementation dependent. Most compilers (gcc-4.2 and MSVC 2005) +// will completely optimize BitCast away. +// +// There is an additional use for BitCast. +// Recent gccs will warn when they see casts that may result in breakage due to +// the type-based aliasing rule. If you have checked that there is no breakage +// you can use BitCast to cast one pointer type to another. This confuses gcc +// enough that it can no longer see that you have cast one pointer type to +// another thus avoiding the warning. +template +inline Dest BitCast(const Source& source) { + // Compile time assertion: sizeof(Dest) == sizeof(Source) + // A compile error here means your Dest and Source have different sizes. + DOUBLE_CONVERSION_UNUSED + typedef char VerifySizesAreEqual[sizeof(Dest) == sizeof(Source) ? 1 : -1]; + + Dest dest; + memmove(&dest, &source, sizeof(dest)); + return dest; +} + +template +inline Dest BitCast(Source* source) { + return BitCast(reinterpret_cast(source)); +} + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_UTILS_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/double-conversion/bignum-dtoa.h b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/double-conversion/bignum-dtoa.h new file mode 100644 index 0000000..34b9619 --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/double-conversion/bignum-dtoa.h @@ -0,0 +1,84 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_BIGNUM_DTOA_H_ +#define DOUBLE_CONVERSION_BIGNUM_DTOA_H_ + +#include "utils.h" + +namespace double_conversion { + +enum BignumDtoaMode { + // Return the shortest correct representation. + // For example the output of 0.299999999999999988897 is (the less accurate but + // correct) 0.3. + BIGNUM_DTOA_SHORTEST, + // Same as BIGNUM_DTOA_SHORTEST but for single-precision floats. + BIGNUM_DTOA_SHORTEST_SINGLE, + // Return a fixed number of digits after the decimal point. + // For instance fixed(0.1, 4) becomes 0.1000 + // If the input number is big, the output will be big. + BIGNUM_DTOA_FIXED, + // Return a fixed number of digits, no matter what the exponent is. + BIGNUM_DTOA_PRECISION +}; + +// Converts the given double 'v' to ascii. +// The result should be interpreted as buffer * 10^(point-length). +// The buffer will be null-terminated. +// +// The input v must be > 0 and different from NaN, and Infinity. +// +// The output depends on the given mode: +// - SHORTEST: produce the least amount of digits for which the internal +// identity requirement is still satisfied. If the digits are printed +// (together with the correct exponent) then reading this number will give +// 'v' again. The buffer will choose the representation that is closest to +// 'v'. If there are two at the same distance, than the number is round up. +// In this mode the 'requested_digits' parameter is ignored. +// - FIXED: produces digits necessary to print a given number with +// 'requested_digits' digits after the decimal point. The produced digits +// might be too short in which case the caller has to fill the gaps with '0's. +// Example: toFixed(0.001, 5) is allowed to return buffer="1", point=-2. +// Halfway cases are rounded up. The call toFixed(0.15, 2) thus returns +// buffer="2", point=0. +// Note: the length of the returned buffer has no meaning wrt the significance +// of its digits. That is, just because it contains '0's does not mean that +// any other digit would not satisfy the internal identity requirement. +// - PRECISION: produces 'requested_digits' where the first digit is not '0'. +// Even though the length of produced digits usually equals +// 'requested_digits', the function is allowed to return fewer digits, in +// which case the caller has to fill the missing digits with '0's. +// Halfway cases are again rounded up. +// 'BignumDtoa' expects the given buffer to be big enough to hold all digits +// and a terminating null-character. +void BignumDtoa(double v, BignumDtoaMode mode, int requested_digits, + Vector buffer, int* length, int* point); + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_BIGNUM_DTOA_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/double-conversion/bignum.h b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/double-conversion/bignum.h new file mode 100644 index 0000000..5ec3544 --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/double-conversion/bignum.h @@ -0,0 +1,145 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_BIGNUM_H_ +#define DOUBLE_CONVERSION_BIGNUM_H_ + +#include "utils.h" + +namespace double_conversion { + +class Bignum { + public: + // 3584 = 128 * 28. We can represent 2^3584 > 10^1000 accurately. + // This bignum can encode much bigger numbers, since it contains an + // exponent. + static const int kMaxSignificantBits = 3584; + + Bignum(); + void AssignUInt16(uint16_t value); + void AssignUInt64(uint64_t value); + void AssignBignum(const Bignum& other); + + void AssignDecimalString(Vector value); + void AssignHexString(Vector value); + + void AssignPowerUInt16(uint16_t base, int exponent); + + void AddUInt16(uint16_t operand); + void AddUInt64(uint64_t operand); + void AddBignum(const Bignum& other); + // Precondition: this >= other. + void SubtractBignum(const Bignum& other); + + void Square(); + void ShiftLeft(int shift_amount); + void MultiplyByUInt32(uint32_t factor); + void MultiplyByUInt64(uint64_t factor); + void MultiplyByPowerOfTen(int exponent); + void Times10() { return MultiplyByUInt32(10); } + // Pseudocode: + // int result = this / other; + // this = this % other; + // In the worst case this function is in O(this/other). + uint16_t DivideModuloIntBignum(const Bignum& other); + + bool ToHexString(char* buffer, int buffer_size) const; + + // Returns + // -1 if a < b, + // 0 if a == b, and + // +1 if a > b. + static int Compare(const Bignum& a, const Bignum& b); + static bool Equal(const Bignum& a, const Bignum& b) { + return Compare(a, b) == 0; + } + static bool LessEqual(const Bignum& a, const Bignum& b) { + return Compare(a, b) <= 0; + } + static bool Less(const Bignum& a, const Bignum& b) { + return Compare(a, b) < 0; + } + // Returns Compare(a + b, c); + static int PlusCompare(const Bignum& a, const Bignum& b, const Bignum& c); + // Returns a + b == c + static bool PlusEqual(const Bignum& a, const Bignum& b, const Bignum& c) { + return PlusCompare(a, b, c) == 0; + } + // Returns a + b <= c + static bool PlusLessEqual(const Bignum& a, const Bignum& b, const Bignum& c) { + return PlusCompare(a, b, c) <= 0; + } + // Returns a + b < c + static bool PlusLess(const Bignum& a, const Bignum& b, const Bignum& c) { + return PlusCompare(a, b, c) < 0; + } + private: + typedef uint32_t Chunk; + typedef uint64_t DoubleChunk; + + static const int kChunkSize = sizeof(Chunk) * 8; + static const int kDoubleChunkSize = sizeof(DoubleChunk) * 8; + // With bigit size of 28 we loose some bits, but a double still fits easily + // into two chunks, and more importantly we can use the Comba multiplication. + static const int kBigitSize = 28; + static const Chunk kBigitMask = (1 << kBigitSize) - 1; + // Every instance allocates kBigitLength chunks on the stack. Bignums cannot + // grow. There are no checks if the stack-allocated space is sufficient. + static const int kBigitCapacity = kMaxSignificantBits / kBigitSize; + + void EnsureCapacity(int size) { + if (size > kBigitCapacity) { + UNREACHABLE(); + } + } + void Align(const Bignum& other); + void Clamp(); + bool IsClamped() const; + void Zero(); + // Requires this to have enough capacity (no tests done). + // Updates used_digits_ if necessary. + // shift_amount must be < kBigitSize. + void BigitsShiftLeft(int shift_amount); + // BigitLength includes the "hidden" digits encoded in the exponent. + int BigitLength() const { return used_digits_ + exponent_; } + Chunk BigitAt(int index) const; + void SubtractTimes(const Bignum& other, int factor); + + Chunk bigits_buffer_[kBigitCapacity]; + // A vector backed by bigits_buffer_. This way accesses to the array are + // checked for out-of-bounds errors. + Vector bigits_; + int used_digits_; + // The Bignum's value equals value(bigits_) * 2^(exponent_ * kBigitSize). + int exponent_; + + DISALLOW_COPY_AND_ASSIGN(Bignum); +}; + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_BIGNUM_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/double-conversion/cached-powers.h b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/double-conversion/cached-powers.h new file mode 100644 index 0000000..61a5061 --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/double-conversion/cached-powers.h @@ -0,0 +1,64 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_CACHED_POWERS_H_ +#define DOUBLE_CONVERSION_CACHED_POWERS_H_ + +#include "diy-fp.h" + +namespace double_conversion { + +class PowersOfTenCache { + public: + + // Not all powers of ten are cached. The decimal exponent of two neighboring + // cached numbers will differ by kDecimalExponentDistance. + static const int kDecimalExponentDistance; + + static const int kMinDecimalExponent; + static const int kMaxDecimalExponent; + + // Returns a cached power-of-ten with a binary exponent in the range + // [min_exponent; max_exponent] (boundaries included). + static void GetCachedPowerForBinaryExponentRange(int min_exponent, + int max_exponent, + DiyFp* power, + int* decimal_exponent); + + // Returns a cached power of ten x ~= 10^k such that + // k <= decimal_exponent < k + kCachedPowersDecimalDistance. + // The given decimal_exponent must satisfy + // kMinDecimalExponent <= requested_exponent, and + // requested_exponent < kMaxDecimalExponent + kDecimalExponentDistance. + static void GetCachedPowerForDecimalExponent(int requested_exponent, + DiyFp* power, + int* found_exponent); +}; + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_CACHED_POWERS_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/double-conversion/diy-fp.h b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/double-conversion/diy-fp.h new file mode 100644 index 0000000..9dcf8fb --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/double-conversion/diy-fp.h @@ -0,0 +1,118 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_DIY_FP_H_ +#define DOUBLE_CONVERSION_DIY_FP_H_ + +#include "utils.h" + +namespace double_conversion { + +// This "Do It Yourself Floating Point" class implements a floating-point number +// with a uint64 significand and an int exponent. Normalized DiyFp numbers will +// have the most significant bit of the significand set. +// Multiplication and Subtraction do not normalize their results. +// DiyFp are not designed to contain special doubles (NaN and Infinity). +class DiyFp { + public: + static const int kSignificandSize = 64; + + DiyFp() : f_(0), e_(0) {} + DiyFp(uint64_t f, int e) : f_(f), e_(e) {} + + // this = this - other. + // The exponents of both numbers must be the same and the significand of this + // must be bigger than the significand of other. + // The result will not be normalized. + void Subtract(const DiyFp& other) { + ASSERT(e_ == other.e_); + ASSERT(f_ >= other.f_); + f_ -= other.f_; + } + + // Returns a - b. + // The exponents of both numbers must be the same and this must be bigger + // than other. The result will not be normalized. + static DiyFp Minus(const DiyFp& a, const DiyFp& b) { + DiyFp result = a; + result.Subtract(b); + return result; + } + + + // this = this * other. + void Multiply(const DiyFp& other); + + // returns a * b; + static DiyFp Times(const DiyFp& a, const DiyFp& b) { + DiyFp result = a; + result.Multiply(b); + return result; + } + + void Normalize() { + ASSERT(f_ != 0); + uint64_t f = f_; + int e = e_; + + // This method is mainly called for normalizing boundaries. In general + // boundaries need to be shifted by 10 bits. We thus optimize for this case. + const uint64_t k10MSBits = UINT64_2PART_C(0xFFC00000, 00000000); + while ((f & k10MSBits) == 0) { + f <<= 10; + e -= 10; + } + while ((f & kUint64MSB) == 0) { + f <<= 1; + e--; + } + f_ = f; + e_ = e; + } + + static DiyFp Normalize(const DiyFp& a) { + DiyFp result = a; + result.Normalize(); + return result; + } + + uint64_t f() const { return f_; } + int e() const { return e_; } + + void set_f(uint64_t new_value) { f_ = new_value; } + void set_e(int new_value) { e_ = new_value; } + + private: + static const uint64_t kUint64MSB = UINT64_2PART_C(0x80000000, 00000000); + + uint64_t f_; + int e_; +}; + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_DIY_FP_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/double-conversion/double-conversion.h b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/double-conversion/double-conversion.h new file mode 100644 index 0000000..1c3387d --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/double-conversion/double-conversion.h @@ -0,0 +1,536 @@ +// Copyright 2012 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_DOUBLE_CONVERSION_H_ +#define DOUBLE_CONVERSION_DOUBLE_CONVERSION_H_ + +#include "utils.h" + +namespace double_conversion { + +class DoubleToStringConverter { + public: + // When calling ToFixed with a double > 10^kMaxFixedDigitsBeforePoint + // or a requested_digits parameter > kMaxFixedDigitsAfterPoint then the + // function returns false. + static const int kMaxFixedDigitsBeforePoint = 60; + static const int kMaxFixedDigitsAfterPoint = 60; + + // When calling ToExponential with a requested_digits + // parameter > kMaxExponentialDigits then the function returns false. + static const int kMaxExponentialDigits = 120; + + // When calling ToPrecision with a requested_digits + // parameter < kMinPrecisionDigits or requested_digits > kMaxPrecisionDigits + // then the function returns false. + static const int kMinPrecisionDigits = 1; + static const int kMaxPrecisionDigits = 120; + + enum Flags { + NO_FLAGS = 0, + EMIT_POSITIVE_EXPONENT_SIGN = 1, + EMIT_TRAILING_DECIMAL_POINT = 2, + EMIT_TRAILING_ZERO_AFTER_POINT = 4, + UNIQUE_ZERO = 8 + }; + + // Flags should be a bit-or combination of the possible Flags-enum. + // - NO_FLAGS: no special flags. + // - EMIT_POSITIVE_EXPONENT_SIGN: when the number is converted into exponent + // form, emits a '+' for positive exponents. Example: 1.2e+2. + // - EMIT_TRAILING_DECIMAL_POINT: when the input number is an integer and is + // converted into decimal format then a trailing decimal point is appended. + // Example: 2345.0 is converted to "2345.". + // - EMIT_TRAILING_ZERO_AFTER_POINT: in addition to a trailing decimal point + // emits a trailing '0'-character. This flag requires the + // EXMIT_TRAILING_DECIMAL_POINT flag. + // Example: 2345.0 is converted to "2345.0". + // - UNIQUE_ZERO: "-0.0" is converted to "0.0". + // + // Infinity symbol and nan_symbol provide the string representation for these + // special values. If the string is NULL and the special value is encountered + // then the conversion functions return false. + // + // The exponent_character is used in exponential representations. It is + // usually 'e' or 'E'. + // + // When converting to the shortest representation the converter will + // represent input numbers in decimal format if they are in the interval + // [10^decimal_in_shortest_low; 10^decimal_in_shortest_high[ + // (lower boundary included, greater boundary excluded). + // Example: with decimal_in_shortest_low = -6 and + // decimal_in_shortest_high = 21: + // ToShortest(0.000001) -> "0.000001" + // ToShortest(0.0000001) -> "1e-7" + // ToShortest(111111111111111111111.0) -> "111111111111111110000" + // ToShortest(100000000000000000000.0) -> "100000000000000000000" + // ToShortest(1111111111111111111111.0) -> "1.1111111111111111e+21" + // + // When converting to precision mode the converter may add + // max_leading_padding_zeroes before returning the number in exponential + // format. + // Example with max_leading_padding_zeroes_in_precision_mode = 6. + // ToPrecision(0.0000012345, 2) -> "0.0000012" + // ToPrecision(0.00000012345, 2) -> "1.2e-7" + // Similarily the converter may add up to + // max_trailing_padding_zeroes_in_precision_mode in precision mode to avoid + // returning an exponential representation. A zero added by the + // EMIT_TRAILING_ZERO_AFTER_POINT flag is counted for this limit. + // Examples for max_trailing_padding_zeroes_in_precision_mode = 1: + // ToPrecision(230.0, 2) -> "230" + // ToPrecision(230.0, 2) -> "230." with EMIT_TRAILING_DECIMAL_POINT. + // ToPrecision(230.0, 2) -> "2.3e2" with EMIT_TRAILING_ZERO_AFTER_POINT. + DoubleToStringConverter(int flags, + const char* infinity_symbol, + const char* nan_symbol, + char exponent_character, + int decimal_in_shortest_low, + int decimal_in_shortest_high, + int max_leading_padding_zeroes_in_precision_mode, + int max_trailing_padding_zeroes_in_precision_mode) + : flags_(flags), + infinity_symbol_(infinity_symbol), + nan_symbol_(nan_symbol), + exponent_character_(exponent_character), + decimal_in_shortest_low_(decimal_in_shortest_low), + decimal_in_shortest_high_(decimal_in_shortest_high), + max_leading_padding_zeroes_in_precision_mode_( + max_leading_padding_zeroes_in_precision_mode), + max_trailing_padding_zeroes_in_precision_mode_( + max_trailing_padding_zeroes_in_precision_mode) { + // When 'trailing zero after the point' is set, then 'trailing point' + // must be set too. + ASSERT(((flags & EMIT_TRAILING_DECIMAL_POINT) != 0) || + !((flags & EMIT_TRAILING_ZERO_AFTER_POINT) != 0)); + } + + // Returns a converter following the EcmaScript specification. + static const DoubleToStringConverter& EcmaScriptConverter(); + + // Computes the shortest string of digits that correctly represent the input + // number. Depending on decimal_in_shortest_low and decimal_in_shortest_high + // (see constructor) it then either returns a decimal representation, or an + // exponential representation. + // Example with decimal_in_shortest_low = -6, + // decimal_in_shortest_high = 21, + // EMIT_POSITIVE_EXPONENT_SIGN activated, and + // EMIT_TRAILING_DECIMAL_POINT deactived: + // ToShortest(0.000001) -> "0.000001" + // ToShortest(0.0000001) -> "1e-7" + // ToShortest(111111111111111111111.0) -> "111111111111111110000" + // ToShortest(100000000000000000000.0) -> "100000000000000000000" + // ToShortest(1111111111111111111111.0) -> "1.1111111111111111e+21" + // + // Note: the conversion may round the output if the returned string + // is accurate enough to uniquely identify the input-number. + // For example the most precise representation of the double 9e59 equals + // "899999999999999918767229449717619953810131273674690656206848", but + // the converter will return the shorter (but still correct) "9e59". + // + // Returns true if the conversion succeeds. The conversion always succeeds + // except when the input value is special and no infinity_symbol or + // nan_symbol has been given to the constructor. + bool ToShortest(double value, StringBuilder* result_builder) const { + return ToShortestIeeeNumber(value, result_builder, SHORTEST); + } + + // Same as ToShortest, but for single-precision floats. + bool ToShortestSingle(float value, StringBuilder* result_builder) const { + return ToShortestIeeeNumber(value, result_builder, SHORTEST_SINGLE); + } + + + // Computes a decimal representation with a fixed number of digits after the + // decimal point. The last emitted digit is rounded. + // + // Examples: + // ToFixed(3.12, 1) -> "3.1" + // ToFixed(3.1415, 3) -> "3.142" + // ToFixed(1234.56789, 4) -> "1234.5679" + // ToFixed(1.23, 5) -> "1.23000" + // ToFixed(0.1, 4) -> "0.1000" + // ToFixed(1e30, 2) -> "1000000000000000019884624838656.00" + // ToFixed(0.1, 30) -> "0.100000000000000005551115123126" + // ToFixed(0.1, 17) -> "0.10000000000000001" + // + // If requested_digits equals 0, then the tail of the result depends on + // the EMIT_TRAILING_DECIMAL_POINT and EMIT_TRAILING_ZERO_AFTER_POINT. + // Examples, for requested_digits == 0, + // let EMIT_TRAILING_DECIMAL_POINT and EMIT_TRAILING_ZERO_AFTER_POINT be + // - false and false: then 123.45 -> 123 + // 0.678 -> 1 + // - true and false: then 123.45 -> 123. + // 0.678 -> 1. + // - true and true: then 123.45 -> 123.0 + // 0.678 -> 1.0 + // + // Returns true if the conversion succeeds. The conversion always succeeds + // except for the following cases: + // - the input value is special and no infinity_symbol or nan_symbol has + // been provided to the constructor, + // - 'value' > 10^kMaxFixedDigitsBeforePoint, or + // - 'requested_digits' > kMaxFixedDigitsAfterPoint. + // The last two conditions imply that the result will never contain more than + // 1 + kMaxFixedDigitsBeforePoint + 1 + kMaxFixedDigitsAfterPoint characters + // (one additional character for the sign, and one for the decimal point). + bool ToFixed(double value, + int requested_digits, + StringBuilder* result_builder) const; + + // Computes a representation in exponential format with requested_digits + // after the decimal point. The last emitted digit is rounded. + // If requested_digits equals -1, then the shortest exponential representation + // is computed. + // + // Examples with EMIT_POSITIVE_EXPONENT_SIGN deactivated, and + // exponent_character set to 'e'. + // ToExponential(3.12, 1) -> "3.1e0" + // ToExponential(5.0, 3) -> "5.000e0" + // ToExponential(0.001, 2) -> "1.00e-3" + // ToExponential(3.1415, -1) -> "3.1415e0" + // ToExponential(3.1415, 4) -> "3.1415e0" + // ToExponential(3.1415, 3) -> "3.142e0" + // ToExponential(123456789000000, 3) -> "1.235e14" + // ToExponential(1000000000000000019884624838656.0, -1) -> "1e30" + // ToExponential(1000000000000000019884624838656.0, 32) -> + // "1.00000000000000001988462483865600e30" + // ToExponential(1234, 0) -> "1e3" + // + // Returns true if the conversion succeeds. The conversion always succeeds + // except for the following cases: + // - the input value is special and no infinity_symbol or nan_symbol has + // been provided to the constructor, + // - 'requested_digits' > kMaxExponentialDigits. + // The last condition implies that the result will never contain more than + // kMaxExponentialDigits + 8 characters (the sign, the digit before the + // decimal point, the decimal point, the exponent character, the + // exponent's sign, and at most 3 exponent digits). + bool ToExponential(double value, + int requested_digits, + StringBuilder* result_builder) const; + + // Computes 'precision' leading digits of the given 'value' and returns them + // either in exponential or decimal format, depending on + // max_{leading|trailing}_padding_zeroes_in_precision_mode (given to the + // constructor). + // The last computed digit is rounded. + // + // Example with max_leading_padding_zeroes_in_precision_mode = 6. + // ToPrecision(0.0000012345, 2) -> "0.0000012" + // ToPrecision(0.00000012345, 2) -> "1.2e-7" + // Similarily the converter may add up to + // max_trailing_padding_zeroes_in_precision_mode in precision mode to avoid + // returning an exponential representation. A zero added by the + // EMIT_TRAILING_ZERO_AFTER_POINT flag is counted for this limit. + // Examples for max_trailing_padding_zeroes_in_precision_mode = 1: + // ToPrecision(230.0, 2) -> "230" + // ToPrecision(230.0, 2) -> "230." with EMIT_TRAILING_DECIMAL_POINT. + // ToPrecision(230.0, 2) -> "2.3e2" with EMIT_TRAILING_ZERO_AFTER_POINT. + // Examples for max_trailing_padding_zeroes_in_precision_mode = 3, and no + // EMIT_TRAILING_ZERO_AFTER_POINT: + // ToPrecision(123450.0, 6) -> "123450" + // ToPrecision(123450.0, 5) -> "123450" + // ToPrecision(123450.0, 4) -> "123500" + // ToPrecision(123450.0, 3) -> "123000" + // ToPrecision(123450.0, 2) -> "1.2e5" + // + // Returns true if the conversion succeeds. The conversion always succeeds + // except for the following cases: + // - the input value is special and no infinity_symbol or nan_symbol has + // been provided to the constructor, + // - precision < kMinPericisionDigits + // - precision > kMaxPrecisionDigits + // The last condition implies that the result will never contain more than + // kMaxPrecisionDigits + 7 characters (the sign, the decimal point, the + // exponent character, the exponent's sign, and at most 3 exponent digits). + bool ToPrecision(double value, + int precision, + StringBuilder* result_builder) const; + + enum DtoaMode { + // Produce the shortest correct representation. + // For example the output of 0.299999999999999988897 is (the less accurate + // but correct) 0.3. + SHORTEST, + // Same as SHORTEST, but for single-precision floats. + SHORTEST_SINGLE, + // Produce a fixed number of digits after the decimal point. + // For instance fixed(0.1, 4) becomes 0.1000 + // If the input number is big, the output will be big. + FIXED, + // Fixed number of digits (independent of the decimal point). + PRECISION + }; + + // The maximal number of digits that are needed to emit a double in base 10. + // A higher precision can be achieved by using more digits, but the shortest + // accurate representation of any double will never use more digits than + // kBase10MaximalLength. + // Note that DoubleToAscii null-terminates its input. So the given buffer + // should be at least kBase10MaximalLength + 1 characters long. + static const int kBase10MaximalLength = 17; + + // Converts the given double 'v' to ascii. 'v' must not be NaN, +Infinity, or + // -Infinity. In SHORTEST_SINGLE-mode this restriction also applies to 'v' + // after it has been casted to a single-precision float. That is, in this + // mode static_cast(v) must not be NaN, +Infinity or -Infinity. + // + // The result should be interpreted as buffer * 10^(point-length). + // + // The output depends on the given mode: + // - SHORTEST: produce the least amount of digits for which the internal + // identity requirement is still satisfied. If the digits are printed + // (together with the correct exponent) then reading this number will give + // 'v' again. The buffer will choose the representation that is closest to + // 'v'. If there are two at the same distance, than the one farther away + // from 0 is chosen (halfway cases - ending with 5 - are rounded up). + // In this mode the 'requested_digits' parameter is ignored. + // - SHORTEST_SINGLE: same as SHORTEST but with single-precision. + // - FIXED: produces digits necessary to print a given number with + // 'requested_digits' digits after the decimal point. The produced digits + // might be too short in which case the caller has to fill the remainder + // with '0's. + // Example: toFixed(0.001, 5) is allowed to return buffer="1", point=-2. + // Halfway cases are rounded towards +/-Infinity (away from 0). The call + // toFixed(0.15, 2) thus returns buffer="2", point=0. + // The returned buffer may contain digits that would be truncated from the + // shortest representation of the input. + // - PRECISION: produces 'requested_digits' where the first digit is not '0'. + // Even though the length of produced digits usually equals + // 'requested_digits', the function is allowed to return fewer digits, in + // which case the caller has to fill the missing digits with '0's. + // Halfway cases are again rounded away from 0. + // DoubleToAscii expects the given buffer to be big enough to hold all + // digits and a terminating null-character. In SHORTEST-mode it expects a + // buffer of at least kBase10MaximalLength + 1. In all other modes the + // requested_digits parameter and the padding-zeroes limit the size of the + // output. Don't forget the decimal point, the exponent character and the + // terminating null-character when computing the maximal output size. + // The given length is only used in debug mode to ensure the buffer is big + // enough. + static void DoubleToAscii(double v, + DtoaMode mode, + int requested_digits, + char* buffer, + int buffer_length, + bool* sign, + int* length, + int* point); + + private: + // Implementation for ToShortest and ToShortestSingle. + bool ToShortestIeeeNumber(double value, + StringBuilder* result_builder, + DtoaMode mode) const; + + // If the value is a special value (NaN or Infinity) constructs the + // corresponding string using the configured infinity/nan-symbol. + // If either of them is NULL or the value is not special then the + // function returns false. + bool HandleSpecialValues(double value, StringBuilder* result_builder) const; + // Constructs an exponential representation (i.e. 1.234e56). + // The given exponent assumes a decimal point after the first decimal digit. + void CreateExponentialRepresentation(const char* decimal_digits, + int length, + int exponent, + StringBuilder* result_builder) const; + // Creates a decimal representation (i.e 1234.5678). + void CreateDecimalRepresentation(const char* decimal_digits, + int length, + int decimal_point, + int digits_after_point, + StringBuilder* result_builder) const; + + const int flags_; + const char* const infinity_symbol_; + const char* const nan_symbol_; + const char exponent_character_; + const int decimal_in_shortest_low_; + const int decimal_in_shortest_high_; + const int max_leading_padding_zeroes_in_precision_mode_; + const int max_trailing_padding_zeroes_in_precision_mode_; + + DISALLOW_IMPLICIT_CONSTRUCTORS(DoubleToStringConverter); +}; + + +class StringToDoubleConverter { + public: + // Enumeration for allowing octals and ignoring junk when converting + // strings to numbers. + enum Flags { + NO_FLAGS = 0, + ALLOW_HEX = 1, + ALLOW_OCTALS = 2, + ALLOW_TRAILING_JUNK = 4, + ALLOW_LEADING_SPACES = 8, + ALLOW_TRAILING_SPACES = 16, + ALLOW_SPACES_AFTER_SIGN = 32 + }; + + // Flags should be a bit-or combination of the possible Flags-enum. + // - NO_FLAGS: no special flags. + // - ALLOW_HEX: recognizes the prefix "0x". Hex numbers may only be integers. + // Ex: StringToDouble("0x1234") -> 4660.0 + // In StringToDouble("0x1234.56") the characters ".56" are trailing + // junk. The result of the call is hence dependent on + // the ALLOW_TRAILING_JUNK flag and/or the junk value. + // With this flag "0x" is a junk-string. Even with ALLOW_TRAILING_JUNK, + // the string will not be parsed as "0" followed by junk. + // + // - ALLOW_OCTALS: recognizes the prefix "0" for octals: + // If a sequence of octal digits starts with '0', then the number is + // read as octal integer. Octal numbers may only be integers. + // Ex: StringToDouble("01234") -> 668.0 + // StringToDouble("012349") -> 12349.0 // Not a sequence of octal + // // digits. + // In StringToDouble("01234.56") the characters ".56" are trailing + // junk. The result of the call is hence dependent on + // the ALLOW_TRAILING_JUNK flag and/or the junk value. + // In StringToDouble("01234e56") the characters "e56" are trailing + // junk, too. + // - ALLOW_TRAILING_JUNK: ignore trailing characters that are not part of + // a double literal. + // - ALLOW_LEADING_SPACES: skip over leading spaces. + // - ALLOW_TRAILING_SPACES: ignore trailing spaces. + // - ALLOW_SPACES_AFTER_SIGN: ignore spaces after the sign. + // Ex: StringToDouble("- 123.2") -> -123.2. + // StringToDouble("+ 123.2") -> 123.2 + // + // empty_string_value is returned when an empty string is given as input. + // If ALLOW_LEADING_SPACES or ALLOW_TRAILING_SPACES are set, then a string + // containing only spaces is converted to the 'empty_string_value', too. + // + // junk_string_value is returned when + // a) ALLOW_TRAILING_JUNK is not set, and a junk character (a character not + // part of a double-literal) is found. + // b) ALLOW_TRAILING_JUNK is set, but the string does not start with a + // double literal. + // + // infinity_symbol and nan_symbol are strings that are used to detect + // inputs that represent infinity and NaN. They can be null, in which case + // they are ignored. + // The conversion routine first reads any possible signs. Then it compares the + // following character of the input-string with the first character of + // the infinity, and nan-symbol. If either matches, the function assumes, that + // a match has been found, and expects the following input characters to match + // the remaining characters of the special-value symbol. + // This means that the following restrictions apply to special-value symbols: + // - they must not start with signs ('+', or '-'), + // - they must not have the same first character. + // - they must not start with digits. + // + // Examples: + // flags = ALLOW_HEX | ALLOW_TRAILING_JUNK, + // empty_string_value = 0.0, + // junk_string_value = NaN, + // infinity_symbol = "infinity", + // nan_symbol = "nan": + // StringToDouble("0x1234") -> 4660.0. + // StringToDouble("0x1234K") -> 4660.0. + // StringToDouble("") -> 0.0 // empty_string_value. + // StringToDouble(" ") -> NaN // junk_string_value. + // StringToDouble(" 1") -> NaN // junk_string_value. + // StringToDouble("0x") -> NaN // junk_string_value. + // StringToDouble("-123.45") -> -123.45. + // StringToDouble("--123.45") -> NaN // junk_string_value. + // StringToDouble("123e45") -> 123e45. + // StringToDouble("123E45") -> 123e45. + // StringToDouble("123e+45") -> 123e45. + // StringToDouble("123E-45") -> 123e-45. + // StringToDouble("123e") -> 123.0 // trailing junk ignored. + // StringToDouble("123e-") -> 123.0 // trailing junk ignored. + // StringToDouble("+NaN") -> NaN // NaN string literal. + // StringToDouble("-infinity") -> -inf. // infinity literal. + // StringToDouble("Infinity") -> NaN // junk_string_value. + // + // flags = ALLOW_OCTAL | ALLOW_LEADING_SPACES, + // empty_string_value = 0.0, + // junk_string_value = NaN, + // infinity_symbol = NULL, + // nan_symbol = NULL: + // StringToDouble("0x1234") -> NaN // junk_string_value. + // StringToDouble("01234") -> 668.0. + // StringToDouble("") -> 0.0 // empty_string_value. + // StringToDouble(" ") -> 0.0 // empty_string_value. + // StringToDouble(" 1") -> 1.0 + // StringToDouble("0x") -> NaN // junk_string_value. + // StringToDouble("0123e45") -> NaN // junk_string_value. + // StringToDouble("01239E45") -> 1239e45. + // StringToDouble("-infinity") -> NaN // junk_string_value. + // StringToDouble("NaN") -> NaN // junk_string_value. + StringToDoubleConverter(int flags, + double empty_string_value, + double junk_string_value, + const char* infinity_symbol, + const char* nan_symbol) + : flags_(flags), + empty_string_value_(empty_string_value), + junk_string_value_(junk_string_value), + infinity_symbol_(infinity_symbol), + nan_symbol_(nan_symbol) { + } + + // Performs the conversion. + // The output parameter 'processed_characters_count' is set to the number + // of characters that have been processed to read the number. + // Spaces than are processed with ALLOW_{LEADING|TRAILING}_SPACES are included + // in the 'processed_characters_count'. Trailing junk is never included. + double StringToDouble(const char* buffer, + int length, + int* processed_characters_count) const { + return StringToIeee(buffer, length, processed_characters_count, true); + } + + // Same as StringToDouble but reads a float. + // Note that this is not equivalent to static_cast(StringToDouble(...)) + // due to potential double-rounding. + float StringToFloat(const char* buffer, + int length, + int* processed_characters_count) const { + return static_cast(StringToIeee(buffer, length, + processed_characters_count, false)); + } + + private: + const int flags_; + const double empty_string_value_; + const double junk_string_value_; + const char* const infinity_symbol_; + const char* const nan_symbol_; + + double StringToIeee(const char* buffer, + int length, + int* processed_characters_count, + bool read_as_double) const; + + DISALLOW_IMPLICIT_CONSTRUCTORS(StringToDoubleConverter); +}; + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_DOUBLE_CONVERSION_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/double-conversion/fast-dtoa.h b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/double-conversion/fast-dtoa.h new file mode 100644 index 0000000..5f1e8ee --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/double-conversion/fast-dtoa.h @@ -0,0 +1,88 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_FAST_DTOA_H_ +#define DOUBLE_CONVERSION_FAST_DTOA_H_ + +#include "utils.h" + +namespace double_conversion { + +enum FastDtoaMode { + // Computes the shortest representation of the given input. The returned + // result will be the most accurate number of this length. Longer + // representations might be more accurate. + FAST_DTOA_SHORTEST, + // Same as FAST_DTOA_SHORTEST but for single-precision floats. + FAST_DTOA_SHORTEST_SINGLE, + // Computes a representation where the precision (number of digits) is + // given as input. The precision is independent of the decimal point. + FAST_DTOA_PRECISION +}; + +// FastDtoa will produce at most kFastDtoaMaximalLength digits. This does not +// include the terminating '\0' character. +static const int kFastDtoaMaximalLength = 17; +// Same for single-precision numbers. +static const int kFastDtoaMaximalSingleLength = 9; + +// Provides a decimal representation of v. +// The result should be interpreted as buffer * 10^(point - length). +// +// Precondition: +// * v must be a strictly positive finite double. +// +// Returns true if it succeeds, otherwise the result can not be trusted. +// There will be *length digits inside the buffer followed by a null terminator. +// If the function returns true and mode equals +// - FAST_DTOA_SHORTEST, then +// the parameter requested_digits is ignored. +// The result satisfies +// v == (double) (buffer * 10^(point - length)). +// The digits in the buffer are the shortest representation possible. E.g. +// if 0.099999999999 and 0.1 represent the same double then "1" is returned +// with point = 0. +// The last digit will be closest to the actual v. That is, even if several +// digits might correctly yield 'v' when read again, the buffer will contain +// the one closest to v. +// - FAST_DTOA_PRECISION, then +// the buffer contains requested_digits digits. +// the difference v - (buffer * 10^(point-length)) is closest to zero for +// all possible representations of requested_digits digits. +// If there are two values that are equally close, then FastDtoa returns +// false. +// For both modes the buffer must be large enough to hold the result. +bool FastDtoa(double d, + FastDtoaMode mode, + int requested_digits, + Vector buffer, + int* length, + int* decimal_point); + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_FAST_DTOA_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/double-conversion/fixed-dtoa.h b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/double-conversion/fixed-dtoa.h new file mode 100644 index 0000000..3bdd08e --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/double-conversion/fixed-dtoa.h @@ -0,0 +1,56 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_FIXED_DTOA_H_ +#define DOUBLE_CONVERSION_FIXED_DTOA_H_ + +#include "utils.h" + +namespace double_conversion { + +// Produces digits necessary to print a given number with +// 'fractional_count' digits after the decimal point. +// The buffer must be big enough to hold the result plus one terminating null +// character. +// +// The produced digits might be too short in which case the caller has to fill +// the gaps with '0's. +// Example: FastFixedDtoa(0.001, 5, ...) is allowed to return buffer = "1", and +// decimal_point = -2. +// Halfway cases are rounded towards +/-Infinity (away from 0). The call +// FastFixedDtoa(0.15, 2, ...) thus returns buffer = "2", decimal_point = 0. +// The returned buffer may contain digits that would be truncated from the +// shortest representation of the input. +// +// This method only works for some parameters. If it can't handle the input it +// returns false. The output is null-terminated when the function succeeds. +bool FastFixedDtoa(double v, int fractional_count, + Vector buffer, int* length, int* decimal_point); + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_FIXED_DTOA_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/double-conversion/ieee.h b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/double-conversion/ieee.h new file mode 100644 index 0000000..661141d --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/double-conversion/ieee.h @@ -0,0 +1,402 @@ +// Copyright 2012 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_DOUBLE_H_ +#define DOUBLE_CONVERSION_DOUBLE_H_ + +#include "diy-fp.h" + +namespace double_conversion { + +// We assume that doubles and uint64_t have the same endianness. +static uint64_t double_to_uint64(double d) { return BitCast(d); } +static double uint64_to_double(uint64_t d64) { return BitCast(d64); } +static uint32_t float_to_uint32(float f) { return BitCast(f); } +static float uint32_to_float(uint32_t d32) { return BitCast(d32); } + +// Helper functions for doubles. +class Double { + public: + static const uint64_t kSignMask = UINT64_2PART_C(0x80000000, 00000000); + static const uint64_t kExponentMask = UINT64_2PART_C(0x7FF00000, 00000000); + static const uint64_t kSignificandMask = UINT64_2PART_C(0x000FFFFF, FFFFFFFF); + static const uint64_t kHiddenBit = UINT64_2PART_C(0x00100000, 00000000); + static const int kPhysicalSignificandSize = 52; // Excludes the hidden bit. + static const int kSignificandSize = 53; + + Double() : d64_(0) {} + explicit Double(double d) : d64_(double_to_uint64(d)) {} + explicit Double(uint64_t d64) : d64_(d64) {} + explicit Double(DiyFp diy_fp) + : d64_(DiyFpToUint64(diy_fp)) {} + + // The value encoded by this Double must be greater or equal to +0.0. + // It must not be special (infinity, or NaN). + DiyFp AsDiyFp() const { + ASSERT(Sign() > 0); + ASSERT(!IsSpecial()); + return DiyFp(Significand(), Exponent()); + } + + // The value encoded by this Double must be strictly greater than 0. + DiyFp AsNormalizedDiyFp() const { + ASSERT(value() > 0.0); + uint64_t f = Significand(); + int e = Exponent(); + + // The current double could be a denormal. + while ((f & kHiddenBit) == 0) { + f <<= 1; + e--; + } + // Do the final shifts in one go. + f <<= DiyFp::kSignificandSize - kSignificandSize; + e -= DiyFp::kSignificandSize - kSignificandSize; + return DiyFp(f, e); + } + + // Returns the double's bit as uint64. + uint64_t AsUint64() const { + return d64_; + } + + // Returns the next greater double. Returns +infinity on input +infinity. + double NextDouble() const { + if (d64_ == kInfinity) return Double(kInfinity).value(); + if (Sign() < 0 && Significand() == 0) { + // -0.0 + return 0.0; + } + if (Sign() < 0) { + return Double(d64_ - 1).value(); + } else { + return Double(d64_ + 1).value(); + } + } + + double PreviousDouble() const { + if (d64_ == (kInfinity | kSignMask)) return -Double::Infinity(); + if (Sign() < 0) { + return Double(d64_ + 1).value(); + } else { + if (Significand() == 0) return -0.0; + return Double(d64_ - 1).value(); + } + } + + int Exponent() const { + if (IsDenormal()) return kDenormalExponent; + + uint64_t d64 = AsUint64(); + int biased_e = + static_cast((d64 & kExponentMask) >> kPhysicalSignificandSize); + return biased_e - kExponentBias; + } + + uint64_t Significand() const { + uint64_t d64 = AsUint64(); + uint64_t significand = d64 & kSignificandMask; + if (!IsDenormal()) { + return significand + kHiddenBit; + } else { + return significand; + } + } + + // Returns true if the double is a denormal. + bool IsDenormal() const { + uint64_t d64 = AsUint64(); + return (d64 & kExponentMask) == 0; + } + + // We consider denormals not to be special. + // Hence only Infinity and NaN are special. + bool IsSpecial() const { + uint64_t d64 = AsUint64(); + return (d64 & kExponentMask) == kExponentMask; + } + + bool IsNan() const { + uint64_t d64 = AsUint64(); + return ((d64 & kExponentMask) == kExponentMask) && + ((d64 & kSignificandMask) != 0); + } + + bool IsInfinite() const { + uint64_t d64 = AsUint64(); + return ((d64 & kExponentMask) == kExponentMask) && + ((d64 & kSignificandMask) == 0); + } + + int Sign() const { + uint64_t d64 = AsUint64(); + return (d64 & kSignMask) == 0? 1: -1; + } + + // Precondition: the value encoded by this Double must be greater or equal + // than +0.0. + DiyFp UpperBoundary() const { + ASSERT(Sign() > 0); + return DiyFp(Significand() * 2 + 1, Exponent() - 1); + } + + // Computes the two boundaries of this. + // The bigger boundary (m_plus) is normalized. The lower boundary has the same + // exponent as m_plus. + // Precondition: the value encoded by this Double must be greater than 0. + void NormalizedBoundaries(DiyFp* out_m_minus, DiyFp* out_m_plus) const { + ASSERT(value() > 0.0); + DiyFp v = this->AsDiyFp(); + DiyFp m_plus = DiyFp::Normalize(DiyFp((v.f() << 1) + 1, v.e() - 1)); + DiyFp m_minus; + if (LowerBoundaryIsCloser()) { + m_minus = DiyFp((v.f() << 2) - 1, v.e() - 2); + } else { + m_minus = DiyFp((v.f() << 1) - 1, v.e() - 1); + } + m_minus.set_f(m_minus.f() << (m_minus.e() - m_plus.e())); + m_minus.set_e(m_plus.e()); + *out_m_plus = m_plus; + *out_m_minus = m_minus; + } + + bool LowerBoundaryIsCloser() const { + // The boundary is closer if the significand is of the form f == 2^p-1 then + // the lower boundary is closer. + // Think of v = 1000e10 and v- = 9999e9. + // Then the boundary (== (v - v-)/2) is not just at a distance of 1e9 but + // at a distance of 1e8. + // The only exception is for the smallest normal: the largest denormal is + // at the same distance as its successor. + // Note: denormals have the same exponent as the smallest normals. + bool physical_significand_is_zero = ((AsUint64() & kSignificandMask) == 0); + return physical_significand_is_zero && (Exponent() != kDenormalExponent); + } + + double value() const { return uint64_to_double(d64_); } + + // Returns the significand size for a given order of magnitude. + // If v = f*2^e with 2^p-1 <= f <= 2^p then p+e is v's order of magnitude. + // This function returns the number of significant binary digits v will have + // once it's encoded into a double. In almost all cases this is equal to + // kSignificandSize. The only exceptions are denormals. They start with + // leading zeroes and their effective significand-size is hence smaller. + static int SignificandSizeForOrderOfMagnitude(int order) { + if (order >= (kDenormalExponent + kSignificandSize)) { + return kSignificandSize; + } + if (order <= kDenormalExponent) return 0; + return order - kDenormalExponent; + } + + static double Infinity() { + return Double(kInfinity).value(); + } + + static double NaN() { + return Double(kNaN).value(); + } + + private: + static const int kExponentBias = 0x3FF + kPhysicalSignificandSize; + static const int kDenormalExponent = -kExponentBias + 1; + static const int kMaxExponent = 0x7FF - kExponentBias; + static const uint64_t kInfinity = UINT64_2PART_C(0x7FF00000, 00000000); + static const uint64_t kNaN = UINT64_2PART_C(0x7FF80000, 00000000); + + const uint64_t d64_; + + static uint64_t DiyFpToUint64(DiyFp diy_fp) { + uint64_t significand = diy_fp.f(); + int exponent = diy_fp.e(); + while (significand > kHiddenBit + kSignificandMask) { + significand >>= 1; + exponent++; + } + if (exponent >= kMaxExponent) { + return kInfinity; + } + if (exponent < kDenormalExponent) { + return 0; + } + while (exponent > kDenormalExponent && (significand & kHiddenBit) == 0) { + significand <<= 1; + exponent--; + } + uint64_t biased_exponent; + if (exponent == kDenormalExponent && (significand & kHiddenBit) == 0) { + biased_exponent = 0; + } else { + biased_exponent = static_cast(exponent + kExponentBias); + } + return (significand & kSignificandMask) | + (biased_exponent << kPhysicalSignificandSize); + } + + DISALLOW_COPY_AND_ASSIGN(Double); +}; + +class Single { + public: + static const uint32_t kSignMask = 0x80000000; + static const uint32_t kExponentMask = 0x7F800000; + static const uint32_t kSignificandMask = 0x007FFFFF; + static const uint32_t kHiddenBit = 0x00800000; + static const int kPhysicalSignificandSize = 23; // Excludes the hidden bit. + static const int kSignificandSize = 24; + + Single() : d32_(0) {} + explicit Single(float f) : d32_(float_to_uint32(f)) {} + explicit Single(uint32_t d32) : d32_(d32) {} + + // The value encoded by this Single must be greater or equal to +0.0. + // It must not be special (infinity, or NaN). + DiyFp AsDiyFp() const { + ASSERT(Sign() > 0); + ASSERT(!IsSpecial()); + return DiyFp(Significand(), Exponent()); + } + + // Returns the single's bit as uint64. + uint32_t AsUint32() const { + return d32_; + } + + int Exponent() const { + if (IsDenormal()) return kDenormalExponent; + + uint32_t d32 = AsUint32(); + int biased_e = + static_cast((d32 & kExponentMask) >> kPhysicalSignificandSize); + return biased_e - kExponentBias; + } + + uint32_t Significand() const { + uint32_t d32 = AsUint32(); + uint32_t significand = d32 & kSignificandMask; + if (!IsDenormal()) { + return significand + kHiddenBit; + } else { + return significand; + } + } + + // Returns true if the single is a denormal. + bool IsDenormal() const { + uint32_t d32 = AsUint32(); + return (d32 & kExponentMask) == 0; + } + + // We consider denormals not to be special. + // Hence only Infinity and NaN are special. + bool IsSpecial() const { + uint32_t d32 = AsUint32(); + return (d32 & kExponentMask) == kExponentMask; + } + + bool IsNan() const { + uint32_t d32 = AsUint32(); + return ((d32 & kExponentMask) == kExponentMask) && + ((d32 & kSignificandMask) != 0); + } + + bool IsInfinite() const { + uint32_t d32 = AsUint32(); + return ((d32 & kExponentMask) == kExponentMask) && + ((d32 & kSignificandMask) == 0); + } + + int Sign() const { + uint32_t d32 = AsUint32(); + return (d32 & kSignMask) == 0? 1: -1; + } + + // Computes the two boundaries of this. + // The bigger boundary (m_plus) is normalized. The lower boundary has the same + // exponent as m_plus. + // Precondition: the value encoded by this Single must be greater than 0. + void NormalizedBoundaries(DiyFp* out_m_minus, DiyFp* out_m_plus) const { + ASSERT(value() > 0.0); + DiyFp v = this->AsDiyFp(); + DiyFp m_plus = DiyFp::Normalize(DiyFp((v.f() << 1) + 1, v.e() - 1)); + DiyFp m_minus; + if (LowerBoundaryIsCloser()) { + m_minus = DiyFp((v.f() << 2) - 1, v.e() - 2); + } else { + m_minus = DiyFp((v.f() << 1) - 1, v.e() - 1); + } + m_minus.set_f(m_minus.f() << (m_minus.e() - m_plus.e())); + m_minus.set_e(m_plus.e()); + *out_m_plus = m_plus; + *out_m_minus = m_minus; + } + + // Precondition: the value encoded by this Single must be greater or equal + // than +0.0. + DiyFp UpperBoundary() const { + ASSERT(Sign() > 0); + return DiyFp(Significand() * 2 + 1, Exponent() - 1); + } + + bool LowerBoundaryIsCloser() const { + // The boundary is closer if the significand is of the form f == 2^p-1 then + // the lower boundary is closer. + // Think of v = 1000e10 and v- = 9999e9. + // Then the boundary (== (v - v-)/2) is not just at a distance of 1e9 but + // at a distance of 1e8. + // The only exception is for the smallest normal: the largest denormal is + // at the same distance as its successor. + // Note: denormals have the same exponent as the smallest normals. + bool physical_significand_is_zero = ((AsUint32() & kSignificandMask) == 0); + return physical_significand_is_zero && (Exponent() != kDenormalExponent); + } + + float value() const { return uint32_to_float(d32_); } + + static float Infinity() { + return Single(kInfinity).value(); + } + + static float NaN() { + return Single(kNaN).value(); + } + + private: + static const int kExponentBias = 0x7F + kPhysicalSignificandSize; + static const int kDenormalExponent = -kExponentBias + 1; + static const int kMaxExponent = 0xFF - kExponentBias; + static const uint32_t kInfinity = 0x7F800000; + static const uint32_t kNaN = 0x7FC00000; + + const uint32_t d32_; + + DISALLOW_COPY_AND_ASSIGN(Single); +}; + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_DOUBLE_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/double-conversion/strtod.h b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/double-conversion/strtod.h new file mode 100644 index 0000000..ed0293b --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/double-conversion/strtod.h @@ -0,0 +1,45 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_STRTOD_H_ +#define DOUBLE_CONVERSION_STRTOD_H_ + +#include "utils.h" + +namespace double_conversion { + +// The buffer must only contain digits in the range [0-9]. It must not +// contain a dot or a sign. It must not start with '0', and must not be empty. +double Strtod(Vector buffer, int exponent); + +// The buffer must only contain digits in the range [0-9]. It must not +// contain a dot or a sign. It must not start with '0', and must not be empty. +float Strtof(Vector buffer, int exponent); + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_STRTOD_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/double-conversion/utils.h b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/double-conversion/utils.h new file mode 100644 index 0000000..a7c9b42 --- /dev/null +++ b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/Headers/double-conversion/utils.h @@ -0,0 +1,324 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef DOUBLE_CONVERSION_UTILS_H_ +#define DOUBLE_CONVERSION_UTILS_H_ + +#include +#include + +#include +#ifndef ASSERT +#define ASSERT(condition) \ + assert(condition); +#endif +#ifndef UNIMPLEMENTED +#define UNIMPLEMENTED() (abort()) +#endif +#ifndef UNREACHABLE +#define UNREACHABLE() (abort()) +#endif + +// Double operations detection based on target architecture. +// Linux uses a 80bit wide floating point stack on x86. This induces double +// rounding, which in turn leads to wrong results. +// An easy way to test if the floating-point operations are correct is to +// evaluate: 89255.0/1e22. If the floating-point stack is 64 bits wide then +// the result is equal to 89255e-22. +// The best way to test this, is to create a division-function and to compare +// the output of the division with the expected result. (Inlining must be +// disabled.) +// On Linux,x86 89255e-22 != Div_double(89255.0/1e22) +#if defined(_M_X64) || defined(__x86_64__) || \ + defined(__ARMEL__) || defined(__avr32__) || \ + defined(__hppa__) || defined(__ia64__) || \ + defined(__mips__) || \ + defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) || \ + defined(__sparc__) || defined(__sparc) || defined(__s390__) || \ + defined(__SH4__) || defined(__alpha__) || \ + defined(_MIPS_ARCH_MIPS32R2) || \ + defined(__AARCH64EL__) +#define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 +#elif defined(__mc68000__) +#undef DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS +#elif defined(_M_IX86) || defined(__i386__) || defined(__i386) +#if defined(_WIN32) +// Windows uses a 64bit wide floating point stack. +#define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 +#else +#undef DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS +#endif // _WIN32 +#else +#error Target architecture was not detected as supported by Double-Conversion. +#endif + +#if defined(__GNUC__) +#define DOUBLE_CONVERSION_UNUSED __attribute__((unused)) +#else +#define DOUBLE_CONVERSION_UNUSED +#endif + +#if defined(_WIN32) && !defined(__MINGW32__) + +typedef signed char int8_t; +typedef unsigned char uint8_t; +typedef short int16_t; // NOLINT +typedef unsigned short uint16_t; // NOLINT +typedef int int32_t; +typedef unsigned int uint32_t; +typedef __int64 int64_t; +typedef unsigned __int64 uint64_t; +// intptr_t and friends are defined in crtdefs.h through stdio.h. + +#else + +#include + +#endif + +// The following macro works on both 32 and 64-bit platforms. +// Usage: instead of writing 0x1234567890123456 +// write UINT64_2PART_C(0x12345678,90123456); +#define UINT64_2PART_C(a, b) (((static_cast(a) << 32) + 0x##b##u)) + + +// The expression ARRAY_SIZE(a) is a compile-time constant of type +// size_t which represents the number of elements of the given +// array. You should only use ARRAY_SIZE on statically allocated +// arrays. +#ifndef ARRAY_SIZE +#define ARRAY_SIZE(a) \ + ((sizeof(a) / sizeof(*(a))) / \ + static_cast(!(sizeof(a) % sizeof(*(a))))) +#endif + +// A macro to disallow the evil copy constructor and operator= functions +// This should be used in the private: declarations for a class +#ifndef DISALLOW_COPY_AND_ASSIGN +#define DISALLOW_COPY_AND_ASSIGN(TypeName) \ + TypeName(const TypeName&); \ + void operator=(const TypeName&) +#endif + +// A macro to disallow all the implicit constructors, namely the +// default constructor, copy constructor and operator= functions. +// +// This should be used in the private: declarations for a class +// that wants to prevent anyone from instantiating it. This is +// especially useful for classes containing only static methods. +#ifndef DISALLOW_IMPLICIT_CONSTRUCTORS +#define DISALLOW_IMPLICIT_CONSTRUCTORS(TypeName) \ + TypeName(); \ + DISALLOW_COPY_AND_ASSIGN(TypeName) +#endif + +namespace double_conversion { + +static const int kCharSize = sizeof(char); + +// Returns the maximum of the two parameters. +template +static T Max(T a, T b) { + return a < b ? b : a; +} + + +// Returns the minimum of the two parameters. +template +static T Min(T a, T b) { + return a < b ? a : b; +} + + +inline int StrLength(const char* string) { + size_t length = strlen(string); + ASSERT(length == static_cast(static_cast(length))); + return static_cast(length); +} + +// This is a simplified version of V8's Vector class. +template +class Vector { + public: + Vector() : start_(NULL), length_(0) {} + Vector(T* data, int length) : start_(data), length_(length) { + ASSERT(length == 0 || (length > 0 && data != NULL)); + } + + // Returns a vector using the same backing storage as this one, + // spanning from and including 'from', to but not including 'to'. + Vector SubVector(int from, int to) { + ASSERT(to <= length_); + ASSERT(from < to); + ASSERT(0 <= from); + return Vector(start() + from, to - from); + } + + // Returns the length of the vector. + int length() const { return length_; } + + // Returns whether or not the vector is empty. + bool is_empty() const { return length_ == 0; } + + // Returns the pointer to the start of the data in the vector. + T* start() const { return start_; } + + // Access individual vector elements - checks bounds in debug mode. + T& operator[](int index) const { + ASSERT(0 <= index && index < length_); + return start_[index]; + } + + T& first() { return start_[0]; } + + T& last() { return start_[length_ - 1]; } + + private: + T* start_; + int length_; +}; + + +// Helper class for building result strings in a character buffer. The +// purpose of the class is to use safe operations that checks the +// buffer bounds on all operations in debug mode. +class StringBuilder { + public: + StringBuilder(char* buffer, int size) + : buffer_(buffer, size), position_(0) { } + + ~StringBuilder() { if (!is_finalized()) Finalize(); } + + int size() const { return buffer_.length(); } + + // Get the current position in the builder. + int position() const { + ASSERT(!is_finalized()); + return position_; + } + + // Reset the position. + void Reset() { position_ = 0; } + + // Add a single character to the builder. It is not allowed to add + // 0-characters; use the Finalize() method to terminate the string + // instead. + void AddCharacter(char c) { + ASSERT(c != '\0'); + ASSERT(!is_finalized() && position_ < buffer_.length()); + buffer_[position_++] = c; + } + + // Add an entire string to the builder. Uses strlen() internally to + // compute the length of the input string. + void AddString(const char* s) { + AddSubstring(s, StrLength(s)); + } + + // Add the first 'n' characters of the given string 's' to the + // builder. The input string must have enough characters. + void AddSubstring(const char* s, int n) { + ASSERT(!is_finalized() && position_ + n < buffer_.length()); + ASSERT(static_cast(n) <= strlen(s)); + memmove(&buffer_[position_], s, n * kCharSize); + position_ += n; + } + + + // Add character padding to the builder. If count is non-positive, + // nothing is added to the builder. + void AddPadding(char c, int count) { + for (int i = 0; i < count; i++) { + AddCharacter(c); + } + } + + // Finalize the string by 0-terminating it and returning the buffer. + char* Finalize() { + ASSERT(!is_finalized() && position_ < buffer_.length()); + buffer_[position_] = '\0'; + // Make sure nobody managed to add a 0-character to the + // buffer while building the string. + ASSERT(strlen(buffer_.start()) == static_cast(position_)); + position_ = -1; + ASSERT(is_finalized()); + return buffer_.start(); + } + + private: + Vector buffer_; + int position_; + + bool is_finalized() const { return position_ < 0; } + + DISALLOW_IMPLICIT_CONSTRUCTORS(StringBuilder); +}; + +// The type-based aliasing rule allows the compiler to assume that pointers of +// different types (for some definition of different) never alias each other. +// Thus the following code does not work: +// +// float f = foo(); +// int fbits = *(int*)(&f); +// +// The compiler 'knows' that the int pointer can't refer to f since the types +// don't match, so the compiler may cache f in a register, leaving random data +// in fbits. Using C++ style casts makes no difference, however a pointer to +// char data is assumed to alias any other pointer. This is the 'memcpy +// exception'. +// +// Bit_cast uses the memcpy exception to move the bits from a variable of one +// type of a variable of another type. Of course the end result is likely to +// be implementation dependent. Most compilers (gcc-4.2 and MSVC 2005) +// will completely optimize BitCast away. +// +// There is an additional use for BitCast. +// Recent gccs will warn when they see casts that may result in breakage due to +// the type-based aliasing rule. If you have checked that there is no breakage +// you can use BitCast to cast one pointer type to another. This confuses gcc +// enough that it can no longer see that you have cast one pointer type to +// another thus avoiding the warning. +template +inline Dest BitCast(const Source& source) { + // Compile time assertion: sizeof(Dest) == sizeof(Source) + // A compile error here means your Dest and Source have different sizes. + DOUBLE_CONVERSION_UNUSED + typedef char VerifySizesAreEqual[sizeof(Dest) == sizeof(Source) ? 1 : -1]; + + Dest dest; + memmove(&dest, &source, sizeof(dest)); + return dest; +} + +template +inline Dest BitCast(Source* source) { + return BitCast(reinterpret_cast(source)); +} + +} // namespace double_conversion + +#endif // DOUBLE_CONVERSION_UTILS_H_ diff --git a/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/libDoubleConversion.a b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/libDoubleConversion.a new file mode 100644 index 0000000..75d3c09 Binary files /dev/null and b/Frameworks/DoubleConversion.xcframework/ios-arm64_x86_64-simulator/libDoubleConversion.a differ diff --git a/Frameworks/DynamicFonts.xcframework/Info.plist b/Frameworks/DynamicFonts.xcframework/Info.plist new file mode 100644 index 0000000..96aff49 --- /dev/null +++ b/Frameworks/DynamicFonts.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libDynamicFonts.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libDynamicFonts.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libDynamicFonts.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libDynamicFonts.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/DynamicFonts.xcframework/ios-arm64/Headers/DynamicFonts.h b/Frameworks/DynamicFonts.xcframework/ios-arm64/Headers/DynamicFonts.h new file mode 100644 index 0000000..2c0e21b --- /dev/null +++ b/Frameworks/DynamicFonts.xcframework/ios-arm64/Headers/DynamicFonts.h @@ -0,0 +1,12 @@ +/** + * Copyright (c) 2017-present, Wyatt Greenway. All rights reserved. + * + * This source code is licensed under the MIT license found in the LICENSE file in the root + * directory of this source tree. + */ + +#import + +@interface DynamicFonts: NSObject + +@end diff --git a/Frameworks/DynamicFonts.xcframework/ios-arm64/libDynamicFonts.a b/Frameworks/DynamicFonts.xcframework/ios-arm64/libDynamicFonts.a new file mode 100644 index 0000000..abe355f Binary files /dev/null and b/Frameworks/DynamicFonts.xcframework/ios-arm64/libDynamicFonts.a differ diff --git a/Frameworks/DynamicFonts.xcframework/ios-arm64_x86_64-simulator/Headers/DynamicFonts.h b/Frameworks/DynamicFonts.xcframework/ios-arm64_x86_64-simulator/Headers/DynamicFonts.h new file mode 100644 index 0000000..2c0e21b --- /dev/null +++ b/Frameworks/DynamicFonts.xcframework/ios-arm64_x86_64-simulator/Headers/DynamicFonts.h @@ -0,0 +1,12 @@ +/** + * Copyright (c) 2017-present, Wyatt Greenway. All rights reserved. + * + * This source code is licensed under the MIT license found in the LICENSE file in the root + * directory of this source tree. + */ + +#import + +@interface DynamicFonts: NSObject + +@end diff --git a/Frameworks/DynamicFonts.xcframework/ios-arm64_x86_64-simulator/libDynamicFonts.a b/Frameworks/DynamicFonts.xcframework/ios-arm64_x86_64-simulator/libDynamicFonts.a new file mode 100644 index 0000000..9cd5eec Binary files /dev/null and b/Frameworks/DynamicFonts.xcframework/ios-arm64_x86_64-simulator/libDynamicFonts.a differ diff --git a/Frameworks/FBReactNativeSpec.xcframework/Info.plist b/Frameworks/FBReactNativeSpec.xcframework/Info.plist new file mode 100644 index 0000000..605d372 --- /dev/null +++ b/Frameworks/FBReactNativeSpec.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libFBReactNativeSpec.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libFBReactNativeSpec.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libFBReactNativeSpec.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libFBReactNativeSpec.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/FBReactNativeSpec.xcframework/ios-arm64/Headers/FBReactNativeSpec/FBReactNativeSpec.h b/Frameworks/FBReactNativeSpec.xcframework/ios-arm64/Headers/FBReactNativeSpec/FBReactNativeSpec.h new file mode 100644 index 0000000..95f3661 --- /dev/null +++ b/Frameworks/FBReactNativeSpec.xcframework/ios-arm64/Headers/FBReactNativeSpec/FBReactNativeSpec.h @@ -0,0 +1,2566 @@ +/** + * 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: GenerateModuleObjCpp + * + * We create an umbrella header (and corresponding implementation) here since + * Cxx compilation in BUCK has a limitation: source-code producing genrule()s + * must have a single output. More files => more genrule()s => slower builds. + */ + +#ifndef __cplusplus +#error This file must be compiled as Obj-C++. If you are importing it, you must change your file extension to .mm. +#endif +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + + +@protocol NativeAccessibilityInfoSpec + +- (void)isReduceMotionEnabled:(RCTResponseSenderBlock)onSuccess; +- (void)isTouchExplorationEnabled:(RCTResponseSenderBlock)onSuccess; +- (void)setAccessibilityFocus:(double)reactTag; +- (void)announceForAccessibility:(NSString *)announcement; +- (void)getRecommendedTimeoutMillis:(double)mSec + onSuccess:(RCTResponseSenderBlock)onSuccess; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeAccessibilityInfo' + */ + class JSI_EXPORT NativeAccessibilityInfoSpecJSI : public ObjCTurboModule { + public: + NativeAccessibilityInfoSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeAccessibilityManager { + struct SpecSetAccessibilityContentSizeMultipliersJSMultipliers { + folly::Optional extraSmall() const; + folly::Optional small() const; + folly::Optional medium() const; + folly::Optional large() const; + folly::Optional extraLarge() const; + folly::Optional extraExtraLarge() const; + folly::Optional extraExtraExtraLarge() const; + folly::Optional accessibilityMedium() const; + folly::Optional accessibilityLarge() const; + folly::Optional accessibilityExtraLarge() const; + folly::Optional accessibilityExtraExtraLarge() const; + folly::Optional accessibilityExtraExtraExtraLarge() const; + + SpecSetAccessibilityContentSizeMultipliersJSMultipliers(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeAccessibilityManager_SpecSetAccessibilityContentSizeMultipliersJSMultipliers) ++ (RCTManagedPointer *)JS_NativeAccessibilityManager_SpecSetAccessibilityContentSizeMultipliersJSMultipliers:(id)json; +@end +@protocol NativeAccessibilityManagerSpec + +- (void)getCurrentBoldTextState:(RCTResponseSenderBlock)onSuccess + onError:(RCTResponseSenderBlock)onError; +- (void)getCurrentGrayscaleState:(RCTResponseSenderBlock)onSuccess + onError:(RCTResponseSenderBlock)onError; +- (void)getCurrentInvertColorsState:(RCTResponseSenderBlock)onSuccess + onError:(RCTResponseSenderBlock)onError; +- (void)getCurrentReduceMotionState:(RCTResponseSenderBlock)onSuccess + onError:(RCTResponseSenderBlock)onError; +- (void)getCurrentReduceTransparencyState:(RCTResponseSenderBlock)onSuccess + onError:(RCTResponseSenderBlock)onError; +- (void)getCurrentVoiceOverState:(RCTResponseSenderBlock)onSuccess + onError:(RCTResponseSenderBlock)onError; +- (void)setAccessibilityContentSizeMultipliers:(JS::NativeAccessibilityManager::SpecSetAccessibilityContentSizeMultipliersJSMultipliers &)JSMultipliers; +- (void)setAccessibilityFocus:(double)reactTag; +- (void)announceForAccessibility:(NSString *)announcement; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeAccessibilityManager' + */ + class JSI_EXPORT NativeAccessibilityManagerSpecJSI : public ObjCTurboModule { + public: + NativeAccessibilityManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeActionSheetManager { + struct SpecShowActionSheetWithOptionsOptions { + NSString *title() const; + NSString *message() const; + folly::Optional> options() const; + folly::Optional> destructiveButtonIndices() const; + folly::Optional cancelButtonIndex() const; + folly::Optional anchor() const; + folly::Optional tintColor() const; + folly::Optional cancelButtonTintColor() const; + NSString *userInterfaceStyle() const; + folly::Optional> disabledButtonIndices() const; + + SpecShowActionSheetWithOptionsOptions(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeActionSheetManager_SpecShowActionSheetWithOptionsOptions) ++ (RCTManagedPointer *)JS_NativeActionSheetManager_SpecShowActionSheetWithOptionsOptions:(id)json; +@end +namespace JS { + namespace NativeActionSheetManager { + struct SpecShowShareActionSheetWithOptionsOptions { + NSString *message() const; + NSString *url() const; + NSString *subject() const; + folly::Optional anchor() const; + folly::Optional tintColor() const; + folly::Optional cancelButtonTintColor() const; + folly::Optional> excludedActivityTypes() const; + NSString *userInterfaceStyle() const; + + SpecShowShareActionSheetWithOptionsOptions(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeActionSheetManager_SpecShowShareActionSheetWithOptionsOptions) ++ (RCTManagedPointer *)JS_NativeActionSheetManager_SpecShowShareActionSheetWithOptionsOptions:(id)json; +@end +@protocol NativeActionSheetManagerSpec + +- (void)showActionSheetWithOptions:(JS::NativeActionSheetManager::SpecShowActionSheetWithOptionsOptions &)options + callback:(RCTResponseSenderBlock)callback; +- (void)showShareActionSheetWithOptions:(JS::NativeActionSheetManager::SpecShowShareActionSheetWithOptionsOptions &)options + failureCallback:(RCTResponseSenderBlock)failureCallback + successCallback:(RCTResponseSenderBlock)successCallback; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeActionSheetManager' + */ + class JSI_EXPORT NativeActionSheetManagerSpecJSI : public ObjCTurboModule { + public: + NativeActionSheetManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeAlertManager { + struct Args { + NSString *title() const; + NSString *message() const; + folly::Optional >> buttons() const; + NSString *type() const; + NSString *defaultValue() const; + NSString *cancelButtonKey() const; + NSString *destructiveButtonKey() const; + NSString *keyboardType() const; + + Args(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeAlertManager_Args) ++ (RCTManagedPointer *)JS_NativeAlertManager_Args:(id)json; +@end +@protocol NativeAlertManagerSpec + +- (void)alertWithArgs:(JS::NativeAlertManager::Args &)args + callback:(RCTResponseSenderBlock)callback; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeAlertManager' + */ + class JSI_EXPORT NativeAlertManagerSpecJSI : public ObjCTurboModule { + public: + NativeAlertManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeAnimatedModule { + struct EventMapping { + facebook::react::LazyVector nativeEventPath() const; + folly::Optional animatedValueTag() const; + + EventMapping(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeAnimatedModule_EventMapping) ++ (RCTManagedPointer *)JS_NativeAnimatedModule_EventMapping:(id)json; +@end +@protocol NativeAnimatedModuleSpec + +- (void)startOperationBatch; +- (void)finishOperationBatch; +- (void)createAnimatedNode:(double)tag + config:(NSDictionary *)config; +- (void)getValue:(double)tag +saveValueCallback:(RCTResponseSenderBlock)saveValueCallback; +- (void)startListeningToAnimatedNodeValue:(double)tag; +- (void)stopListeningToAnimatedNodeValue:(double)tag; +- (void)connectAnimatedNodes:(double)parentTag + childTag:(double)childTag; +- (void)disconnectAnimatedNodes:(double)parentTag + childTag:(double)childTag; +- (void)startAnimatingNode:(double)animationId + nodeTag:(double)nodeTag + config:(NSDictionary *)config + endCallback:(RCTResponseSenderBlock)endCallback; +- (void)stopAnimation:(double)animationId; +- (void)setAnimatedNodeValue:(double)nodeTag + value:(double)value; +- (void)setAnimatedNodeOffset:(double)nodeTag + offset:(double)offset; +- (void)flattenAnimatedNodeOffset:(double)nodeTag; +- (void)extractAnimatedNodeOffset:(double)nodeTag; +- (void)connectAnimatedNodeToView:(double)nodeTag + viewTag:(double)viewTag; +- (void)disconnectAnimatedNodeFromView:(double)nodeTag + viewTag:(double)viewTag; +- (void)restoreDefaultValues:(double)nodeTag; +- (void)dropAnimatedNode:(double)tag; +- (void)addAnimatedEventToView:(double)viewTag + eventName:(NSString *)eventName + eventMapping:(JS::NativeAnimatedModule::EventMapping &)eventMapping; +- (void)removeAnimatedEventFromView:(double)viewTag + eventName:(NSString *)eventName + animatedNodeTag:(double)animatedNodeTag; +- (void)addListener:(NSString *)eventName; +- (void)removeListeners:(double)count; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeAnimatedModule' + */ + class JSI_EXPORT NativeAnimatedModuleSpecJSI : public ObjCTurboModule { + public: + NativeAnimatedModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeAnimatedTurboModule { + struct EventMapping { + facebook::react::LazyVector nativeEventPath() const; + folly::Optional animatedValueTag() const; + + EventMapping(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeAnimatedTurboModule_EventMapping) ++ (RCTManagedPointer *)JS_NativeAnimatedTurboModule_EventMapping:(id)json; +@end +@protocol NativeAnimatedTurboModuleSpec + +- (void)startOperationBatch; +- (void)finishOperationBatch; +- (void)createAnimatedNode:(double)tag + config:(NSDictionary *)config; +- (void)getValue:(double)tag +saveValueCallback:(RCTResponseSenderBlock)saveValueCallback; +- (void)startListeningToAnimatedNodeValue:(double)tag; +- (void)stopListeningToAnimatedNodeValue:(double)tag; +- (void)connectAnimatedNodes:(double)parentTag + childTag:(double)childTag; +- (void)disconnectAnimatedNodes:(double)parentTag + childTag:(double)childTag; +- (void)startAnimatingNode:(double)animationId + nodeTag:(double)nodeTag + config:(NSDictionary *)config + endCallback:(RCTResponseSenderBlock)endCallback; +- (void)stopAnimation:(double)animationId; +- (void)setAnimatedNodeValue:(double)nodeTag + value:(double)value; +- (void)setAnimatedNodeOffset:(double)nodeTag + offset:(double)offset; +- (void)flattenAnimatedNodeOffset:(double)nodeTag; +- (void)extractAnimatedNodeOffset:(double)nodeTag; +- (void)connectAnimatedNodeToView:(double)nodeTag + viewTag:(double)viewTag; +- (void)disconnectAnimatedNodeFromView:(double)nodeTag + viewTag:(double)viewTag; +- (void)restoreDefaultValues:(double)nodeTag; +- (void)dropAnimatedNode:(double)tag; +- (void)addAnimatedEventToView:(double)viewTag + eventName:(NSString *)eventName + eventMapping:(JS::NativeAnimatedTurboModule::EventMapping &)eventMapping; +- (void)removeAnimatedEventFromView:(double)viewTag + eventName:(NSString *)eventName + animatedNodeTag:(double)animatedNodeTag; +- (void)addListener:(NSString *)eventName; +- (void)removeListeners:(double)count; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeAnimatedTurboModule' + */ + class JSI_EXPORT NativeAnimatedTurboModuleSpecJSI : public ObjCTurboModule { + public: + NativeAnimatedTurboModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeAnimationsDebugModuleSpec + +- (void)startRecordingFps; +- (void)stopRecordingFps:(double)animationStopTimeMs; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeAnimationsDebugModule' + */ + class JSI_EXPORT NativeAnimationsDebugModuleSpecJSI : public ObjCTurboModule { + public: + NativeAnimationsDebugModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeAppState { + struct Constants { + + struct Builder { + struct Input { + RCTRequired initialAppState; + }; + + /** Initialize with a set of values */ + Builder(const Input i); + /** Initialize with an existing Constants */ + Builder(Constants i); + /** Builds the object. Generally used only by the infrastructure. */ + NSDictionary *buildUnsafeRawValue() const { return _factory(); }; + private: + NSDictionary *(^_factory)(void); + }; + + static Constants fromUnsafeRawValue(NSDictionary *const v) { return {v}; } + NSDictionary *unsafeRawValue() const { return _v; } + private: + Constants(NSDictionary *const v) : _v(v) {} + NSDictionary *_v; + }; + } +} +@protocol NativeAppStateSpec + +- (void)getCurrentAppState:(RCTResponseSenderBlock)success + error:(RCTResponseSenderBlock)error; +- (void)addListener:(NSString *)eventName; +- (void)removeListeners:(double)count; +- (facebook::react::ModuleConstants)constantsToExport; +- (facebook::react::ModuleConstants)getConstants; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeAppState' + */ + class JSI_EXPORT NativeAppStateSpecJSI : public ObjCTurboModule { + public: + NativeAppStateSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeAppearanceSpec + +- (NSString * _Nullable)getColorScheme; +- (void)addListener:(NSString *)eventName; +- (void)removeListeners:(double)count; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeAppearance' + */ + class JSI_EXPORT NativeAppearanceSpecJSI : public ObjCTurboModule { + public: + NativeAppearanceSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeAsyncLocalStorageSpec + +- (void)multiGet:(NSArray *)keys + callback:(RCTResponseSenderBlock)callback; +- (void)multiSet:(NSArray *)kvPairs + callback:(RCTResponseSenderBlock)callback; +- (void)multiMerge:(NSArray *)kvPairs + callback:(RCTResponseSenderBlock)callback; +- (void)multiRemove:(NSArray *)keys + callback:(RCTResponseSenderBlock)callback; +- (void)clear:(RCTResponseSenderBlock)callback; +- (void)getAllKeys:(RCTResponseSenderBlock)callback; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeAsyncLocalStorage' + */ + class JSI_EXPORT NativeAsyncLocalStorageSpecJSI : public ObjCTurboModule { + public: + NativeAsyncLocalStorageSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeAsyncSQLiteDBStorageSpec + +- (void)multiGet:(NSArray *)keys + callback:(RCTResponseSenderBlock)callback; +- (void)multiSet:(NSArray *)kvPairs + callback:(RCTResponseSenderBlock)callback; +- (void)multiMerge:(NSArray *)kvPairs + callback:(RCTResponseSenderBlock)callback; +- (void)multiRemove:(NSArray *)keys + callback:(RCTResponseSenderBlock)callback; +- (void)clear:(RCTResponseSenderBlock)callback; +- (void)getAllKeys:(RCTResponseSenderBlock)callback; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeAsyncSQLiteDBStorage' + */ + class JSI_EXPORT NativeAsyncSQLiteDBStorageSpecJSI : public ObjCTurboModule { + public: + NativeAsyncSQLiteDBStorageSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeBlobModule { + struct Constants { + + struct Builder { + struct Input { + RCTRequired BLOB_URI_SCHEME; + RCTRequired BLOB_URI_HOST; + }; + + /** Initialize with a set of values */ + Builder(const Input i); + /** Initialize with an existing Constants */ + Builder(Constants i); + /** Builds the object. Generally used only by the infrastructure. */ + NSDictionary *buildUnsafeRawValue() const { return _factory(); }; + private: + NSDictionary *(^_factory)(void); + }; + + static Constants fromUnsafeRawValue(NSDictionary *const v) { return {v}; } + NSDictionary *unsafeRawValue() const { return _v; } + private: + Constants(NSDictionary *const v) : _v(v) {} + NSDictionary *_v; + }; + } +} +@protocol NativeBlobModuleSpec + +- (void)addNetworkingHandler; +- (void)addWebSocketHandler:(double)id; +- (void)removeWebSocketHandler:(double)id; +- (void)sendOverSocket:(NSDictionary *)blob + socketID:(double)socketID; +- (void)createFromParts:(NSArray *)parts + withId:(NSString *)withId; +- (void)release:(NSString *)blobId; +- (facebook::react::ModuleConstants)constantsToExport; +- (facebook::react::ModuleConstants)getConstants; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeBlobModule' + */ + class JSI_EXPORT NativeBlobModuleSpecJSI : public ObjCTurboModule { + public: + NativeBlobModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeBugReportingSpec + +- (void)startReportAProblemFlow; +- (void)setExtraData:(NSDictionary *)extraData + extraFiles:(NSDictionary *)extraFiles; +- (void)setCategoryID:(NSString *)categoryID; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeBugReporting' + */ + class JSI_EXPORT NativeBugReportingSpecJSI : public ObjCTurboModule { + public: + NativeBugReportingSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeClipboardSpec + +- (void)getString:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; +- (void)setString:(NSString *)content; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeClipboard' + */ + class JSI_EXPORT NativeClipboardSpecJSI : public ObjCTurboModule { + public: + NativeClipboardSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeDevLoadingViewSpec + +- (void)showMessage:(NSString *)message + withColor:(NSNumber *)withColor +withBackgroundColor:(NSNumber *)withBackgroundColor; +- (void)hide; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeDevLoadingView' + */ + class JSI_EXPORT NativeDevLoadingViewSpecJSI : public ObjCTurboModule { + public: + NativeDevLoadingViewSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeDevMenuSpec + +- (void)show; +- (void)reload; +- (void)debugRemotely:(BOOL)enableDebug; +- (void)setProfilingEnabled:(BOOL)enabled; +- (void)setHotLoadingEnabled:(BOOL)enabled; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeDevMenu' + */ + class JSI_EXPORT NativeDevMenuSpecJSI : public ObjCTurboModule { + public: + NativeDevMenuSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeDevSettingsSpec + +- (void)reload; +- (void)reloadWithReason:(NSString *)reason; +- (void)onFastRefresh; +- (void)setHotLoadingEnabled:(BOOL)isHotLoadingEnabled; +- (void)setIsDebuggingRemotely:(BOOL)isDebuggingRemotelyEnabled; +- (void)setProfilingEnabled:(BOOL)isProfilingEnabled; +- (void)toggleElementInspector; +- (void)addMenuItem:(NSString *)title; +- (void)addListener:(NSString *)eventName; +- (void)removeListeners:(double)count; +- (void)setIsShakeToShowDevMenuEnabled:(BOOL)enabled; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeDevSettings' + */ + class JSI_EXPORT NativeDevSettingsSpecJSI : public ObjCTurboModule { + public: + NativeDevSettingsSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeDevSplitBundleLoaderSpec + +- (void)loadBundle:(NSString *)bundlePath + resolve:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeDevSplitBundleLoader' + */ + class JSI_EXPORT NativeDevSplitBundleLoaderSpecJSI : public ObjCTurboModule { + public: + NativeDevSplitBundleLoaderSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeDeviceEventManagerSpec + +- (void)invokeDefaultBackPressHandler; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeDeviceEventManager' + */ + class JSI_EXPORT NativeDeviceEventManagerSpecJSI : public ObjCTurboModule { + public: + NativeDeviceEventManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeDeviceInfo { + struct DisplayMetrics { + + struct Builder { + struct Input { + RCTRequired width; + RCTRequired height; + RCTRequired scale; + RCTRequired fontScale; + }; + + /** Initialize with a set of values */ + Builder(const Input i); + /** Initialize with an existing DisplayMetrics */ + Builder(DisplayMetrics i); + /** Builds the object. Generally used only by the infrastructure. */ + NSDictionary *buildUnsafeRawValue() const { return _factory(); }; + private: + NSDictionary *(^_factory)(void); + }; + + static DisplayMetrics fromUnsafeRawValue(NSDictionary *const v) { return {v}; } + NSDictionary *unsafeRawValue() const { return _v; } + private: + DisplayMetrics(NSDictionary *const v) : _v(v) {} + NSDictionary *_v; + }; + } +} +namespace JS { + namespace NativeDeviceInfo { + struct DisplayMetricsAndroid { + + struct Builder { + struct Input { + RCTRequired width; + RCTRequired height; + RCTRequired scale; + RCTRequired fontScale; + RCTRequired densityDpi; + }; + + /** Initialize with a set of values */ + Builder(const Input i); + /** Initialize with an existing DisplayMetricsAndroid */ + Builder(DisplayMetricsAndroid i); + /** Builds the object. Generally used only by the infrastructure. */ + NSDictionary *buildUnsafeRawValue() const { return _factory(); }; + private: + NSDictionary *(^_factory)(void); + }; + + static DisplayMetricsAndroid fromUnsafeRawValue(NSDictionary *const v) { return {v}; } + NSDictionary *unsafeRawValue() const { return _v; } + private: + DisplayMetricsAndroid(NSDictionary *const v) : _v(v) {} + NSDictionary *_v; + }; + } +} +namespace JS { + namespace NativeDeviceInfo { + struct DimensionsPayload { + + struct Builder { + struct Input { + folly::Optional window; + folly::Optional screen; + folly::Optional windowPhysicalPixels; + folly::Optional screenPhysicalPixels; + }; + + /** Initialize with a set of values */ + Builder(const Input i); + /** Initialize with an existing DimensionsPayload */ + Builder(DimensionsPayload i); + /** Builds the object. Generally used only by the infrastructure. */ + NSDictionary *buildUnsafeRawValue() const { return _factory(); }; + private: + NSDictionary *(^_factory)(void); + }; + + static DimensionsPayload fromUnsafeRawValue(NSDictionary *const v) { return {v}; } + NSDictionary *unsafeRawValue() const { return _v; } + private: + DimensionsPayload(NSDictionary *const v) : _v(v) {} + NSDictionary *_v; + }; + } +} +namespace JS { + namespace NativeDeviceInfo { + struct Constants { + + struct Builder { + struct Input { + RCTRequired Dimensions; + folly::Optional isIPhoneX_deprecated; + }; + + /** Initialize with a set of values */ + Builder(const Input i); + /** Initialize with an existing Constants */ + Builder(Constants i); + /** Builds the object. Generally used only by the infrastructure. */ + NSDictionary *buildUnsafeRawValue() const { return _factory(); }; + private: + NSDictionary *(^_factory)(void); + }; + + static Constants fromUnsafeRawValue(NSDictionary *const v) { return {v}; } + NSDictionary *unsafeRawValue() const { return _v; } + private: + Constants(NSDictionary *const v) : _v(v) {} + NSDictionary *_v; + }; + } +} +@protocol NativeDeviceInfoSpec + +- (facebook::react::ModuleConstants)constantsToExport; +- (facebook::react::ModuleConstants)getConstants; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeDeviceInfo' + */ + class JSI_EXPORT NativeDeviceInfoSpecJSI : public ObjCTurboModule { + public: + NativeDeviceInfoSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeExceptionsManager { + struct StackFrame { + folly::Optional column() const; + NSString *file() const; + folly::Optional lineNumber() const; + NSString *methodName() const; + folly::Optional collapse() const; + + StackFrame(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeExceptionsManager_StackFrame) ++ (RCTManagedPointer *)JS_NativeExceptionsManager_StackFrame:(id)json; +@end +namespace JS { + namespace NativeExceptionsManager { + struct ExceptionData { + NSString *message() const; + NSString *originalMessage() const; + NSString *name() const; + NSString *componentStack() const; + facebook::react::LazyVector stack() const; + double id_() const; + bool isFatal() const; + id _Nullable extraData() const; + + ExceptionData(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeExceptionsManager_ExceptionData) ++ (RCTManagedPointer *)JS_NativeExceptionsManager_ExceptionData:(id)json; +@end +@protocol NativeExceptionsManagerSpec + +- (void)reportFatalException:(NSString *)message + stack:(NSArray *)stack + exceptionId:(double)exceptionId; +- (void)reportSoftException:(NSString *)message + stack:(NSArray *)stack + exceptionId:(double)exceptionId; +- (void)reportException:(JS::NativeExceptionsManager::ExceptionData &)data; +- (void)updateExceptionMessage:(NSString *)message + stack:(NSArray *)stack + exceptionId:(double)exceptionId; +- (void)dismissRedbox; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeExceptionsManager' + */ + class JSI_EXPORT NativeExceptionsManagerSpecJSI : public ObjCTurboModule { + public: + NativeExceptionsManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeFileReaderModuleSpec + +- (void)readAsDataURL:(NSDictionary *)data + resolve:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; +- (void)readAsText:(NSDictionary *)data + encoding:(NSString *)encoding + resolve:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeFileReaderModule' + */ + class JSI_EXPORT NativeFileReaderModuleSpecJSI : public ObjCTurboModule { + public: + NativeFileReaderModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeFrameRateLogger { + struct SpecSetGlobalOptionsOptions { + folly::Optional debug() const; + folly::Optional reportStackTraces() const; + + SpecSetGlobalOptionsOptions(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeFrameRateLogger_SpecSetGlobalOptionsOptions) ++ (RCTManagedPointer *)JS_NativeFrameRateLogger_SpecSetGlobalOptionsOptions:(id)json; +@end +@protocol NativeFrameRateLoggerSpec + +- (void)setGlobalOptions:(JS::NativeFrameRateLogger::SpecSetGlobalOptionsOptions &)options; +- (void)setContext:(NSString *)context; +- (void)beginScroll; +- (void)endScroll; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeFrameRateLogger' + */ + class JSI_EXPORT NativeFrameRateLoggerSpecJSI : public ObjCTurboModule { + public: + NativeFrameRateLoggerSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeHeadlessJsTaskSupportSpec + +- (void)notifyTaskFinished:(double)taskId; +- (void)notifyTaskRetry:(double)taskId + resolve:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeHeadlessJsTaskSupport' + */ + class JSI_EXPORT NativeHeadlessJsTaskSupportSpecJSI : public ObjCTurboModule { + public: + NativeHeadlessJsTaskSupportSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeI18nManager { + struct Constants { + + struct Builder { + struct Input { + RCTRequired isRTL; + RCTRequired doLeftAndRightSwapInRTL; + RCTRequired localeIdentifier; + }; + + /** Initialize with a set of values */ + Builder(const Input i); + /** Initialize with an existing Constants */ + Builder(Constants i); + /** Builds the object. Generally used only by the infrastructure. */ + NSDictionary *buildUnsafeRawValue() const { return _factory(); }; + private: + NSDictionary *(^_factory)(void); + }; + + static Constants fromUnsafeRawValue(NSDictionary *const v) { return {v}; } + NSDictionary *unsafeRawValue() const { return _v; } + private: + Constants(NSDictionary *const v) : _v(v) {} + NSDictionary *_v; + }; + } +} +@protocol NativeI18nManagerSpec + +- (void)allowRTL:(BOOL)allowRTL; +- (void)forceRTL:(BOOL)forceRTL; +- (void)swapLeftAndRightInRTL:(BOOL)flipStyles; +- (facebook::react::ModuleConstants)constantsToExport; +- (facebook::react::ModuleConstants)getConstants; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeI18nManager' + */ + class JSI_EXPORT NativeI18nManagerSpecJSI : public ObjCTurboModule { + public: + NativeI18nManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeImageEditor { + struct OptionsOffset { + double x() const; + double y() const; + + OptionsOffset(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeImageEditor_OptionsOffset) ++ (RCTManagedPointer *)JS_NativeImageEditor_OptionsOffset:(id)json; +@end +namespace JS { + namespace NativeImageEditor { + struct OptionsSize { + double width() const; + double height() const; + + OptionsSize(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeImageEditor_OptionsSize) ++ (RCTManagedPointer *)JS_NativeImageEditor_OptionsSize:(id)json; +@end +namespace JS { + namespace NativeImageEditor { + struct OptionsDisplaySize { + double width() const; + double height() const; + + OptionsDisplaySize(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeImageEditor_OptionsDisplaySize) ++ (RCTManagedPointer *)JS_NativeImageEditor_OptionsDisplaySize:(id)json; +@end +namespace JS { + namespace NativeImageEditor { + struct Options { + JS::NativeImageEditor::OptionsOffset offset() const; + JS::NativeImageEditor::OptionsSize size() const; + folly::Optional displaySize() const; + NSString *resizeMode() const; + folly::Optional allowExternalStorage() const; + + Options(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeImageEditor_Options) ++ (RCTManagedPointer *)JS_NativeImageEditor_Options:(id)json; +@end +@protocol NativeImageEditorSpec + +- (void)cropImage:(NSString *)uri + cropData:(JS::NativeImageEditor::Options &)cropData + successCallback:(RCTResponseSenderBlock)successCallback + errorCallback:(RCTResponseSenderBlock)errorCallback; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeImageEditor' + */ + class JSI_EXPORT NativeImageEditorSpecJSI : public ObjCTurboModule { + public: + NativeImageEditorSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeImageLoaderIOSSpec + +- (void)getSize:(NSString *)uri + resolve:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; +- (void)getSizeWithHeaders:(NSString *)uri + headers:(NSDictionary *)headers + resolve:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; +- (void)prefetchImage:(NSString *)uri + resolve:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; +- (void)prefetchImageWithMetadata:(NSString *)uri + queryRootName:(NSString *)queryRootName + rootTag:(double)rootTag + resolve:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; +- (void)queryCache:(NSArray *)uris + resolve:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeImageLoaderIOS' + */ + class JSI_EXPORT NativeImageLoaderIOSSpecJSI : public ObjCTurboModule { + public: + NativeImageLoaderIOSSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeImagePickerIOS { + struct SpecOpenCameraDialogConfig { + bool unmirrorFrontFacingCamera() const; + bool videoMode() const; + + SpecOpenCameraDialogConfig(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeImagePickerIOS_SpecOpenCameraDialogConfig) ++ (RCTManagedPointer *)JS_NativeImagePickerIOS_SpecOpenCameraDialogConfig:(id)json; +@end +namespace JS { + namespace NativeImagePickerIOS { + struct SpecOpenSelectDialogConfig { + bool showImages() const; + bool showVideos() const; + + SpecOpenSelectDialogConfig(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeImagePickerIOS_SpecOpenSelectDialogConfig) ++ (RCTManagedPointer *)JS_NativeImagePickerIOS_SpecOpenSelectDialogConfig:(id)json; +@end +@protocol NativeImagePickerIOSSpec + +- (void)canRecordVideos:(RCTResponseSenderBlock)callback; +- (void)canUseCamera:(RCTResponseSenderBlock)callback; +- (void)openCameraDialog:(JS::NativeImagePickerIOS::SpecOpenCameraDialogConfig &)config + successCallback:(RCTResponseSenderBlock)successCallback + cancelCallback:(RCTResponseSenderBlock)cancelCallback; +- (void)openSelectDialog:(JS::NativeImagePickerIOS::SpecOpenSelectDialogConfig &)config + successCallback:(RCTResponseSenderBlock)successCallback + cancelCallback:(RCTResponseSenderBlock)cancelCallback; +- (void)clearAllPendingVideos; +- (void)removePendingVideo:(NSString *)url; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeImagePickerIOS' + */ + class JSI_EXPORT NativeImagePickerIOSSpecJSI : public ObjCTurboModule { + public: + NativeImagePickerIOSSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeImageStoreIOSSpec + +- (void)getBase64ForTag:(NSString *)uri + successCallback:(RCTResponseSenderBlock)successCallback + errorCallback:(RCTResponseSenderBlock)errorCallback; +- (void)hasImageForTag:(NSString *)uri + callback:(RCTResponseSenderBlock)callback; +- (void)removeImageForTag:(NSString *)uri; +- (void)addImageFromBase64:(NSString *)base64ImageData + successCallback:(RCTResponseSenderBlock)successCallback + errorCallback:(RCTResponseSenderBlock)errorCallback; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeImageStoreIOS' + */ + class JSI_EXPORT NativeImageStoreIOSSpecJSI : public ObjCTurboModule { + public: + NativeImageStoreIOSSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeJSCHeapCaptureSpec + +- (void)captureComplete:(NSString *)path + error:(NSString * _Nullable)error; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeJSCHeapCapture' + */ + class JSI_EXPORT NativeJSCHeapCaptureSpecJSI : public ObjCTurboModule { + public: + NativeJSCHeapCaptureSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeJSCSamplingProfilerSpec + +- (void)operationComplete:(double)token + result:(NSString * _Nullable)result + error:(NSString * _Nullable)error; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeJSCSamplingProfiler' + */ + class JSI_EXPORT NativeJSCSamplingProfilerSpecJSI : public ObjCTurboModule { + public: + NativeJSCSamplingProfilerSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeJSDevSupport { + struct Constants { + + struct Builder { + struct Input { + RCTRequired ERROR_CODE_EXCEPTION; + RCTRequired ERROR_CODE_VIEW_NOT_FOUND; + }; + + /** Initialize with a set of values */ + Builder(const Input i); + /** Initialize with an existing Constants */ + Builder(Constants i); + /** Builds the object. Generally used only by the infrastructure. */ + NSDictionary *buildUnsafeRawValue() const { return _factory(); }; + private: + NSDictionary *(^_factory)(void); + }; + + static Constants fromUnsafeRawValue(NSDictionary *const v) { return {v}; } + NSDictionary *unsafeRawValue() const { return _v; } + private: + Constants(NSDictionary *const v) : _v(v) {} + NSDictionary *_v; + }; + } +} +@protocol NativeJSDevSupportSpec + +- (void)onSuccess:(NSString *)data; +- (void)onFailure:(double)errorCode + error:(NSString *)error; +- (facebook::react::ModuleConstants)constantsToExport; +- (facebook::react::ModuleConstants)getConstants; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeJSDevSupport' + */ + class JSI_EXPORT NativeJSDevSupportSpecJSI : public ObjCTurboModule { + public: + NativeJSDevSupportSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeKeyboardObserverSpec + +- (void)addListener:(NSString *)eventName; +- (void)removeListeners:(double)count; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeKeyboardObserver' + */ + class JSI_EXPORT NativeKeyboardObserverSpecJSI : public ObjCTurboModule { + public: + NativeKeyboardObserverSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeLinkingManagerSpec + +- (void)getInitialURL:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; +- (void)canOpenURL:(NSString *)url + resolve:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; +- (void)openURL:(NSString *)url + resolve:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; +- (void)openSettings:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; +- (void)addListener:(NSString *)eventName; +- (void)removeListeners:(double)count; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeLinkingManager' + */ + class JSI_EXPORT NativeLinkingManagerSpecJSI : public ObjCTurboModule { + public: + NativeLinkingManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeLogBoxSpec + +- (void)show; +- (void)hide; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeLogBox' + */ + class JSI_EXPORT NativeLogBoxSpecJSI : public ObjCTurboModule { + public: + NativeLogBoxSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeModalManagerSpec + +- (void)addListener:(NSString *)eventName; +- (void)removeListeners:(double)count; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeModalManager' + */ + class JSI_EXPORT NativeModalManagerSpecJSI : public ObjCTurboModule { + public: + NativeModalManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeNetworkingIOS { + struct SpecSendRequestQuery { + NSString *method() const; + NSString *url() const; + id data() const; + id headers() const; + NSString *responseType() const; + bool incrementalUpdates() const; + double timeout() const; + bool withCredentials() const; + + SpecSendRequestQuery(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeNetworkingIOS_SpecSendRequestQuery) ++ (RCTManagedPointer *)JS_NativeNetworkingIOS_SpecSendRequestQuery:(id)json; +@end +@protocol NativeNetworkingIOSSpec + +- (void)sendRequest:(JS::NativeNetworkingIOS::SpecSendRequestQuery &)query + callback:(RCTResponseSenderBlock)callback; +- (void)abortRequest:(double)requestId; +- (void)clearCookies:(RCTResponseSenderBlock)callback; +- (void)addListener:(NSString *)eventName; +- (void)removeListeners:(double)count; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeNetworkingIOS' + */ + class JSI_EXPORT NativeNetworkingIOSSpecJSI : public ObjCTurboModule { + public: + NativeNetworkingIOSSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativePlatformConstantsIOS { + struct ConstantsReactNativeVersion { + + struct Builder { + struct Input { + RCTRequired major; + RCTRequired minor; + RCTRequired patch; + RCTRequired> prerelease; + }; + + /** Initialize with a set of values */ + Builder(const Input i); + /** Initialize with an existing ConstantsReactNativeVersion */ + Builder(ConstantsReactNativeVersion i); + /** Builds the object. Generally used only by the infrastructure. */ + NSDictionary *buildUnsafeRawValue() const { return _factory(); }; + private: + NSDictionary *(^_factory)(void); + }; + + static ConstantsReactNativeVersion fromUnsafeRawValue(NSDictionary *const v) { return {v}; } + NSDictionary *unsafeRawValue() const { return _v; } + private: + ConstantsReactNativeVersion(NSDictionary *const v) : _v(v) {} + NSDictionary *_v; + }; + } +} +namespace JS { + namespace NativePlatformConstantsIOS { + struct Constants { + + struct Builder { + struct Input { + RCTRequired isTesting; + RCTRequired reactNativeVersion; + RCTRequired forceTouchAvailable; + RCTRequired osVersion; + RCTRequired systemName; + RCTRequired interfaceIdiom; + }; + + /** Initialize with a set of values */ + Builder(const Input i); + /** Initialize with an existing Constants */ + Builder(Constants i); + /** Builds the object. Generally used only by the infrastructure. */ + NSDictionary *buildUnsafeRawValue() const { return _factory(); }; + private: + NSDictionary *(^_factory)(void); + }; + + static Constants fromUnsafeRawValue(NSDictionary *const v) { return {v}; } + NSDictionary *unsafeRawValue() const { return _v; } + private: + Constants(NSDictionary *const v) : _v(v) {} + NSDictionary *_v; + }; + } +} +@protocol NativePlatformConstantsIOSSpec + +- (facebook::react::ModuleConstants)constantsToExport; +- (facebook::react::ModuleConstants)getConstants; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativePlatformConstantsIOS' + */ + class JSI_EXPORT NativePlatformConstantsIOSSpecJSI : public ObjCTurboModule { + public: + NativePlatformConstantsIOSSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativePushNotificationManagerIOS { + struct SpecRequestPermissionsPermission { + bool alert() const; + bool badge() const; + bool sound() const; + + SpecRequestPermissionsPermission(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativePushNotificationManagerIOS_SpecRequestPermissionsPermission) ++ (RCTManagedPointer *)JS_NativePushNotificationManagerIOS_SpecRequestPermissionsPermission:(id)json; +@end +namespace JS { + namespace NativePushNotificationManagerIOS { + struct Notification { + NSString *alertTitle() const; + folly::Optional fireDate() const; + NSString *alertBody() const; + NSString *alertAction() const; + id _Nullable userInfo() const; + NSString *category() const; + NSString *repeatInterval() const; + folly::Optional applicationIconBadgeNumber() const; + folly::Optional isSilent() const; + + Notification(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativePushNotificationManagerIOS_Notification) ++ (RCTManagedPointer *)JS_NativePushNotificationManagerIOS_Notification:(id)json; +@end +@protocol NativePushNotificationManagerIOSSpec + +- (void)onFinishRemoteNotification:(NSString *)notificationId + fetchResult:(NSString *)fetchResult; +- (void)setApplicationIconBadgeNumber:(double)num; +- (void)getApplicationIconBadgeNumber:(RCTResponseSenderBlock)callback; +- (void)requestPermissions:(JS::NativePushNotificationManagerIOS::SpecRequestPermissionsPermission &)permission + resolve:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; +- (void)abandonPermissions; +- (void)checkPermissions:(RCTResponseSenderBlock)callback; +- (void)presentLocalNotification:(JS::NativePushNotificationManagerIOS::Notification &)notification; +- (void)scheduleLocalNotification:(JS::NativePushNotificationManagerIOS::Notification &)notification; +- (void)cancelAllLocalNotifications; +- (void)cancelLocalNotifications:(NSDictionary *)userInfo; +- (void)getInitialNotification:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; +- (void)getScheduledLocalNotifications:(RCTResponseSenderBlock)callback; +- (void)removeAllDeliveredNotifications; +- (void)removeDeliveredNotifications:(NSArray *)identifiers; +- (void)getDeliveredNotifications:(RCTResponseSenderBlock)callback; +- (void)getAuthorizationStatus:(RCTResponseSenderBlock)callback; +- (void)addListener:(NSString *)eventType; +- (void)removeListeners:(double)count; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativePushNotificationManagerIOS' + */ + class JSI_EXPORT NativePushNotificationManagerIOSSpecJSI : public ObjCTurboModule { + public: + NativePushNotificationManagerIOSSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeRedBoxSpec + +- (void)setExtraData:(NSDictionary *)extraData + forIdentifier:(NSString *)forIdentifier; +- (void)dismiss; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeRedBox' + */ + class JSI_EXPORT NativeRedBoxSpecJSI : public ObjCTurboModule { + public: + NativeRedBoxSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeSegmentFetcherSpec + +- (void)fetchSegment:(double)segmentId + options:(NSDictionary *)options + callback:(RCTResponseSenderBlock)callback; +- (void)getSegment:(double)segmentId + options:(NSDictionary *)options + callback:(RCTResponseSenderBlock)callback; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeSegmentFetcher' + */ + class JSI_EXPORT NativeSegmentFetcherSpecJSI : public ObjCTurboModule { + public: + NativeSegmentFetcherSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeSettingsManager { + struct Constants { + + struct Builder { + struct Input { + RCTRequired > settings; + }; + + /** Initialize with a set of values */ + Builder(const Input i); + /** Initialize with an existing Constants */ + Builder(Constants i); + /** Builds the object. Generally used only by the infrastructure. */ + NSDictionary *buildUnsafeRawValue() const { return _factory(); }; + private: + NSDictionary *(^_factory)(void); + }; + + static Constants fromUnsafeRawValue(NSDictionary *const v) { return {v}; } + NSDictionary *unsafeRawValue() const { return _v; } + private: + Constants(NSDictionary *const v) : _v(v) {} + NSDictionary *_v; + }; + } +} +@protocol NativeSettingsManagerSpec + +- (void)setValues:(NSDictionary *)values; +- (void)deleteValues:(NSArray *)values; +- (facebook::react::ModuleConstants)constantsToExport; +- (facebook::react::ModuleConstants)getConstants; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeSettingsManager' + */ + class JSI_EXPORT NativeSettingsManagerSpecJSI : public ObjCTurboModule { + public: + NativeSettingsManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeShareModule { + struct SpecShareContent { + NSString *title() const; + NSString *message() const; + + SpecShareContent(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeShareModule_SpecShareContent) ++ (RCTManagedPointer *)JS_NativeShareModule_SpecShareContent:(id)json; +@end +@protocol NativeShareModuleSpec + +- (void)share:(JS::NativeShareModule::SpecShareContent &)content + dialogTitle:(NSString *)dialogTitle + resolve:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeShareModule' + */ + class JSI_EXPORT NativeShareModuleSpecJSI : public ObjCTurboModule { + public: + NativeShareModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeSoundManagerSpec + +- (void)playTouchSound; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeSoundManager' + */ + class JSI_EXPORT NativeSoundManagerSpecJSI : public ObjCTurboModule { + public: + NativeSoundManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeSourceCode { + struct Constants { + + struct Builder { + struct Input { + RCTRequired scriptURL; + }; + + /** Initialize with a set of values */ + Builder(const Input i); + /** Initialize with an existing Constants */ + Builder(Constants i); + /** Builds the object. Generally used only by the infrastructure. */ + NSDictionary *buildUnsafeRawValue() const { return _factory(); }; + private: + NSDictionary *(^_factory)(void); + }; + + static Constants fromUnsafeRawValue(NSDictionary *const v) { return {v}; } + NSDictionary *unsafeRawValue() const { return _v; } + private: + Constants(NSDictionary *const v) : _v(v) {} + NSDictionary *_v; + }; + } +} +@protocol NativeSourceCodeSpec + +- (facebook::react::ModuleConstants)constantsToExport; +- (facebook::react::ModuleConstants)getConstants; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeSourceCode' + */ + class JSI_EXPORT NativeSourceCodeSpecJSI : public ObjCTurboModule { + public: + NativeSourceCodeSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeStatusBarManagerIOS { + struct Constants { + + struct Builder { + struct Input { + RCTRequired HEIGHT; + folly::Optional DEFAULT_BACKGROUND_COLOR; + }; + + /** Initialize with a set of values */ + Builder(const Input i); + /** Initialize with an existing Constants */ + Builder(Constants i); + /** Builds the object. Generally used only by the infrastructure. */ + NSDictionary *buildUnsafeRawValue() const { return _factory(); }; + private: + NSDictionary *(^_factory)(void); + }; + + static Constants fromUnsafeRawValue(NSDictionary *const v) { return {v}; } + NSDictionary *unsafeRawValue() const { return _v; } + private: + Constants(NSDictionary *const v) : _v(v) {} + NSDictionary *_v; + }; + } +} +@protocol NativeStatusBarManagerIOSSpec + +- (void)getHeight:(RCTResponseSenderBlock)callback; +- (void)setNetworkActivityIndicatorVisible:(BOOL)visible; +- (void)addListener:(NSString *)eventType; +- (void)removeListeners:(double)count; +- (void)setStyle:(NSString * _Nullable)statusBarStyle + animated:(BOOL)animated; +- (void)setHidden:(BOOL)hidden + withAnimation:(NSString *)withAnimation; +- (facebook::react::ModuleConstants)constantsToExport; +- (facebook::react::ModuleConstants)getConstants; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeStatusBarManagerIOS' + */ + class JSI_EXPORT NativeStatusBarManagerIOSSpecJSI : public ObjCTurboModule { + public: + NativeStatusBarManagerIOSSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeTimingSpec + +- (void)createTimer:(double)callbackID + duration:(double)duration + jsSchedulingTime:(double)jsSchedulingTime + repeats:(BOOL)repeats; +- (void)deleteTimer:(double)timerID; +- (void)setSendIdleEvents:(BOOL)sendIdleEvents; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeTiming' + */ + class JSI_EXPORT NativeTimingSpecJSI : public ObjCTurboModule { + public: + NativeTimingSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeVibrationSpec + +- (void)vibrate:(double)pattern; +- (void)vibrateByPattern:(NSArray *)pattern + repeat:(double)repeat; +- (void)cancel; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeVibration' + */ + class JSI_EXPORT NativeVibrationSpecJSI : public ObjCTurboModule { + public: + NativeVibrationSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeWebSocketModule { + struct SpecConnectOptions { + id _Nullable headers() const; + + SpecConnectOptions(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeWebSocketModule_SpecConnectOptions) ++ (RCTManagedPointer *)JS_NativeWebSocketModule_SpecConnectOptions:(id)json; +@end +@protocol NativeWebSocketModuleSpec + +- (void)connect:(NSString *)url + protocols:(NSArray * _Nullable)protocols + options:(JS::NativeWebSocketModule::SpecConnectOptions &)options + socketID:(double)socketID; +- (void)send:(NSString *)message + forSocketID:(double)forSocketID; +- (void)sendBinary:(NSString *)base64String + forSocketID:(double)forSocketID; +- (void)ping:(double)socketID; +- (void)close:(double)code + reason:(NSString *)reason + socketID:(double)socketID; +- (void)addListener:(NSString *)eventName; +- (void)removeListeners:(double)count; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeWebSocketModule' + */ + class JSI_EXPORT NativeWebSocketModuleSpecJSI : public ObjCTurboModule { + public: + NativeWebSocketModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +inline folly::Optional JS::NativeAccessibilityManager::SpecSetAccessibilityContentSizeMultipliersJSMultipliers::extraSmall() const +{ + id const p = _v[@"extraSmall"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional JS::NativeAccessibilityManager::SpecSetAccessibilityContentSizeMultipliersJSMultipliers::small() const +{ + id const p = _v[@"small"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional JS::NativeAccessibilityManager::SpecSetAccessibilityContentSizeMultipliersJSMultipliers::medium() const +{ + id const p = _v[@"medium"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional JS::NativeAccessibilityManager::SpecSetAccessibilityContentSizeMultipliersJSMultipliers::large() const +{ + id const p = _v[@"large"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional JS::NativeAccessibilityManager::SpecSetAccessibilityContentSizeMultipliersJSMultipliers::extraLarge() const +{ + id const p = _v[@"extraLarge"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional JS::NativeAccessibilityManager::SpecSetAccessibilityContentSizeMultipliersJSMultipliers::extraExtraLarge() const +{ + id const p = _v[@"extraExtraLarge"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional JS::NativeAccessibilityManager::SpecSetAccessibilityContentSizeMultipliersJSMultipliers::extraExtraExtraLarge() const +{ + id const p = _v[@"extraExtraExtraLarge"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional JS::NativeAccessibilityManager::SpecSetAccessibilityContentSizeMultipliersJSMultipliers::accessibilityMedium() const +{ + id const p = _v[@"accessibilityMedium"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional JS::NativeAccessibilityManager::SpecSetAccessibilityContentSizeMultipliersJSMultipliers::accessibilityLarge() const +{ + id const p = _v[@"accessibilityLarge"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional JS::NativeAccessibilityManager::SpecSetAccessibilityContentSizeMultipliersJSMultipliers::accessibilityExtraLarge() const +{ + id const p = _v[@"accessibilityExtraLarge"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional JS::NativeAccessibilityManager::SpecSetAccessibilityContentSizeMultipliersJSMultipliers::accessibilityExtraExtraLarge() const +{ + id const p = _v[@"accessibilityExtraExtraLarge"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional JS::NativeAccessibilityManager::SpecSetAccessibilityContentSizeMultipliersJSMultipliers::accessibilityExtraExtraExtraLarge() const +{ + id const p = _v[@"accessibilityExtraExtraExtraLarge"]; + return RCTBridgingToOptionalDouble(p); +} +inline NSString *JS::NativeActionSheetManager::SpecShowActionSheetWithOptionsOptions::title() const +{ + id const p = _v[@"title"]; + return RCTBridgingToOptionalString(p); +} +inline NSString *JS::NativeActionSheetManager::SpecShowActionSheetWithOptionsOptions::message() const +{ + id const p = _v[@"message"]; + return RCTBridgingToOptionalString(p); +} +inline folly::Optional> JS::NativeActionSheetManager::SpecShowActionSheetWithOptionsOptions::options() const +{ + id const p = _v[@"options"]; + return RCTBridgingToOptionalVec(p, ^NSString *(id itemValue_0) { return RCTBridgingToString(itemValue_0); }); +} +inline folly::Optional> JS::NativeActionSheetManager::SpecShowActionSheetWithOptionsOptions::destructiveButtonIndices() const +{ + id const p = _v[@"destructiveButtonIndices"]; + return RCTBridgingToOptionalVec(p, ^double(id itemValue_0) { return RCTBridgingToDouble(itemValue_0); }); +} +inline folly::Optional JS::NativeActionSheetManager::SpecShowActionSheetWithOptionsOptions::cancelButtonIndex() const +{ + id const p = _v[@"cancelButtonIndex"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional JS::NativeActionSheetManager::SpecShowActionSheetWithOptionsOptions::anchor() const +{ + id const p = _v[@"anchor"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional JS::NativeActionSheetManager::SpecShowActionSheetWithOptionsOptions::tintColor() const +{ + id const p = _v[@"tintColor"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional JS::NativeActionSheetManager::SpecShowActionSheetWithOptionsOptions::cancelButtonTintColor() const +{ + id const p = _v[@"cancelButtonTintColor"]; + return RCTBridgingToOptionalDouble(p); +} +inline NSString *JS::NativeActionSheetManager::SpecShowActionSheetWithOptionsOptions::userInterfaceStyle() const +{ + id const p = _v[@"userInterfaceStyle"]; + return RCTBridgingToOptionalString(p); +} +inline folly::Optional> JS::NativeActionSheetManager::SpecShowActionSheetWithOptionsOptions::disabledButtonIndices() const +{ + id const p = _v[@"disabledButtonIndices"]; + return RCTBridgingToOptionalVec(p, ^double(id itemValue_0) { return RCTBridgingToDouble(itemValue_0); }); +} +inline NSString *JS::NativeActionSheetManager::SpecShowShareActionSheetWithOptionsOptions::message() const +{ + id const p = _v[@"message"]; + return RCTBridgingToOptionalString(p); +} +inline NSString *JS::NativeActionSheetManager::SpecShowShareActionSheetWithOptionsOptions::url() const +{ + id const p = _v[@"url"]; + return RCTBridgingToOptionalString(p); +} +inline NSString *JS::NativeActionSheetManager::SpecShowShareActionSheetWithOptionsOptions::subject() const +{ + id const p = _v[@"subject"]; + return RCTBridgingToOptionalString(p); +} +inline folly::Optional JS::NativeActionSheetManager::SpecShowShareActionSheetWithOptionsOptions::anchor() const +{ + id const p = _v[@"anchor"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional JS::NativeActionSheetManager::SpecShowShareActionSheetWithOptionsOptions::tintColor() const +{ + id const p = _v[@"tintColor"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional JS::NativeActionSheetManager::SpecShowShareActionSheetWithOptionsOptions::cancelButtonTintColor() const +{ + id const p = _v[@"cancelButtonTintColor"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional> JS::NativeActionSheetManager::SpecShowShareActionSheetWithOptionsOptions::excludedActivityTypes() const +{ + id const p = _v[@"excludedActivityTypes"]; + return RCTBridgingToOptionalVec(p, ^NSString *(id itemValue_0) { return RCTBridgingToString(itemValue_0); }); +} +inline NSString *JS::NativeActionSheetManager::SpecShowShareActionSheetWithOptionsOptions::userInterfaceStyle() const +{ + id const p = _v[@"userInterfaceStyle"]; + return RCTBridgingToOptionalString(p); +} +inline NSString *JS::NativeAlertManager::Args::title() const +{ + id const p = _v[@"title"]; + return RCTBridgingToOptionalString(p); +} +inline NSString *JS::NativeAlertManager::Args::message() const +{ + id const p = _v[@"message"]; + return RCTBridgingToOptionalString(p); +} +inline folly::Optional >> JS::NativeAlertManager::Args::buttons() const +{ + id const p = _v[@"buttons"]; + return RCTBridgingToOptionalVec(p, ^id (id itemValue_0) { return itemValue_0; }); +} +inline NSString *JS::NativeAlertManager::Args::type() const +{ + id const p = _v[@"type"]; + return RCTBridgingToOptionalString(p); +} +inline NSString *JS::NativeAlertManager::Args::defaultValue() const +{ + id const p = _v[@"defaultValue"]; + return RCTBridgingToOptionalString(p); +} +inline NSString *JS::NativeAlertManager::Args::cancelButtonKey() const +{ + id const p = _v[@"cancelButtonKey"]; + return RCTBridgingToOptionalString(p); +} +inline NSString *JS::NativeAlertManager::Args::destructiveButtonKey() const +{ + id const p = _v[@"destructiveButtonKey"]; + return RCTBridgingToOptionalString(p); +} +inline NSString *JS::NativeAlertManager::Args::keyboardType() const +{ + id const p = _v[@"keyboardType"]; + return RCTBridgingToOptionalString(p); +} +inline facebook::react::LazyVector JS::NativeAnimatedModule::EventMapping::nativeEventPath() const +{ + id const p = _v[@"nativeEventPath"]; + return RCTBridgingToVec(p, ^NSString *(id itemValue_0) { return RCTBridgingToString(itemValue_0); }); +} +inline folly::Optional JS::NativeAnimatedModule::EventMapping::animatedValueTag() const +{ + id const p = _v[@"animatedValueTag"]; + return RCTBridgingToOptionalDouble(p); +} +inline facebook::react::LazyVector JS::NativeAnimatedTurboModule::EventMapping::nativeEventPath() const +{ + id const p = _v[@"nativeEventPath"]; + return RCTBridgingToVec(p, ^NSString *(id itemValue_0) { return RCTBridgingToString(itemValue_0); }); +} +inline folly::Optional JS::NativeAnimatedTurboModule::EventMapping::animatedValueTag() const +{ + id const p = _v[@"animatedValueTag"]; + return RCTBridgingToOptionalDouble(p); +} + +inline JS::NativeAppState::Constants::Builder::Builder(const Input i) : _factory(^{ + NSMutableDictionary *d = [NSMutableDictionary new]; + auto initialAppState = i.initialAppState.get(); + d[@"initialAppState"] = initialAppState; + return d; +}) {} +inline JS::NativeAppState::Constants::Builder::Builder(Constants i) : _factory(^{ + return i.unsafeRawValue(); +}) {} + + + +inline JS::NativeBlobModule::Constants::Builder::Builder(const Input i) : _factory(^{ + NSMutableDictionary *d = [NSMutableDictionary new]; + auto BLOB_URI_SCHEME = i.BLOB_URI_SCHEME.get(); + d[@"BLOB_URI_SCHEME"] = BLOB_URI_SCHEME; + auto BLOB_URI_HOST = i.BLOB_URI_HOST.get(); + d[@"BLOB_URI_HOST"] = BLOB_URI_HOST; + return d; +}) {} +inline JS::NativeBlobModule::Constants::Builder::Builder(Constants i) : _factory(^{ + return i.unsafeRawValue(); +}) {} + + + + + + + +inline JS::NativeDeviceInfo::DisplayMetrics::Builder::Builder(const Input i) : _factory(^{ + NSMutableDictionary *d = [NSMutableDictionary new]; + auto width = i.width.get(); + d[@"width"] = @(width); + auto height = i.height.get(); + d[@"height"] = @(height); + auto scale = i.scale.get(); + d[@"scale"] = @(scale); + auto fontScale = i.fontScale.get(); + d[@"fontScale"] = @(fontScale); + return d; +}) {} +inline JS::NativeDeviceInfo::DisplayMetrics::Builder::Builder(DisplayMetrics i) : _factory(^{ + return i.unsafeRawValue(); +}) {} +inline JS::NativeDeviceInfo::DisplayMetricsAndroid::Builder::Builder(const Input i) : _factory(^{ + NSMutableDictionary *d = [NSMutableDictionary new]; + auto width = i.width.get(); + d[@"width"] = @(width); + auto height = i.height.get(); + d[@"height"] = @(height); + auto scale = i.scale.get(); + d[@"scale"] = @(scale); + auto fontScale = i.fontScale.get(); + d[@"fontScale"] = @(fontScale); + auto densityDpi = i.densityDpi.get(); + d[@"densityDpi"] = @(densityDpi); + return d; +}) {} +inline JS::NativeDeviceInfo::DisplayMetricsAndroid::Builder::Builder(DisplayMetricsAndroid i) : _factory(^{ + return i.unsafeRawValue(); +}) {} +inline JS::NativeDeviceInfo::DimensionsPayload::Builder::Builder(const Input i) : _factory(^{ + NSMutableDictionary *d = [NSMutableDictionary new]; + auto window = i.window; + d[@"window"] = window.hasValue() ? window.value().buildUnsafeRawValue() : nil; + auto screen = i.screen; + d[@"screen"] = screen.hasValue() ? screen.value().buildUnsafeRawValue() : nil; + auto windowPhysicalPixels = i.windowPhysicalPixels; + d[@"windowPhysicalPixels"] = windowPhysicalPixels.hasValue() ? windowPhysicalPixels.value().buildUnsafeRawValue() : nil; + auto screenPhysicalPixels = i.screenPhysicalPixels; + d[@"screenPhysicalPixels"] = screenPhysicalPixels.hasValue() ? screenPhysicalPixels.value().buildUnsafeRawValue() : nil; + return d; +}) {} +inline JS::NativeDeviceInfo::DimensionsPayload::Builder::Builder(DimensionsPayload i) : _factory(^{ + return i.unsafeRawValue(); +}) {} +inline JS::NativeDeviceInfo::Constants::Builder::Builder(const Input i) : _factory(^{ + NSMutableDictionary *d = [NSMutableDictionary new]; + auto Dimensions = i.Dimensions.get(); + d[@"Dimensions"] = Dimensions.buildUnsafeRawValue(); + auto isIPhoneX_deprecated = i.isIPhoneX_deprecated; + d[@"isIPhoneX_deprecated"] = isIPhoneX_deprecated.hasValue() ? @((BOOL)isIPhoneX_deprecated.value()) : nil; + return d; +}) {} +inline JS::NativeDeviceInfo::Constants::Builder::Builder(Constants i) : _factory(^{ + return i.unsafeRawValue(); +}) {} +inline folly::Optional JS::NativeExceptionsManager::StackFrame::column() const +{ + id const p = _v[@"column"]; + return RCTBridgingToOptionalDouble(p); +} +inline NSString *JS::NativeExceptionsManager::StackFrame::file() const +{ + id const p = _v[@"file"]; + return RCTBridgingToOptionalString(p); +} +inline folly::Optional JS::NativeExceptionsManager::StackFrame::lineNumber() const +{ + id const p = _v[@"lineNumber"]; + return RCTBridgingToOptionalDouble(p); +} +inline NSString *JS::NativeExceptionsManager::StackFrame::methodName() const +{ + id const p = _v[@"methodName"]; + return RCTBridgingToString(p); +} +inline folly::Optional JS::NativeExceptionsManager::StackFrame::collapse() const +{ + id const p = _v[@"collapse"]; + return RCTBridgingToOptionalBool(p); +} +inline NSString *JS::NativeExceptionsManager::ExceptionData::message() const +{ + id const p = _v[@"message"]; + return RCTBridgingToString(p); +} +inline NSString *JS::NativeExceptionsManager::ExceptionData::originalMessage() const +{ + id const p = _v[@"originalMessage"]; + return RCTBridgingToOptionalString(p); +} +inline NSString *JS::NativeExceptionsManager::ExceptionData::name() const +{ + id const p = _v[@"name"]; + return RCTBridgingToOptionalString(p); +} +inline NSString *JS::NativeExceptionsManager::ExceptionData::componentStack() const +{ + id const p = _v[@"componentStack"]; + return RCTBridgingToOptionalString(p); +} +inline facebook::react::LazyVector JS::NativeExceptionsManager::ExceptionData::stack() const +{ + id const p = _v[@"stack"]; + return RCTBridgingToVec(p, ^JS::NativeExceptionsManager::StackFrame(id itemValue_0) { return JS::NativeExceptionsManager::StackFrame(itemValue_0); }); +} +inline double JS::NativeExceptionsManager::ExceptionData::id_() const +{ + id const p = _v[@"id"]; + return RCTBridgingToDouble(p); +} +inline bool JS::NativeExceptionsManager::ExceptionData::isFatal() const +{ + id const p = _v[@"isFatal"]; + return RCTBridgingToBool(p); +} +inline id _Nullable JS::NativeExceptionsManager::ExceptionData::extraData() const +{ + id const p = _v[@"extraData"]; + return p; +} + +inline folly::Optional JS::NativeFrameRateLogger::SpecSetGlobalOptionsOptions::debug() const +{ + id const p = _v[@"debug"]; + return RCTBridgingToOptionalBool(p); +} +inline folly::Optional JS::NativeFrameRateLogger::SpecSetGlobalOptionsOptions::reportStackTraces() const +{ + id const p = _v[@"reportStackTraces"]; + return RCTBridgingToOptionalBool(p); +} + +inline JS::NativeI18nManager::Constants::Builder::Builder(const Input i) : _factory(^{ + NSMutableDictionary *d = [NSMutableDictionary new]; + auto isRTL = i.isRTL.get(); + d[@"isRTL"] = @(isRTL); + auto doLeftAndRightSwapInRTL = i.doLeftAndRightSwapInRTL.get(); + d[@"doLeftAndRightSwapInRTL"] = @(doLeftAndRightSwapInRTL); + auto localeIdentifier = i.localeIdentifier.get(); + d[@"localeIdentifier"] = localeIdentifier; + return d; +}) {} +inline JS::NativeI18nManager::Constants::Builder::Builder(Constants i) : _factory(^{ + return i.unsafeRawValue(); +}) {} +inline double JS::NativeImageEditor::OptionsOffset::x() const +{ + id const p = _v[@"x"]; + return RCTBridgingToDouble(p); +} +inline double JS::NativeImageEditor::OptionsOffset::y() const +{ + id const p = _v[@"y"]; + return RCTBridgingToDouble(p); +} +inline double JS::NativeImageEditor::OptionsSize::width() const +{ + id const p = _v[@"width"]; + return RCTBridgingToDouble(p); +} +inline double JS::NativeImageEditor::OptionsSize::height() const +{ + id const p = _v[@"height"]; + return RCTBridgingToDouble(p); +} +inline double JS::NativeImageEditor::OptionsDisplaySize::width() const +{ + id const p = _v[@"width"]; + return RCTBridgingToDouble(p); +} +inline double JS::NativeImageEditor::OptionsDisplaySize::height() const +{ + id const p = _v[@"height"]; + return RCTBridgingToDouble(p); +} +inline JS::NativeImageEditor::OptionsOffset JS::NativeImageEditor::Options::offset() const +{ + id const p = _v[@"offset"]; + return JS::NativeImageEditor::OptionsOffset(p); +} +inline JS::NativeImageEditor::OptionsSize JS::NativeImageEditor::Options::size() const +{ + id const p = _v[@"size"]; + return JS::NativeImageEditor::OptionsSize(p); +} +inline folly::Optional JS::NativeImageEditor::Options::displaySize() const +{ + id const p = _v[@"displaySize"]; + return (p == nil ? folly::none : folly::make_optional(JS::NativeImageEditor::OptionsDisplaySize(p))); +} +inline NSString *JS::NativeImageEditor::Options::resizeMode() const +{ + id const p = _v[@"resizeMode"]; + return RCTBridgingToOptionalString(p); +} +inline folly::Optional JS::NativeImageEditor::Options::allowExternalStorage() const +{ + id const p = _v[@"allowExternalStorage"]; + return RCTBridgingToOptionalBool(p); +} + +inline bool JS::NativeImagePickerIOS::SpecOpenCameraDialogConfig::unmirrorFrontFacingCamera() const +{ + id const p = _v[@"unmirrorFrontFacingCamera"]; + return RCTBridgingToBool(p); +} +inline bool JS::NativeImagePickerIOS::SpecOpenCameraDialogConfig::videoMode() const +{ + id const p = _v[@"videoMode"]; + return RCTBridgingToBool(p); +} +inline bool JS::NativeImagePickerIOS::SpecOpenSelectDialogConfig::showImages() const +{ + id const p = _v[@"showImages"]; + return RCTBridgingToBool(p); +} +inline bool JS::NativeImagePickerIOS::SpecOpenSelectDialogConfig::showVideos() const +{ + id const p = _v[@"showVideos"]; + return RCTBridgingToBool(p); +} + + + +inline JS::NativeJSDevSupport::Constants::Builder::Builder(const Input i) : _factory(^{ + NSMutableDictionary *d = [NSMutableDictionary new]; + auto ERROR_CODE_EXCEPTION = i.ERROR_CODE_EXCEPTION.get(); + d[@"ERROR_CODE_EXCEPTION"] = @(ERROR_CODE_EXCEPTION); + auto ERROR_CODE_VIEW_NOT_FOUND = i.ERROR_CODE_VIEW_NOT_FOUND.get(); + d[@"ERROR_CODE_VIEW_NOT_FOUND"] = @(ERROR_CODE_VIEW_NOT_FOUND); + return d; +}) {} +inline JS::NativeJSDevSupport::Constants::Builder::Builder(Constants i) : _factory(^{ + return i.unsafeRawValue(); +}) {} + + + + +inline NSString *JS::NativeNetworkingIOS::SpecSendRequestQuery::method() const +{ + id const p = _v[@"method"]; + return RCTBridgingToString(p); +} +inline NSString *JS::NativeNetworkingIOS::SpecSendRequestQuery::url() const +{ + id const p = _v[@"url"]; + return RCTBridgingToString(p); +} +inline id JS::NativeNetworkingIOS::SpecSendRequestQuery::data() const +{ + id const p = _v[@"data"]; + return p; +} +inline id JS::NativeNetworkingIOS::SpecSendRequestQuery::headers() const +{ + id const p = _v[@"headers"]; + return p; +} +inline NSString *JS::NativeNetworkingIOS::SpecSendRequestQuery::responseType() const +{ + id const p = _v[@"responseType"]; + return RCTBridgingToString(p); +} +inline bool JS::NativeNetworkingIOS::SpecSendRequestQuery::incrementalUpdates() const +{ + id const p = _v[@"incrementalUpdates"]; + return RCTBridgingToBool(p); +} +inline double JS::NativeNetworkingIOS::SpecSendRequestQuery::timeout() const +{ + id const p = _v[@"timeout"]; + return RCTBridgingToDouble(p); +} +inline bool JS::NativeNetworkingIOS::SpecSendRequestQuery::withCredentials() const +{ + id const p = _v[@"withCredentials"]; + return RCTBridgingToBool(p); +} +inline JS::NativePlatformConstantsIOS::ConstantsReactNativeVersion::Builder::Builder(const Input i) : _factory(^{ + NSMutableDictionary *d = [NSMutableDictionary new]; + auto major = i.major.get(); + d[@"major"] = @(major); + auto minor = i.minor.get(); + d[@"minor"] = @(minor); + auto patch = i.patch.get(); + d[@"patch"] = @(patch); + auto prerelease = i.prerelease.get(); + d[@"prerelease"] = prerelease.hasValue() ? @((double)prerelease.value()) : nil; + return d; +}) {} +inline JS::NativePlatformConstantsIOS::ConstantsReactNativeVersion::Builder::Builder(ConstantsReactNativeVersion i) : _factory(^{ + return i.unsafeRawValue(); +}) {} +inline JS::NativePlatformConstantsIOS::Constants::Builder::Builder(const Input i) : _factory(^{ + NSMutableDictionary *d = [NSMutableDictionary new]; + auto isTesting = i.isTesting.get(); + d[@"isTesting"] = @(isTesting); + auto reactNativeVersion = i.reactNativeVersion.get(); + d[@"reactNativeVersion"] = reactNativeVersion.buildUnsafeRawValue(); + auto forceTouchAvailable = i.forceTouchAvailable.get(); + d[@"forceTouchAvailable"] = @(forceTouchAvailable); + auto osVersion = i.osVersion.get(); + d[@"osVersion"] = osVersion; + auto systemName = i.systemName.get(); + d[@"systemName"] = systemName; + auto interfaceIdiom = i.interfaceIdiom.get(); + d[@"interfaceIdiom"] = interfaceIdiom; + return d; +}) {} +inline JS::NativePlatformConstantsIOS::Constants::Builder::Builder(Constants i) : _factory(^{ + return i.unsafeRawValue(); +}) {} +inline bool JS::NativePushNotificationManagerIOS::SpecRequestPermissionsPermission::alert() const +{ + id const p = _v[@"alert"]; + return RCTBridgingToBool(p); +} +inline bool JS::NativePushNotificationManagerIOS::SpecRequestPermissionsPermission::badge() const +{ + id const p = _v[@"badge"]; + return RCTBridgingToBool(p); +} +inline bool JS::NativePushNotificationManagerIOS::SpecRequestPermissionsPermission::sound() const +{ + id const p = _v[@"sound"]; + return RCTBridgingToBool(p); +} +inline NSString *JS::NativePushNotificationManagerIOS::Notification::alertTitle() const +{ + id const p = _v[@"alertTitle"]; + return RCTBridgingToOptionalString(p); +} +inline folly::Optional JS::NativePushNotificationManagerIOS::Notification::fireDate() const +{ + id const p = _v[@"fireDate"]; + return RCTBridgingToOptionalDouble(p); +} +inline NSString *JS::NativePushNotificationManagerIOS::Notification::alertBody() const +{ + id const p = _v[@"alertBody"]; + return RCTBridgingToOptionalString(p); +} +inline NSString *JS::NativePushNotificationManagerIOS::Notification::alertAction() const +{ + id const p = _v[@"alertAction"]; + return RCTBridgingToOptionalString(p); +} +inline id _Nullable JS::NativePushNotificationManagerIOS::Notification::userInfo() const +{ + id const p = _v[@"userInfo"]; + return p; +} +inline NSString *JS::NativePushNotificationManagerIOS::Notification::category() const +{ + id const p = _v[@"category"]; + return RCTBridgingToOptionalString(p); +} +inline NSString *JS::NativePushNotificationManagerIOS::Notification::repeatInterval() const +{ + id const p = _v[@"repeatInterval"]; + return RCTBridgingToOptionalString(p); +} +inline folly::Optional JS::NativePushNotificationManagerIOS::Notification::applicationIconBadgeNumber() const +{ + id const p = _v[@"applicationIconBadgeNumber"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional JS::NativePushNotificationManagerIOS::Notification::isSilent() const +{ + id const p = _v[@"isSilent"]; + return RCTBridgingToOptionalBool(p); +} + + +inline JS::NativeSettingsManager::Constants::Builder::Builder(const Input i) : _factory(^{ + NSMutableDictionary *d = [NSMutableDictionary new]; + auto settings = i.settings.get(); + d[@"settings"] = settings; + return d; +}) {} +inline JS::NativeSettingsManager::Constants::Builder::Builder(Constants i) : _factory(^{ + return i.unsafeRawValue(); +}) {} +inline NSString *JS::NativeShareModule::SpecShareContent::title() const +{ + id const p = _v[@"title"]; + return RCTBridgingToOptionalString(p); +} +inline NSString *JS::NativeShareModule::SpecShareContent::message() const +{ + id const p = _v[@"message"]; + return RCTBridgingToOptionalString(p); +} + +inline JS::NativeSourceCode::Constants::Builder::Builder(const Input i) : _factory(^{ + NSMutableDictionary *d = [NSMutableDictionary new]; + auto scriptURL = i.scriptURL.get(); + d[@"scriptURL"] = scriptURL; + return d; +}) {} +inline JS::NativeSourceCode::Constants::Builder::Builder(Constants i) : _factory(^{ + return i.unsafeRawValue(); +}) {} +inline JS::NativeStatusBarManagerIOS::Constants::Builder::Builder(const Input i) : _factory(^{ + NSMutableDictionary *d = [NSMutableDictionary new]; + auto HEIGHT = i.HEIGHT.get(); + d[@"HEIGHT"] = @(HEIGHT); + auto DEFAULT_BACKGROUND_COLOR = i.DEFAULT_BACKGROUND_COLOR; + d[@"DEFAULT_BACKGROUND_COLOR"] = DEFAULT_BACKGROUND_COLOR.hasValue() ? @((double)DEFAULT_BACKGROUND_COLOR.value()) : nil; + return d; +}) {} +inline JS::NativeStatusBarManagerIOS::Constants::Builder::Builder(Constants i) : _factory(^{ + return i.unsafeRawValue(); +}) {} + + +inline id _Nullable JS::NativeWebSocketModule::SpecConnectOptions::headers() const +{ + id const p = _v[@"headers"]; + return p; +} diff --git a/Frameworks/FBReactNativeSpec.xcframework/ios-arm64/libFBReactNativeSpec.a b/Frameworks/FBReactNativeSpec.xcframework/ios-arm64/libFBReactNativeSpec.a new file mode 100644 index 0000000..3791c3c Binary files /dev/null and b/Frameworks/FBReactNativeSpec.xcframework/ios-arm64/libFBReactNativeSpec.a differ diff --git a/Frameworks/FBReactNativeSpec.xcframework/ios-arm64_x86_64-simulator/Headers/FBReactNativeSpec/FBReactNativeSpec.h b/Frameworks/FBReactNativeSpec.xcframework/ios-arm64_x86_64-simulator/Headers/FBReactNativeSpec/FBReactNativeSpec.h new file mode 100644 index 0000000..95f3661 --- /dev/null +++ b/Frameworks/FBReactNativeSpec.xcframework/ios-arm64_x86_64-simulator/Headers/FBReactNativeSpec/FBReactNativeSpec.h @@ -0,0 +1,2566 @@ +/** + * 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: GenerateModuleObjCpp + * + * We create an umbrella header (and corresponding implementation) here since + * Cxx compilation in BUCK has a limitation: source-code producing genrule()s + * must have a single output. More files => more genrule()s => slower builds. + */ + +#ifndef __cplusplus +#error This file must be compiled as Obj-C++. If you are importing it, you must change your file extension to .mm. +#endif +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + + +@protocol NativeAccessibilityInfoSpec + +- (void)isReduceMotionEnabled:(RCTResponseSenderBlock)onSuccess; +- (void)isTouchExplorationEnabled:(RCTResponseSenderBlock)onSuccess; +- (void)setAccessibilityFocus:(double)reactTag; +- (void)announceForAccessibility:(NSString *)announcement; +- (void)getRecommendedTimeoutMillis:(double)mSec + onSuccess:(RCTResponseSenderBlock)onSuccess; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeAccessibilityInfo' + */ + class JSI_EXPORT NativeAccessibilityInfoSpecJSI : public ObjCTurboModule { + public: + NativeAccessibilityInfoSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeAccessibilityManager { + struct SpecSetAccessibilityContentSizeMultipliersJSMultipliers { + folly::Optional extraSmall() const; + folly::Optional small() const; + folly::Optional medium() const; + folly::Optional large() const; + folly::Optional extraLarge() const; + folly::Optional extraExtraLarge() const; + folly::Optional extraExtraExtraLarge() const; + folly::Optional accessibilityMedium() const; + folly::Optional accessibilityLarge() const; + folly::Optional accessibilityExtraLarge() const; + folly::Optional accessibilityExtraExtraLarge() const; + folly::Optional accessibilityExtraExtraExtraLarge() const; + + SpecSetAccessibilityContentSizeMultipliersJSMultipliers(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeAccessibilityManager_SpecSetAccessibilityContentSizeMultipliersJSMultipliers) ++ (RCTManagedPointer *)JS_NativeAccessibilityManager_SpecSetAccessibilityContentSizeMultipliersJSMultipliers:(id)json; +@end +@protocol NativeAccessibilityManagerSpec + +- (void)getCurrentBoldTextState:(RCTResponseSenderBlock)onSuccess + onError:(RCTResponseSenderBlock)onError; +- (void)getCurrentGrayscaleState:(RCTResponseSenderBlock)onSuccess + onError:(RCTResponseSenderBlock)onError; +- (void)getCurrentInvertColorsState:(RCTResponseSenderBlock)onSuccess + onError:(RCTResponseSenderBlock)onError; +- (void)getCurrentReduceMotionState:(RCTResponseSenderBlock)onSuccess + onError:(RCTResponseSenderBlock)onError; +- (void)getCurrentReduceTransparencyState:(RCTResponseSenderBlock)onSuccess + onError:(RCTResponseSenderBlock)onError; +- (void)getCurrentVoiceOverState:(RCTResponseSenderBlock)onSuccess + onError:(RCTResponseSenderBlock)onError; +- (void)setAccessibilityContentSizeMultipliers:(JS::NativeAccessibilityManager::SpecSetAccessibilityContentSizeMultipliersJSMultipliers &)JSMultipliers; +- (void)setAccessibilityFocus:(double)reactTag; +- (void)announceForAccessibility:(NSString *)announcement; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeAccessibilityManager' + */ + class JSI_EXPORT NativeAccessibilityManagerSpecJSI : public ObjCTurboModule { + public: + NativeAccessibilityManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeActionSheetManager { + struct SpecShowActionSheetWithOptionsOptions { + NSString *title() const; + NSString *message() const; + folly::Optional> options() const; + folly::Optional> destructiveButtonIndices() const; + folly::Optional cancelButtonIndex() const; + folly::Optional anchor() const; + folly::Optional tintColor() const; + folly::Optional cancelButtonTintColor() const; + NSString *userInterfaceStyle() const; + folly::Optional> disabledButtonIndices() const; + + SpecShowActionSheetWithOptionsOptions(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeActionSheetManager_SpecShowActionSheetWithOptionsOptions) ++ (RCTManagedPointer *)JS_NativeActionSheetManager_SpecShowActionSheetWithOptionsOptions:(id)json; +@end +namespace JS { + namespace NativeActionSheetManager { + struct SpecShowShareActionSheetWithOptionsOptions { + NSString *message() const; + NSString *url() const; + NSString *subject() const; + folly::Optional anchor() const; + folly::Optional tintColor() const; + folly::Optional cancelButtonTintColor() const; + folly::Optional> excludedActivityTypes() const; + NSString *userInterfaceStyle() const; + + SpecShowShareActionSheetWithOptionsOptions(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeActionSheetManager_SpecShowShareActionSheetWithOptionsOptions) ++ (RCTManagedPointer *)JS_NativeActionSheetManager_SpecShowShareActionSheetWithOptionsOptions:(id)json; +@end +@protocol NativeActionSheetManagerSpec + +- (void)showActionSheetWithOptions:(JS::NativeActionSheetManager::SpecShowActionSheetWithOptionsOptions &)options + callback:(RCTResponseSenderBlock)callback; +- (void)showShareActionSheetWithOptions:(JS::NativeActionSheetManager::SpecShowShareActionSheetWithOptionsOptions &)options + failureCallback:(RCTResponseSenderBlock)failureCallback + successCallback:(RCTResponseSenderBlock)successCallback; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeActionSheetManager' + */ + class JSI_EXPORT NativeActionSheetManagerSpecJSI : public ObjCTurboModule { + public: + NativeActionSheetManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeAlertManager { + struct Args { + NSString *title() const; + NSString *message() const; + folly::Optional >> buttons() const; + NSString *type() const; + NSString *defaultValue() const; + NSString *cancelButtonKey() const; + NSString *destructiveButtonKey() const; + NSString *keyboardType() const; + + Args(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeAlertManager_Args) ++ (RCTManagedPointer *)JS_NativeAlertManager_Args:(id)json; +@end +@protocol NativeAlertManagerSpec + +- (void)alertWithArgs:(JS::NativeAlertManager::Args &)args + callback:(RCTResponseSenderBlock)callback; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeAlertManager' + */ + class JSI_EXPORT NativeAlertManagerSpecJSI : public ObjCTurboModule { + public: + NativeAlertManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeAnimatedModule { + struct EventMapping { + facebook::react::LazyVector nativeEventPath() const; + folly::Optional animatedValueTag() const; + + EventMapping(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeAnimatedModule_EventMapping) ++ (RCTManagedPointer *)JS_NativeAnimatedModule_EventMapping:(id)json; +@end +@protocol NativeAnimatedModuleSpec + +- (void)startOperationBatch; +- (void)finishOperationBatch; +- (void)createAnimatedNode:(double)tag + config:(NSDictionary *)config; +- (void)getValue:(double)tag +saveValueCallback:(RCTResponseSenderBlock)saveValueCallback; +- (void)startListeningToAnimatedNodeValue:(double)tag; +- (void)stopListeningToAnimatedNodeValue:(double)tag; +- (void)connectAnimatedNodes:(double)parentTag + childTag:(double)childTag; +- (void)disconnectAnimatedNodes:(double)parentTag + childTag:(double)childTag; +- (void)startAnimatingNode:(double)animationId + nodeTag:(double)nodeTag + config:(NSDictionary *)config + endCallback:(RCTResponseSenderBlock)endCallback; +- (void)stopAnimation:(double)animationId; +- (void)setAnimatedNodeValue:(double)nodeTag + value:(double)value; +- (void)setAnimatedNodeOffset:(double)nodeTag + offset:(double)offset; +- (void)flattenAnimatedNodeOffset:(double)nodeTag; +- (void)extractAnimatedNodeOffset:(double)nodeTag; +- (void)connectAnimatedNodeToView:(double)nodeTag + viewTag:(double)viewTag; +- (void)disconnectAnimatedNodeFromView:(double)nodeTag + viewTag:(double)viewTag; +- (void)restoreDefaultValues:(double)nodeTag; +- (void)dropAnimatedNode:(double)tag; +- (void)addAnimatedEventToView:(double)viewTag + eventName:(NSString *)eventName + eventMapping:(JS::NativeAnimatedModule::EventMapping &)eventMapping; +- (void)removeAnimatedEventFromView:(double)viewTag + eventName:(NSString *)eventName + animatedNodeTag:(double)animatedNodeTag; +- (void)addListener:(NSString *)eventName; +- (void)removeListeners:(double)count; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeAnimatedModule' + */ + class JSI_EXPORT NativeAnimatedModuleSpecJSI : public ObjCTurboModule { + public: + NativeAnimatedModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeAnimatedTurboModule { + struct EventMapping { + facebook::react::LazyVector nativeEventPath() const; + folly::Optional animatedValueTag() const; + + EventMapping(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeAnimatedTurboModule_EventMapping) ++ (RCTManagedPointer *)JS_NativeAnimatedTurboModule_EventMapping:(id)json; +@end +@protocol NativeAnimatedTurboModuleSpec + +- (void)startOperationBatch; +- (void)finishOperationBatch; +- (void)createAnimatedNode:(double)tag + config:(NSDictionary *)config; +- (void)getValue:(double)tag +saveValueCallback:(RCTResponseSenderBlock)saveValueCallback; +- (void)startListeningToAnimatedNodeValue:(double)tag; +- (void)stopListeningToAnimatedNodeValue:(double)tag; +- (void)connectAnimatedNodes:(double)parentTag + childTag:(double)childTag; +- (void)disconnectAnimatedNodes:(double)parentTag + childTag:(double)childTag; +- (void)startAnimatingNode:(double)animationId + nodeTag:(double)nodeTag + config:(NSDictionary *)config + endCallback:(RCTResponseSenderBlock)endCallback; +- (void)stopAnimation:(double)animationId; +- (void)setAnimatedNodeValue:(double)nodeTag + value:(double)value; +- (void)setAnimatedNodeOffset:(double)nodeTag + offset:(double)offset; +- (void)flattenAnimatedNodeOffset:(double)nodeTag; +- (void)extractAnimatedNodeOffset:(double)nodeTag; +- (void)connectAnimatedNodeToView:(double)nodeTag + viewTag:(double)viewTag; +- (void)disconnectAnimatedNodeFromView:(double)nodeTag + viewTag:(double)viewTag; +- (void)restoreDefaultValues:(double)nodeTag; +- (void)dropAnimatedNode:(double)tag; +- (void)addAnimatedEventToView:(double)viewTag + eventName:(NSString *)eventName + eventMapping:(JS::NativeAnimatedTurboModule::EventMapping &)eventMapping; +- (void)removeAnimatedEventFromView:(double)viewTag + eventName:(NSString *)eventName + animatedNodeTag:(double)animatedNodeTag; +- (void)addListener:(NSString *)eventName; +- (void)removeListeners:(double)count; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeAnimatedTurboModule' + */ + class JSI_EXPORT NativeAnimatedTurboModuleSpecJSI : public ObjCTurboModule { + public: + NativeAnimatedTurboModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeAnimationsDebugModuleSpec + +- (void)startRecordingFps; +- (void)stopRecordingFps:(double)animationStopTimeMs; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeAnimationsDebugModule' + */ + class JSI_EXPORT NativeAnimationsDebugModuleSpecJSI : public ObjCTurboModule { + public: + NativeAnimationsDebugModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeAppState { + struct Constants { + + struct Builder { + struct Input { + RCTRequired initialAppState; + }; + + /** Initialize with a set of values */ + Builder(const Input i); + /** Initialize with an existing Constants */ + Builder(Constants i); + /** Builds the object. Generally used only by the infrastructure. */ + NSDictionary *buildUnsafeRawValue() const { return _factory(); }; + private: + NSDictionary *(^_factory)(void); + }; + + static Constants fromUnsafeRawValue(NSDictionary *const v) { return {v}; } + NSDictionary *unsafeRawValue() const { return _v; } + private: + Constants(NSDictionary *const v) : _v(v) {} + NSDictionary *_v; + }; + } +} +@protocol NativeAppStateSpec + +- (void)getCurrentAppState:(RCTResponseSenderBlock)success + error:(RCTResponseSenderBlock)error; +- (void)addListener:(NSString *)eventName; +- (void)removeListeners:(double)count; +- (facebook::react::ModuleConstants)constantsToExport; +- (facebook::react::ModuleConstants)getConstants; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeAppState' + */ + class JSI_EXPORT NativeAppStateSpecJSI : public ObjCTurboModule { + public: + NativeAppStateSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeAppearanceSpec + +- (NSString * _Nullable)getColorScheme; +- (void)addListener:(NSString *)eventName; +- (void)removeListeners:(double)count; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeAppearance' + */ + class JSI_EXPORT NativeAppearanceSpecJSI : public ObjCTurboModule { + public: + NativeAppearanceSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeAsyncLocalStorageSpec + +- (void)multiGet:(NSArray *)keys + callback:(RCTResponseSenderBlock)callback; +- (void)multiSet:(NSArray *)kvPairs + callback:(RCTResponseSenderBlock)callback; +- (void)multiMerge:(NSArray *)kvPairs + callback:(RCTResponseSenderBlock)callback; +- (void)multiRemove:(NSArray *)keys + callback:(RCTResponseSenderBlock)callback; +- (void)clear:(RCTResponseSenderBlock)callback; +- (void)getAllKeys:(RCTResponseSenderBlock)callback; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeAsyncLocalStorage' + */ + class JSI_EXPORT NativeAsyncLocalStorageSpecJSI : public ObjCTurboModule { + public: + NativeAsyncLocalStorageSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeAsyncSQLiteDBStorageSpec + +- (void)multiGet:(NSArray *)keys + callback:(RCTResponseSenderBlock)callback; +- (void)multiSet:(NSArray *)kvPairs + callback:(RCTResponseSenderBlock)callback; +- (void)multiMerge:(NSArray *)kvPairs + callback:(RCTResponseSenderBlock)callback; +- (void)multiRemove:(NSArray *)keys + callback:(RCTResponseSenderBlock)callback; +- (void)clear:(RCTResponseSenderBlock)callback; +- (void)getAllKeys:(RCTResponseSenderBlock)callback; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeAsyncSQLiteDBStorage' + */ + class JSI_EXPORT NativeAsyncSQLiteDBStorageSpecJSI : public ObjCTurboModule { + public: + NativeAsyncSQLiteDBStorageSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeBlobModule { + struct Constants { + + struct Builder { + struct Input { + RCTRequired BLOB_URI_SCHEME; + RCTRequired BLOB_URI_HOST; + }; + + /** Initialize with a set of values */ + Builder(const Input i); + /** Initialize with an existing Constants */ + Builder(Constants i); + /** Builds the object. Generally used only by the infrastructure. */ + NSDictionary *buildUnsafeRawValue() const { return _factory(); }; + private: + NSDictionary *(^_factory)(void); + }; + + static Constants fromUnsafeRawValue(NSDictionary *const v) { return {v}; } + NSDictionary *unsafeRawValue() const { return _v; } + private: + Constants(NSDictionary *const v) : _v(v) {} + NSDictionary *_v; + }; + } +} +@protocol NativeBlobModuleSpec + +- (void)addNetworkingHandler; +- (void)addWebSocketHandler:(double)id; +- (void)removeWebSocketHandler:(double)id; +- (void)sendOverSocket:(NSDictionary *)blob + socketID:(double)socketID; +- (void)createFromParts:(NSArray *)parts + withId:(NSString *)withId; +- (void)release:(NSString *)blobId; +- (facebook::react::ModuleConstants)constantsToExport; +- (facebook::react::ModuleConstants)getConstants; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeBlobModule' + */ + class JSI_EXPORT NativeBlobModuleSpecJSI : public ObjCTurboModule { + public: + NativeBlobModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeBugReportingSpec + +- (void)startReportAProblemFlow; +- (void)setExtraData:(NSDictionary *)extraData + extraFiles:(NSDictionary *)extraFiles; +- (void)setCategoryID:(NSString *)categoryID; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeBugReporting' + */ + class JSI_EXPORT NativeBugReportingSpecJSI : public ObjCTurboModule { + public: + NativeBugReportingSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeClipboardSpec + +- (void)getString:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; +- (void)setString:(NSString *)content; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeClipboard' + */ + class JSI_EXPORT NativeClipboardSpecJSI : public ObjCTurboModule { + public: + NativeClipboardSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeDevLoadingViewSpec + +- (void)showMessage:(NSString *)message + withColor:(NSNumber *)withColor +withBackgroundColor:(NSNumber *)withBackgroundColor; +- (void)hide; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeDevLoadingView' + */ + class JSI_EXPORT NativeDevLoadingViewSpecJSI : public ObjCTurboModule { + public: + NativeDevLoadingViewSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeDevMenuSpec + +- (void)show; +- (void)reload; +- (void)debugRemotely:(BOOL)enableDebug; +- (void)setProfilingEnabled:(BOOL)enabled; +- (void)setHotLoadingEnabled:(BOOL)enabled; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeDevMenu' + */ + class JSI_EXPORT NativeDevMenuSpecJSI : public ObjCTurboModule { + public: + NativeDevMenuSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeDevSettingsSpec + +- (void)reload; +- (void)reloadWithReason:(NSString *)reason; +- (void)onFastRefresh; +- (void)setHotLoadingEnabled:(BOOL)isHotLoadingEnabled; +- (void)setIsDebuggingRemotely:(BOOL)isDebuggingRemotelyEnabled; +- (void)setProfilingEnabled:(BOOL)isProfilingEnabled; +- (void)toggleElementInspector; +- (void)addMenuItem:(NSString *)title; +- (void)addListener:(NSString *)eventName; +- (void)removeListeners:(double)count; +- (void)setIsShakeToShowDevMenuEnabled:(BOOL)enabled; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeDevSettings' + */ + class JSI_EXPORT NativeDevSettingsSpecJSI : public ObjCTurboModule { + public: + NativeDevSettingsSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeDevSplitBundleLoaderSpec + +- (void)loadBundle:(NSString *)bundlePath + resolve:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeDevSplitBundleLoader' + */ + class JSI_EXPORT NativeDevSplitBundleLoaderSpecJSI : public ObjCTurboModule { + public: + NativeDevSplitBundleLoaderSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeDeviceEventManagerSpec + +- (void)invokeDefaultBackPressHandler; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeDeviceEventManager' + */ + class JSI_EXPORT NativeDeviceEventManagerSpecJSI : public ObjCTurboModule { + public: + NativeDeviceEventManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeDeviceInfo { + struct DisplayMetrics { + + struct Builder { + struct Input { + RCTRequired width; + RCTRequired height; + RCTRequired scale; + RCTRequired fontScale; + }; + + /** Initialize with a set of values */ + Builder(const Input i); + /** Initialize with an existing DisplayMetrics */ + Builder(DisplayMetrics i); + /** Builds the object. Generally used only by the infrastructure. */ + NSDictionary *buildUnsafeRawValue() const { return _factory(); }; + private: + NSDictionary *(^_factory)(void); + }; + + static DisplayMetrics fromUnsafeRawValue(NSDictionary *const v) { return {v}; } + NSDictionary *unsafeRawValue() const { return _v; } + private: + DisplayMetrics(NSDictionary *const v) : _v(v) {} + NSDictionary *_v; + }; + } +} +namespace JS { + namespace NativeDeviceInfo { + struct DisplayMetricsAndroid { + + struct Builder { + struct Input { + RCTRequired width; + RCTRequired height; + RCTRequired scale; + RCTRequired fontScale; + RCTRequired densityDpi; + }; + + /** Initialize with a set of values */ + Builder(const Input i); + /** Initialize with an existing DisplayMetricsAndroid */ + Builder(DisplayMetricsAndroid i); + /** Builds the object. Generally used only by the infrastructure. */ + NSDictionary *buildUnsafeRawValue() const { return _factory(); }; + private: + NSDictionary *(^_factory)(void); + }; + + static DisplayMetricsAndroid fromUnsafeRawValue(NSDictionary *const v) { return {v}; } + NSDictionary *unsafeRawValue() const { return _v; } + private: + DisplayMetricsAndroid(NSDictionary *const v) : _v(v) {} + NSDictionary *_v; + }; + } +} +namespace JS { + namespace NativeDeviceInfo { + struct DimensionsPayload { + + struct Builder { + struct Input { + folly::Optional window; + folly::Optional screen; + folly::Optional windowPhysicalPixels; + folly::Optional screenPhysicalPixels; + }; + + /** Initialize with a set of values */ + Builder(const Input i); + /** Initialize with an existing DimensionsPayload */ + Builder(DimensionsPayload i); + /** Builds the object. Generally used only by the infrastructure. */ + NSDictionary *buildUnsafeRawValue() const { return _factory(); }; + private: + NSDictionary *(^_factory)(void); + }; + + static DimensionsPayload fromUnsafeRawValue(NSDictionary *const v) { return {v}; } + NSDictionary *unsafeRawValue() const { return _v; } + private: + DimensionsPayload(NSDictionary *const v) : _v(v) {} + NSDictionary *_v; + }; + } +} +namespace JS { + namespace NativeDeviceInfo { + struct Constants { + + struct Builder { + struct Input { + RCTRequired Dimensions; + folly::Optional isIPhoneX_deprecated; + }; + + /** Initialize with a set of values */ + Builder(const Input i); + /** Initialize with an existing Constants */ + Builder(Constants i); + /** Builds the object. Generally used only by the infrastructure. */ + NSDictionary *buildUnsafeRawValue() const { return _factory(); }; + private: + NSDictionary *(^_factory)(void); + }; + + static Constants fromUnsafeRawValue(NSDictionary *const v) { return {v}; } + NSDictionary *unsafeRawValue() const { return _v; } + private: + Constants(NSDictionary *const v) : _v(v) {} + NSDictionary *_v; + }; + } +} +@protocol NativeDeviceInfoSpec + +- (facebook::react::ModuleConstants)constantsToExport; +- (facebook::react::ModuleConstants)getConstants; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeDeviceInfo' + */ + class JSI_EXPORT NativeDeviceInfoSpecJSI : public ObjCTurboModule { + public: + NativeDeviceInfoSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeExceptionsManager { + struct StackFrame { + folly::Optional column() const; + NSString *file() const; + folly::Optional lineNumber() const; + NSString *methodName() const; + folly::Optional collapse() const; + + StackFrame(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeExceptionsManager_StackFrame) ++ (RCTManagedPointer *)JS_NativeExceptionsManager_StackFrame:(id)json; +@end +namespace JS { + namespace NativeExceptionsManager { + struct ExceptionData { + NSString *message() const; + NSString *originalMessage() const; + NSString *name() const; + NSString *componentStack() const; + facebook::react::LazyVector stack() const; + double id_() const; + bool isFatal() const; + id _Nullable extraData() const; + + ExceptionData(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeExceptionsManager_ExceptionData) ++ (RCTManagedPointer *)JS_NativeExceptionsManager_ExceptionData:(id)json; +@end +@protocol NativeExceptionsManagerSpec + +- (void)reportFatalException:(NSString *)message + stack:(NSArray *)stack + exceptionId:(double)exceptionId; +- (void)reportSoftException:(NSString *)message + stack:(NSArray *)stack + exceptionId:(double)exceptionId; +- (void)reportException:(JS::NativeExceptionsManager::ExceptionData &)data; +- (void)updateExceptionMessage:(NSString *)message + stack:(NSArray *)stack + exceptionId:(double)exceptionId; +- (void)dismissRedbox; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeExceptionsManager' + */ + class JSI_EXPORT NativeExceptionsManagerSpecJSI : public ObjCTurboModule { + public: + NativeExceptionsManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeFileReaderModuleSpec + +- (void)readAsDataURL:(NSDictionary *)data + resolve:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; +- (void)readAsText:(NSDictionary *)data + encoding:(NSString *)encoding + resolve:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeFileReaderModule' + */ + class JSI_EXPORT NativeFileReaderModuleSpecJSI : public ObjCTurboModule { + public: + NativeFileReaderModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeFrameRateLogger { + struct SpecSetGlobalOptionsOptions { + folly::Optional debug() const; + folly::Optional reportStackTraces() const; + + SpecSetGlobalOptionsOptions(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeFrameRateLogger_SpecSetGlobalOptionsOptions) ++ (RCTManagedPointer *)JS_NativeFrameRateLogger_SpecSetGlobalOptionsOptions:(id)json; +@end +@protocol NativeFrameRateLoggerSpec + +- (void)setGlobalOptions:(JS::NativeFrameRateLogger::SpecSetGlobalOptionsOptions &)options; +- (void)setContext:(NSString *)context; +- (void)beginScroll; +- (void)endScroll; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeFrameRateLogger' + */ + class JSI_EXPORT NativeFrameRateLoggerSpecJSI : public ObjCTurboModule { + public: + NativeFrameRateLoggerSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeHeadlessJsTaskSupportSpec + +- (void)notifyTaskFinished:(double)taskId; +- (void)notifyTaskRetry:(double)taskId + resolve:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeHeadlessJsTaskSupport' + */ + class JSI_EXPORT NativeHeadlessJsTaskSupportSpecJSI : public ObjCTurboModule { + public: + NativeHeadlessJsTaskSupportSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeI18nManager { + struct Constants { + + struct Builder { + struct Input { + RCTRequired isRTL; + RCTRequired doLeftAndRightSwapInRTL; + RCTRequired localeIdentifier; + }; + + /** Initialize with a set of values */ + Builder(const Input i); + /** Initialize with an existing Constants */ + Builder(Constants i); + /** Builds the object. Generally used only by the infrastructure. */ + NSDictionary *buildUnsafeRawValue() const { return _factory(); }; + private: + NSDictionary *(^_factory)(void); + }; + + static Constants fromUnsafeRawValue(NSDictionary *const v) { return {v}; } + NSDictionary *unsafeRawValue() const { return _v; } + private: + Constants(NSDictionary *const v) : _v(v) {} + NSDictionary *_v; + }; + } +} +@protocol NativeI18nManagerSpec + +- (void)allowRTL:(BOOL)allowRTL; +- (void)forceRTL:(BOOL)forceRTL; +- (void)swapLeftAndRightInRTL:(BOOL)flipStyles; +- (facebook::react::ModuleConstants)constantsToExport; +- (facebook::react::ModuleConstants)getConstants; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeI18nManager' + */ + class JSI_EXPORT NativeI18nManagerSpecJSI : public ObjCTurboModule { + public: + NativeI18nManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeImageEditor { + struct OptionsOffset { + double x() const; + double y() const; + + OptionsOffset(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeImageEditor_OptionsOffset) ++ (RCTManagedPointer *)JS_NativeImageEditor_OptionsOffset:(id)json; +@end +namespace JS { + namespace NativeImageEditor { + struct OptionsSize { + double width() const; + double height() const; + + OptionsSize(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeImageEditor_OptionsSize) ++ (RCTManagedPointer *)JS_NativeImageEditor_OptionsSize:(id)json; +@end +namespace JS { + namespace NativeImageEditor { + struct OptionsDisplaySize { + double width() const; + double height() const; + + OptionsDisplaySize(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeImageEditor_OptionsDisplaySize) ++ (RCTManagedPointer *)JS_NativeImageEditor_OptionsDisplaySize:(id)json; +@end +namespace JS { + namespace NativeImageEditor { + struct Options { + JS::NativeImageEditor::OptionsOffset offset() const; + JS::NativeImageEditor::OptionsSize size() const; + folly::Optional displaySize() const; + NSString *resizeMode() const; + folly::Optional allowExternalStorage() const; + + Options(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeImageEditor_Options) ++ (RCTManagedPointer *)JS_NativeImageEditor_Options:(id)json; +@end +@protocol NativeImageEditorSpec + +- (void)cropImage:(NSString *)uri + cropData:(JS::NativeImageEditor::Options &)cropData + successCallback:(RCTResponseSenderBlock)successCallback + errorCallback:(RCTResponseSenderBlock)errorCallback; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeImageEditor' + */ + class JSI_EXPORT NativeImageEditorSpecJSI : public ObjCTurboModule { + public: + NativeImageEditorSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeImageLoaderIOSSpec + +- (void)getSize:(NSString *)uri + resolve:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; +- (void)getSizeWithHeaders:(NSString *)uri + headers:(NSDictionary *)headers + resolve:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; +- (void)prefetchImage:(NSString *)uri + resolve:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; +- (void)prefetchImageWithMetadata:(NSString *)uri + queryRootName:(NSString *)queryRootName + rootTag:(double)rootTag + resolve:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; +- (void)queryCache:(NSArray *)uris + resolve:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeImageLoaderIOS' + */ + class JSI_EXPORT NativeImageLoaderIOSSpecJSI : public ObjCTurboModule { + public: + NativeImageLoaderIOSSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeImagePickerIOS { + struct SpecOpenCameraDialogConfig { + bool unmirrorFrontFacingCamera() const; + bool videoMode() const; + + SpecOpenCameraDialogConfig(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeImagePickerIOS_SpecOpenCameraDialogConfig) ++ (RCTManagedPointer *)JS_NativeImagePickerIOS_SpecOpenCameraDialogConfig:(id)json; +@end +namespace JS { + namespace NativeImagePickerIOS { + struct SpecOpenSelectDialogConfig { + bool showImages() const; + bool showVideos() const; + + SpecOpenSelectDialogConfig(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeImagePickerIOS_SpecOpenSelectDialogConfig) ++ (RCTManagedPointer *)JS_NativeImagePickerIOS_SpecOpenSelectDialogConfig:(id)json; +@end +@protocol NativeImagePickerIOSSpec + +- (void)canRecordVideos:(RCTResponseSenderBlock)callback; +- (void)canUseCamera:(RCTResponseSenderBlock)callback; +- (void)openCameraDialog:(JS::NativeImagePickerIOS::SpecOpenCameraDialogConfig &)config + successCallback:(RCTResponseSenderBlock)successCallback + cancelCallback:(RCTResponseSenderBlock)cancelCallback; +- (void)openSelectDialog:(JS::NativeImagePickerIOS::SpecOpenSelectDialogConfig &)config + successCallback:(RCTResponseSenderBlock)successCallback + cancelCallback:(RCTResponseSenderBlock)cancelCallback; +- (void)clearAllPendingVideos; +- (void)removePendingVideo:(NSString *)url; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeImagePickerIOS' + */ + class JSI_EXPORT NativeImagePickerIOSSpecJSI : public ObjCTurboModule { + public: + NativeImagePickerIOSSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeImageStoreIOSSpec + +- (void)getBase64ForTag:(NSString *)uri + successCallback:(RCTResponseSenderBlock)successCallback + errorCallback:(RCTResponseSenderBlock)errorCallback; +- (void)hasImageForTag:(NSString *)uri + callback:(RCTResponseSenderBlock)callback; +- (void)removeImageForTag:(NSString *)uri; +- (void)addImageFromBase64:(NSString *)base64ImageData + successCallback:(RCTResponseSenderBlock)successCallback + errorCallback:(RCTResponseSenderBlock)errorCallback; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeImageStoreIOS' + */ + class JSI_EXPORT NativeImageStoreIOSSpecJSI : public ObjCTurboModule { + public: + NativeImageStoreIOSSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeJSCHeapCaptureSpec + +- (void)captureComplete:(NSString *)path + error:(NSString * _Nullable)error; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeJSCHeapCapture' + */ + class JSI_EXPORT NativeJSCHeapCaptureSpecJSI : public ObjCTurboModule { + public: + NativeJSCHeapCaptureSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeJSCSamplingProfilerSpec + +- (void)operationComplete:(double)token + result:(NSString * _Nullable)result + error:(NSString * _Nullable)error; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeJSCSamplingProfiler' + */ + class JSI_EXPORT NativeJSCSamplingProfilerSpecJSI : public ObjCTurboModule { + public: + NativeJSCSamplingProfilerSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeJSDevSupport { + struct Constants { + + struct Builder { + struct Input { + RCTRequired ERROR_CODE_EXCEPTION; + RCTRequired ERROR_CODE_VIEW_NOT_FOUND; + }; + + /** Initialize with a set of values */ + Builder(const Input i); + /** Initialize with an existing Constants */ + Builder(Constants i); + /** Builds the object. Generally used only by the infrastructure. */ + NSDictionary *buildUnsafeRawValue() const { return _factory(); }; + private: + NSDictionary *(^_factory)(void); + }; + + static Constants fromUnsafeRawValue(NSDictionary *const v) { return {v}; } + NSDictionary *unsafeRawValue() const { return _v; } + private: + Constants(NSDictionary *const v) : _v(v) {} + NSDictionary *_v; + }; + } +} +@protocol NativeJSDevSupportSpec + +- (void)onSuccess:(NSString *)data; +- (void)onFailure:(double)errorCode + error:(NSString *)error; +- (facebook::react::ModuleConstants)constantsToExport; +- (facebook::react::ModuleConstants)getConstants; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeJSDevSupport' + */ + class JSI_EXPORT NativeJSDevSupportSpecJSI : public ObjCTurboModule { + public: + NativeJSDevSupportSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeKeyboardObserverSpec + +- (void)addListener:(NSString *)eventName; +- (void)removeListeners:(double)count; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeKeyboardObserver' + */ + class JSI_EXPORT NativeKeyboardObserverSpecJSI : public ObjCTurboModule { + public: + NativeKeyboardObserverSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeLinkingManagerSpec + +- (void)getInitialURL:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; +- (void)canOpenURL:(NSString *)url + resolve:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; +- (void)openURL:(NSString *)url + resolve:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; +- (void)openSettings:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; +- (void)addListener:(NSString *)eventName; +- (void)removeListeners:(double)count; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeLinkingManager' + */ + class JSI_EXPORT NativeLinkingManagerSpecJSI : public ObjCTurboModule { + public: + NativeLinkingManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeLogBoxSpec + +- (void)show; +- (void)hide; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeLogBox' + */ + class JSI_EXPORT NativeLogBoxSpecJSI : public ObjCTurboModule { + public: + NativeLogBoxSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeModalManagerSpec + +- (void)addListener:(NSString *)eventName; +- (void)removeListeners:(double)count; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeModalManager' + */ + class JSI_EXPORT NativeModalManagerSpecJSI : public ObjCTurboModule { + public: + NativeModalManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeNetworkingIOS { + struct SpecSendRequestQuery { + NSString *method() const; + NSString *url() const; + id data() const; + id headers() const; + NSString *responseType() const; + bool incrementalUpdates() const; + double timeout() const; + bool withCredentials() const; + + SpecSendRequestQuery(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeNetworkingIOS_SpecSendRequestQuery) ++ (RCTManagedPointer *)JS_NativeNetworkingIOS_SpecSendRequestQuery:(id)json; +@end +@protocol NativeNetworkingIOSSpec + +- (void)sendRequest:(JS::NativeNetworkingIOS::SpecSendRequestQuery &)query + callback:(RCTResponseSenderBlock)callback; +- (void)abortRequest:(double)requestId; +- (void)clearCookies:(RCTResponseSenderBlock)callback; +- (void)addListener:(NSString *)eventName; +- (void)removeListeners:(double)count; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeNetworkingIOS' + */ + class JSI_EXPORT NativeNetworkingIOSSpecJSI : public ObjCTurboModule { + public: + NativeNetworkingIOSSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativePlatformConstantsIOS { + struct ConstantsReactNativeVersion { + + struct Builder { + struct Input { + RCTRequired major; + RCTRequired minor; + RCTRequired patch; + RCTRequired> prerelease; + }; + + /** Initialize with a set of values */ + Builder(const Input i); + /** Initialize with an existing ConstantsReactNativeVersion */ + Builder(ConstantsReactNativeVersion i); + /** Builds the object. Generally used only by the infrastructure. */ + NSDictionary *buildUnsafeRawValue() const { return _factory(); }; + private: + NSDictionary *(^_factory)(void); + }; + + static ConstantsReactNativeVersion fromUnsafeRawValue(NSDictionary *const v) { return {v}; } + NSDictionary *unsafeRawValue() const { return _v; } + private: + ConstantsReactNativeVersion(NSDictionary *const v) : _v(v) {} + NSDictionary *_v; + }; + } +} +namespace JS { + namespace NativePlatformConstantsIOS { + struct Constants { + + struct Builder { + struct Input { + RCTRequired isTesting; + RCTRequired reactNativeVersion; + RCTRequired forceTouchAvailable; + RCTRequired osVersion; + RCTRequired systemName; + RCTRequired interfaceIdiom; + }; + + /** Initialize with a set of values */ + Builder(const Input i); + /** Initialize with an existing Constants */ + Builder(Constants i); + /** Builds the object. Generally used only by the infrastructure. */ + NSDictionary *buildUnsafeRawValue() const { return _factory(); }; + private: + NSDictionary *(^_factory)(void); + }; + + static Constants fromUnsafeRawValue(NSDictionary *const v) { return {v}; } + NSDictionary *unsafeRawValue() const { return _v; } + private: + Constants(NSDictionary *const v) : _v(v) {} + NSDictionary *_v; + }; + } +} +@protocol NativePlatformConstantsIOSSpec + +- (facebook::react::ModuleConstants)constantsToExport; +- (facebook::react::ModuleConstants)getConstants; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativePlatformConstantsIOS' + */ + class JSI_EXPORT NativePlatformConstantsIOSSpecJSI : public ObjCTurboModule { + public: + NativePlatformConstantsIOSSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativePushNotificationManagerIOS { + struct SpecRequestPermissionsPermission { + bool alert() const; + bool badge() const; + bool sound() const; + + SpecRequestPermissionsPermission(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativePushNotificationManagerIOS_SpecRequestPermissionsPermission) ++ (RCTManagedPointer *)JS_NativePushNotificationManagerIOS_SpecRequestPermissionsPermission:(id)json; +@end +namespace JS { + namespace NativePushNotificationManagerIOS { + struct Notification { + NSString *alertTitle() const; + folly::Optional fireDate() const; + NSString *alertBody() const; + NSString *alertAction() const; + id _Nullable userInfo() const; + NSString *category() const; + NSString *repeatInterval() const; + folly::Optional applicationIconBadgeNumber() const; + folly::Optional isSilent() const; + + Notification(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativePushNotificationManagerIOS_Notification) ++ (RCTManagedPointer *)JS_NativePushNotificationManagerIOS_Notification:(id)json; +@end +@protocol NativePushNotificationManagerIOSSpec + +- (void)onFinishRemoteNotification:(NSString *)notificationId + fetchResult:(NSString *)fetchResult; +- (void)setApplicationIconBadgeNumber:(double)num; +- (void)getApplicationIconBadgeNumber:(RCTResponseSenderBlock)callback; +- (void)requestPermissions:(JS::NativePushNotificationManagerIOS::SpecRequestPermissionsPermission &)permission + resolve:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; +- (void)abandonPermissions; +- (void)checkPermissions:(RCTResponseSenderBlock)callback; +- (void)presentLocalNotification:(JS::NativePushNotificationManagerIOS::Notification &)notification; +- (void)scheduleLocalNotification:(JS::NativePushNotificationManagerIOS::Notification &)notification; +- (void)cancelAllLocalNotifications; +- (void)cancelLocalNotifications:(NSDictionary *)userInfo; +- (void)getInitialNotification:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; +- (void)getScheduledLocalNotifications:(RCTResponseSenderBlock)callback; +- (void)removeAllDeliveredNotifications; +- (void)removeDeliveredNotifications:(NSArray *)identifiers; +- (void)getDeliveredNotifications:(RCTResponseSenderBlock)callback; +- (void)getAuthorizationStatus:(RCTResponseSenderBlock)callback; +- (void)addListener:(NSString *)eventType; +- (void)removeListeners:(double)count; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativePushNotificationManagerIOS' + */ + class JSI_EXPORT NativePushNotificationManagerIOSSpecJSI : public ObjCTurboModule { + public: + NativePushNotificationManagerIOSSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeRedBoxSpec + +- (void)setExtraData:(NSDictionary *)extraData + forIdentifier:(NSString *)forIdentifier; +- (void)dismiss; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeRedBox' + */ + class JSI_EXPORT NativeRedBoxSpecJSI : public ObjCTurboModule { + public: + NativeRedBoxSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeSegmentFetcherSpec + +- (void)fetchSegment:(double)segmentId + options:(NSDictionary *)options + callback:(RCTResponseSenderBlock)callback; +- (void)getSegment:(double)segmentId + options:(NSDictionary *)options + callback:(RCTResponseSenderBlock)callback; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeSegmentFetcher' + */ + class JSI_EXPORT NativeSegmentFetcherSpecJSI : public ObjCTurboModule { + public: + NativeSegmentFetcherSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeSettingsManager { + struct Constants { + + struct Builder { + struct Input { + RCTRequired > settings; + }; + + /** Initialize with a set of values */ + Builder(const Input i); + /** Initialize with an existing Constants */ + Builder(Constants i); + /** Builds the object. Generally used only by the infrastructure. */ + NSDictionary *buildUnsafeRawValue() const { return _factory(); }; + private: + NSDictionary *(^_factory)(void); + }; + + static Constants fromUnsafeRawValue(NSDictionary *const v) { return {v}; } + NSDictionary *unsafeRawValue() const { return _v; } + private: + Constants(NSDictionary *const v) : _v(v) {} + NSDictionary *_v; + }; + } +} +@protocol NativeSettingsManagerSpec + +- (void)setValues:(NSDictionary *)values; +- (void)deleteValues:(NSArray *)values; +- (facebook::react::ModuleConstants)constantsToExport; +- (facebook::react::ModuleConstants)getConstants; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeSettingsManager' + */ + class JSI_EXPORT NativeSettingsManagerSpecJSI : public ObjCTurboModule { + public: + NativeSettingsManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeShareModule { + struct SpecShareContent { + NSString *title() const; + NSString *message() const; + + SpecShareContent(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeShareModule_SpecShareContent) ++ (RCTManagedPointer *)JS_NativeShareModule_SpecShareContent:(id)json; +@end +@protocol NativeShareModuleSpec + +- (void)share:(JS::NativeShareModule::SpecShareContent &)content + dialogTitle:(NSString *)dialogTitle + resolve:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeShareModule' + */ + class JSI_EXPORT NativeShareModuleSpecJSI : public ObjCTurboModule { + public: + NativeShareModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeSoundManagerSpec + +- (void)playTouchSound; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeSoundManager' + */ + class JSI_EXPORT NativeSoundManagerSpecJSI : public ObjCTurboModule { + public: + NativeSoundManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeSourceCode { + struct Constants { + + struct Builder { + struct Input { + RCTRequired scriptURL; + }; + + /** Initialize with a set of values */ + Builder(const Input i); + /** Initialize with an existing Constants */ + Builder(Constants i); + /** Builds the object. Generally used only by the infrastructure. */ + NSDictionary *buildUnsafeRawValue() const { return _factory(); }; + private: + NSDictionary *(^_factory)(void); + }; + + static Constants fromUnsafeRawValue(NSDictionary *const v) { return {v}; } + NSDictionary *unsafeRawValue() const { return _v; } + private: + Constants(NSDictionary *const v) : _v(v) {} + NSDictionary *_v; + }; + } +} +@protocol NativeSourceCodeSpec + +- (facebook::react::ModuleConstants)constantsToExport; +- (facebook::react::ModuleConstants)getConstants; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeSourceCode' + */ + class JSI_EXPORT NativeSourceCodeSpecJSI : public ObjCTurboModule { + public: + NativeSourceCodeSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeStatusBarManagerIOS { + struct Constants { + + struct Builder { + struct Input { + RCTRequired HEIGHT; + folly::Optional DEFAULT_BACKGROUND_COLOR; + }; + + /** Initialize with a set of values */ + Builder(const Input i); + /** Initialize with an existing Constants */ + Builder(Constants i); + /** Builds the object. Generally used only by the infrastructure. */ + NSDictionary *buildUnsafeRawValue() const { return _factory(); }; + private: + NSDictionary *(^_factory)(void); + }; + + static Constants fromUnsafeRawValue(NSDictionary *const v) { return {v}; } + NSDictionary *unsafeRawValue() const { return _v; } + private: + Constants(NSDictionary *const v) : _v(v) {} + NSDictionary *_v; + }; + } +} +@protocol NativeStatusBarManagerIOSSpec + +- (void)getHeight:(RCTResponseSenderBlock)callback; +- (void)setNetworkActivityIndicatorVisible:(BOOL)visible; +- (void)addListener:(NSString *)eventType; +- (void)removeListeners:(double)count; +- (void)setStyle:(NSString * _Nullable)statusBarStyle + animated:(BOOL)animated; +- (void)setHidden:(BOOL)hidden + withAnimation:(NSString *)withAnimation; +- (facebook::react::ModuleConstants)constantsToExport; +- (facebook::react::ModuleConstants)getConstants; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeStatusBarManagerIOS' + */ + class JSI_EXPORT NativeStatusBarManagerIOSSpecJSI : public ObjCTurboModule { + public: + NativeStatusBarManagerIOSSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeTimingSpec + +- (void)createTimer:(double)callbackID + duration:(double)duration + jsSchedulingTime:(double)jsSchedulingTime + repeats:(BOOL)repeats; +- (void)deleteTimer:(double)timerID; +- (void)setSendIdleEvents:(BOOL)sendIdleEvents; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeTiming' + */ + class JSI_EXPORT NativeTimingSpecJSI : public ObjCTurboModule { + public: + NativeTimingSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +@protocol NativeVibrationSpec + +- (void)vibrate:(double)pattern; +- (void)vibrateByPattern:(NSArray *)pattern + repeat:(double)repeat; +- (void)cancel; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeVibration' + */ + class JSI_EXPORT NativeVibrationSpecJSI : public ObjCTurboModule { + public: + NativeVibrationSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook +namespace JS { + namespace NativeWebSocketModule { + struct SpecConnectOptions { + id _Nullable headers() const; + + SpecConnectOptions(NSDictionary *const v) : _v(v) {} + private: + NSDictionary *_v; + }; + } +} + +@interface RCTCxxConvert (NativeWebSocketModule_SpecConnectOptions) ++ (RCTManagedPointer *)JS_NativeWebSocketModule_SpecConnectOptions:(id)json; +@end +@protocol NativeWebSocketModuleSpec + +- (void)connect:(NSString *)url + protocols:(NSArray * _Nullable)protocols + options:(JS::NativeWebSocketModule::SpecConnectOptions &)options + socketID:(double)socketID; +- (void)send:(NSString *)message + forSocketID:(double)forSocketID; +- (void)sendBinary:(NSString *)base64String + forSocketID:(double)forSocketID; +- (void)ping:(double)socketID; +- (void)close:(double)code + reason:(NSString *)reason + socketID:(double)socketID; +- (void)addListener:(NSString *)eventName; +- (void)removeListeners:(double)count; + +@end +namespace facebook { + namespace react { + /** + * ObjC++ class for module 'NativeWebSocketModule' + */ + class JSI_EXPORT NativeWebSocketModuleSpecJSI : public ObjCTurboModule { + public: + NativeWebSocketModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms); + }; + } // namespace react +} // namespace facebook + +inline folly::Optional JS::NativeAccessibilityManager::SpecSetAccessibilityContentSizeMultipliersJSMultipliers::extraSmall() const +{ + id const p = _v[@"extraSmall"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional JS::NativeAccessibilityManager::SpecSetAccessibilityContentSizeMultipliersJSMultipliers::small() const +{ + id const p = _v[@"small"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional JS::NativeAccessibilityManager::SpecSetAccessibilityContentSizeMultipliersJSMultipliers::medium() const +{ + id const p = _v[@"medium"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional JS::NativeAccessibilityManager::SpecSetAccessibilityContentSizeMultipliersJSMultipliers::large() const +{ + id const p = _v[@"large"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional JS::NativeAccessibilityManager::SpecSetAccessibilityContentSizeMultipliersJSMultipliers::extraLarge() const +{ + id const p = _v[@"extraLarge"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional JS::NativeAccessibilityManager::SpecSetAccessibilityContentSizeMultipliersJSMultipliers::extraExtraLarge() const +{ + id const p = _v[@"extraExtraLarge"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional JS::NativeAccessibilityManager::SpecSetAccessibilityContentSizeMultipliersJSMultipliers::extraExtraExtraLarge() const +{ + id const p = _v[@"extraExtraExtraLarge"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional JS::NativeAccessibilityManager::SpecSetAccessibilityContentSizeMultipliersJSMultipliers::accessibilityMedium() const +{ + id const p = _v[@"accessibilityMedium"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional JS::NativeAccessibilityManager::SpecSetAccessibilityContentSizeMultipliersJSMultipliers::accessibilityLarge() const +{ + id const p = _v[@"accessibilityLarge"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional JS::NativeAccessibilityManager::SpecSetAccessibilityContentSizeMultipliersJSMultipliers::accessibilityExtraLarge() const +{ + id const p = _v[@"accessibilityExtraLarge"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional JS::NativeAccessibilityManager::SpecSetAccessibilityContentSizeMultipliersJSMultipliers::accessibilityExtraExtraLarge() const +{ + id const p = _v[@"accessibilityExtraExtraLarge"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional JS::NativeAccessibilityManager::SpecSetAccessibilityContentSizeMultipliersJSMultipliers::accessibilityExtraExtraExtraLarge() const +{ + id const p = _v[@"accessibilityExtraExtraExtraLarge"]; + return RCTBridgingToOptionalDouble(p); +} +inline NSString *JS::NativeActionSheetManager::SpecShowActionSheetWithOptionsOptions::title() const +{ + id const p = _v[@"title"]; + return RCTBridgingToOptionalString(p); +} +inline NSString *JS::NativeActionSheetManager::SpecShowActionSheetWithOptionsOptions::message() const +{ + id const p = _v[@"message"]; + return RCTBridgingToOptionalString(p); +} +inline folly::Optional> JS::NativeActionSheetManager::SpecShowActionSheetWithOptionsOptions::options() const +{ + id const p = _v[@"options"]; + return RCTBridgingToOptionalVec(p, ^NSString *(id itemValue_0) { return RCTBridgingToString(itemValue_0); }); +} +inline folly::Optional> JS::NativeActionSheetManager::SpecShowActionSheetWithOptionsOptions::destructiveButtonIndices() const +{ + id const p = _v[@"destructiveButtonIndices"]; + return RCTBridgingToOptionalVec(p, ^double(id itemValue_0) { return RCTBridgingToDouble(itemValue_0); }); +} +inline folly::Optional JS::NativeActionSheetManager::SpecShowActionSheetWithOptionsOptions::cancelButtonIndex() const +{ + id const p = _v[@"cancelButtonIndex"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional JS::NativeActionSheetManager::SpecShowActionSheetWithOptionsOptions::anchor() const +{ + id const p = _v[@"anchor"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional JS::NativeActionSheetManager::SpecShowActionSheetWithOptionsOptions::tintColor() const +{ + id const p = _v[@"tintColor"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional JS::NativeActionSheetManager::SpecShowActionSheetWithOptionsOptions::cancelButtonTintColor() const +{ + id const p = _v[@"cancelButtonTintColor"]; + return RCTBridgingToOptionalDouble(p); +} +inline NSString *JS::NativeActionSheetManager::SpecShowActionSheetWithOptionsOptions::userInterfaceStyle() const +{ + id const p = _v[@"userInterfaceStyle"]; + return RCTBridgingToOptionalString(p); +} +inline folly::Optional> JS::NativeActionSheetManager::SpecShowActionSheetWithOptionsOptions::disabledButtonIndices() const +{ + id const p = _v[@"disabledButtonIndices"]; + return RCTBridgingToOptionalVec(p, ^double(id itemValue_0) { return RCTBridgingToDouble(itemValue_0); }); +} +inline NSString *JS::NativeActionSheetManager::SpecShowShareActionSheetWithOptionsOptions::message() const +{ + id const p = _v[@"message"]; + return RCTBridgingToOptionalString(p); +} +inline NSString *JS::NativeActionSheetManager::SpecShowShareActionSheetWithOptionsOptions::url() const +{ + id const p = _v[@"url"]; + return RCTBridgingToOptionalString(p); +} +inline NSString *JS::NativeActionSheetManager::SpecShowShareActionSheetWithOptionsOptions::subject() const +{ + id const p = _v[@"subject"]; + return RCTBridgingToOptionalString(p); +} +inline folly::Optional JS::NativeActionSheetManager::SpecShowShareActionSheetWithOptionsOptions::anchor() const +{ + id const p = _v[@"anchor"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional JS::NativeActionSheetManager::SpecShowShareActionSheetWithOptionsOptions::tintColor() const +{ + id const p = _v[@"tintColor"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional JS::NativeActionSheetManager::SpecShowShareActionSheetWithOptionsOptions::cancelButtonTintColor() const +{ + id const p = _v[@"cancelButtonTintColor"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional> JS::NativeActionSheetManager::SpecShowShareActionSheetWithOptionsOptions::excludedActivityTypes() const +{ + id const p = _v[@"excludedActivityTypes"]; + return RCTBridgingToOptionalVec(p, ^NSString *(id itemValue_0) { return RCTBridgingToString(itemValue_0); }); +} +inline NSString *JS::NativeActionSheetManager::SpecShowShareActionSheetWithOptionsOptions::userInterfaceStyle() const +{ + id const p = _v[@"userInterfaceStyle"]; + return RCTBridgingToOptionalString(p); +} +inline NSString *JS::NativeAlertManager::Args::title() const +{ + id const p = _v[@"title"]; + return RCTBridgingToOptionalString(p); +} +inline NSString *JS::NativeAlertManager::Args::message() const +{ + id const p = _v[@"message"]; + return RCTBridgingToOptionalString(p); +} +inline folly::Optional >> JS::NativeAlertManager::Args::buttons() const +{ + id const p = _v[@"buttons"]; + return RCTBridgingToOptionalVec(p, ^id (id itemValue_0) { return itemValue_0; }); +} +inline NSString *JS::NativeAlertManager::Args::type() const +{ + id const p = _v[@"type"]; + return RCTBridgingToOptionalString(p); +} +inline NSString *JS::NativeAlertManager::Args::defaultValue() const +{ + id const p = _v[@"defaultValue"]; + return RCTBridgingToOptionalString(p); +} +inline NSString *JS::NativeAlertManager::Args::cancelButtonKey() const +{ + id const p = _v[@"cancelButtonKey"]; + return RCTBridgingToOptionalString(p); +} +inline NSString *JS::NativeAlertManager::Args::destructiveButtonKey() const +{ + id const p = _v[@"destructiveButtonKey"]; + return RCTBridgingToOptionalString(p); +} +inline NSString *JS::NativeAlertManager::Args::keyboardType() const +{ + id const p = _v[@"keyboardType"]; + return RCTBridgingToOptionalString(p); +} +inline facebook::react::LazyVector JS::NativeAnimatedModule::EventMapping::nativeEventPath() const +{ + id const p = _v[@"nativeEventPath"]; + return RCTBridgingToVec(p, ^NSString *(id itemValue_0) { return RCTBridgingToString(itemValue_0); }); +} +inline folly::Optional JS::NativeAnimatedModule::EventMapping::animatedValueTag() const +{ + id const p = _v[@"animatedValueTag"]; + return RCTBridgingToOptionalDouble(p); +} +inline facebook::react::LazyVector JS::NativeAnimatedTurboModule::EventMapping::nativeEventPath() const +{ + id const p = _v[@"nativeEventPath"]; + return RCTBridgingToVec(p, ^NSString *(id itemValue_0) { return RCTBridgingToString(itemValue_0); }); +} +inline folly::Optional JS::NativeAnimatedTurboModule::EventMapping::animatedValueTag() const +{ + id const p = _v[@"animatedValueTag"]; + return RCTBridgingToOptionalDouble(p); +} + +inline JS::NativeAppState::Constants::Builder::Builder(const Input i) : _factory(^{ + NSMutableDictionary *d = [NSMutableDictionary new]; + auto initialAppState = i.initialAppState.get(); + d[@"initialAppState"] = initialAppState; + return d; +}) {} +inline JS::NativeAppState::Constants::Builder::Builder(Constants i) : _factory(^{ + return i.unsafeRawValue(); +}) {} + + + +inline JS::NativeBlobModule::Constants::Builder::Builder(const Input i) : _factory(^{ + NSMutableDictionary *d = [NSMutableDictionary new]; + auto BLOB_URI_SCHEME = i.BLOB_URI_SCHEME.get(); + d[@"BLOB_URI_SCHEME"] = BLOB_URI_SCHEME; + auto BLOB_URI_HOST = i.BLOB_URI_HOST.get(); + d[@"BLOB_URI_HOST"] = BLOB_URI_HOST; + return d; +}) {} +inline JS::NativeBlobModule::Constants::Builder::Builder(Constants i) : _factory(^{ + return i.unsafeRawValue(); +}) {} + + + + + + + +inline JS::NativeDeviceInfo::DisplayMetrics::Builder::Builder(const Input i) : _factory(^{ + NSMutableDictionary *d = [NSMutableDictionary new]; + auto width = i.width.get(); + d[@"width"] = @(width); + auto height = i.height.get(); + d[@"height"] = @(height); + auto scale = i.scale.get(); + d[@"scale"] = @(scale); + auto fontScale = i.fontScale.get(); + d[@"fontScale"] = @(fontScale); + return d; +}) {} +inline JS::NativeDeviceInfo::DisplayMetrics::Builder::Builder(DisplayMetrics i) : _factory(^{ + return i.unsafeRawValue(); +}) {} +inline JS::NativeDeviceInfo::DisplayMetricsAndroid::Builder::Builder(const Input i) : _factory(^{ + NSMutableDictionary *d = [NSMutableDictionary new]; + auto width = i.width.get(); + d[@"width"] = @(width); + auto height = i.height.get(); + d[@"height"] = @(height); + auto scale = i.scale.get(); + d[@"scale"] = @(scale); + auto fontScale = i.fontScale.get(); + d[@"fontScale"] = @(fontScale); + auto densityDpi = i.densityDpi.get(); + d[@"densityDpi"] = @(densityDpi); + return d; +}) {} +inline JS::NativeDeviceInfo::DisplayMetricsAndroid::Builder::Builder(DisplayMetricsAndroid i) : _factory(^{ + return i.unsafeRawValue(); +}) {} +inline JS::NativeDeviceInfo::DimensionsPayload::Builder::Builder(const Input i) : _factory(^{ + NSMutableDictionary *d = [NSMutableDictionary new]; + auto window = i.window; + d[@"window"] = window.hasValue() ? window.value().buildUnsafeRawValue() : nil; + auto screen = i.screen; + d[@"screen"] = screen.hasValue() ? screen.value().buildUnsafeRawValue() : nil; + auto windowPhysicalPixels = i.windowPhysicalPixels; + d[@"windowPhysicalPixels"] = windowPhysicalPixels.hasValue() ? windowPhysicalPixels.value().buildUnsafeRawValue() : nil; + auto screenPhysicalPixels = i.screenPhysicalPixels; + d[@"screenPhysicalPixels"] = screenPhysicalPixels.hasValue() ? screenPhysicalPixels.value().buildUnsafeRawValue() : nil; + return d; +}) {} +inline JS::NativeDeviceInfo::DimensionsPayload::Builder::Builder(DimensionsPayload i) : _factory(^{ + return i.unsafeRawValue(); +}) {} +inline JS::NativeDeviceInfo::Constants::Builder::Builder(const Input i) : _factory(^{ + NSMutableDictionary *d = [NSMutableDictionary new]; + auto Dimensions = i.Dimensions.get(); + d[@"Dimensions"] = Dimensions.buildUnsafeRawValue(); + auto isIPhoneX_deprecated = i.isIPhoneX_deprecated; + d[@"isIPhoneX_deprecated"] = isIPhoneX_deprecated.hasValue() ? @((BOOL)isIPhoneX_deprecated.value()) : nil; + return d; +}) {} +inline JS::NativeDeviceInfo::Constants::Builder::Builder(Constants i) : _factory(^{ + return i.unsafeRawValue(); +}) {} +inline folly::Optional JS::NativeExceptionsManager::StackFrame::column() const +{ + id const p = _v[@"column"]; + return RCTBridgingToOptionalDouble(p); +} +inline NSString *JS::NativeExceptionsManager::StackFrame::file() const +{ + id const p = _v[@"file"]; + return RCTBridgingToOptionalString(p); +} +inline folly::Optional JS::NativeExceptionsManager::StackFrame::lineNumber() const +{ + id const p = _v[@"lineNumber"]; + return RCTBridgingToOptionalDouble(p); +} +inline NSString *JS::NativeExceptionsManager::StackFrame::methodName() const +{ + id const p = _v[@"methodName"]; + return RCTBridgingToString(p); +} +inline folly::Optional JS::NativeExceptionsManager::StackFrame::collapse() const +{ + id const p = _v[@"collapse"]; + return RCTBridgingToOptionalBool(p); +} +inline NSString *JS::NativeExceptionsManager::ExceptionData::message() const +{ + id const p = _v[@"message"]; + return RCTBridgingToString(p); +} +inline NSString *JS::NativeExceptionsManager::ExceptionData::originalMessage() const +{ + id const p = _v[@"originalMessage"]; + return RCTBridgingToOptionalString(p); +} +inline NSString *JS::NativeExceptionsManager::ExceptionData::name() const +{ + id const p = _v[@"name"]; + return RCTBridgingToOptionalString(p); +} +inline NSString *JS::NativeExceptionsManager::ExceptionData::componentStack() const +{ + id const p = _v[@"componentStack"]; + return RCTBridgingToOptionalString(p); +} +inline facebook::react::LazyVector JS::NativeExceptionsManager::ExceptionData::stack() const +{ + id const p = _v[@"stack"]; + return RCTBridgingToVec(p, ^JS::NativeExceptionsManager::StackFrame(id itemValue_0) { return JS::NativeExceptionsManager::StackFrame(itemValue_0); }); +} +inline double JS::NativeExceptionsManager::ExceptionData::id_() const +{ + id const p = _v[@"id"]; + return RCTBridgingToDouble(p); +} +inline bool JS::NativeExceptionsManager::ExceptionData::isFatal() const +{ + id const p = _v[@"isFatal"]; + return RCTBridgingToBool(p); +} +inline id _Nullable JS::NativeExceptionsManager::ExceptionData::extraData() const +{ + id const p = _v[@"extraData"]; + return p; +} + +inline folly::Optional JS::NativeFrameRateLogger::SpecSetGlobalOptionsOptions::debug() const +{ + id const p = _v[@"debug"]; + return RCTBridgingToOptionalBool(p); +} +inline folly::Optional JS::NativeFrameRateLogger::SpecSetGlobalOptionsOptions::reportStackTraces() const +{ + id const p = _v[@"reportStackTraces"]; + return RCTBridgingToOptionalBool(p); +} + +inline JS::NativeI18nManager::Constants::Builder::Builder(const Input i) : _factory(^{ + NSMutableDictionary *d = [NSMutableDictionary new]; + auto isRTL = i.isRTL.get(); + d[@"isRTL"] = @(isRTL); + auto doLeftAndRightSwapInRTL = i.doLeftAndRightSwapInRTL.get(); + d[@"doLeftAndRightSwapInRTL"] = @(doLeftAndRightSwapInRTL); + auto localeIdentifier = i.localeIdentifier.get(); + d[@"localeIdentifier"] = localeIdentifier; + return d; +}) {} +inline JS::NativeI18nManager::Constants::Builder::Builder(Constants i) : _factory(^{ + return i.unsafeRawValue(); +}) {} +inline double JS::NativeImageEditor::OptionsOffset::x() const +{ + id const p = _v[@"x"]; + return RCTBridgingToDouble(p); +} +inline double JS::NativeImageEditor::OptionsOffset::y() const +{ + id const p = _v[@"y"]; + return RCTBridgingToDouble(p); +} +inline double JS::NativeImageEditor::OptionsSize::width() const +{ + id const p = _v[@"width"]; + return RCTBridgingToDouble(p); +} +inline double JS::NativeImageEditor::OptionsSize::height() const +{ + id const p = _v[@"height"]; + return RCTBridgingToDouble(p); +} +inline double JS::NativeImageEditor::OptionsDisplaySize::width() const +{ + id const p = _v[@"width"]; + return RCTBridgingToDouble(p); +} +inline double JS::NativeImageEditor::OptionsDisplaySize::height() const +{ + id const p = _v[@"height"]; + return RCTBridgingToDouble(p); +} +inline JS::NativeImageEditor::OptionsOffset JS::NativeImageEditor::Options::offset() const +{ + id const p = _v[@"offset"]; + return JS::NativeImageEditor::OptionsOffset(p); +} +inline JS::NativeImageEditor::OptionsSize JS::NativeImageEditor::Options::size() const +{ + id const p = _v[@"size"]; + return JS::NativeImageEditor::OptionsSize(p); +} +inline folly::Optional JS::NativeImageEditor::Options::displaySize() const +{ + id const p = _v[@"displaySize"]; + return (p == nil ? folly::none : folly::make_optional(JS::NativeImageEditor::OptionsDisplaySize(p))); +} +inline NSString *JS::NativeImageEditor::Options::resizeMode() const +{ + id const p = _v[@"resizeMode"]; + return RCTBridgingToOptionalString(p); +} +inline folly::Optional JS::NativeImageEditor::Options::allowExternalStorage() const +{ + id const p = _v[@"allowExternalStorage"]; + return RCTBridgingToOptionalBool(p); +} + +inline bool JS::NativeImagePickerIOS::SpecOpenCameraDialogConfig::unmirrorFrontFacingCamera() const +{ + id const p = _v[@"unmirrorFrontFacingCamera"]; + return RCTBridgingToBool(p); +} +inline bool JS::NativeImagePickerIOS::SpecOpenCameraDialogConfig::videoMode() const +{ + id const p = _v[@"videoMode"]; + return RCTBridgingToBool(p); +} +inline bool JS::NativeImagePickerIOS::SpecOpenSelectDialogConfig::showImages() const +{ + id const p = _v[@"showImages"]; + return RCTBridgingToBool(p); +} +inline bool JS::NativeImagePickerIOS::SpecOpenSelectDialogConfig::showVideos() const +{ + id const p = _v[@"showVideos"]; + return RCTBridgingToBool(p); +} + + + +inline JS::NativeJSDevSupport::Constants::Builder::Builder(const Input i) : _factory(^{ + NSMutableDictionary *d = [NSMutableDictionary new]; + auto ERROR_CODE_EXCEPTION = i.ERROR_CODE_EXCEPTION.get(); + d[@"ERROR_CODE_EXCEPTION"] = @(ERROR_CODE_EXCEPTION); + auto ERROR_CODE_VIEW_NOT_FOUND = i.ERROR_CODE_VIEW_NOT_FOUND.get(); + d[@"ERROR_CODE_VIEW_NOT_FOUND"] = @(ERROR_CODE_VIEW_NOT_FOUND); + return d; +}) {} +inline JS::NativeJSDevSupport::Constants::Builder::Builder(Constants i) : _factory(^{ + return i.unsafeRawValue(); +}) {} + + + + +inline NSString *JS::NativeNetworkingIOS::SpecSendRequestQuery::method() const +{ + id const p = _v[@"method"]; + return RCTBridgingToString(p); +} +inline NSString *JS::NativeNetworkingIOS::SpecSendRequestQuery::url() const +{ + id const p = _v[@"url"]; + return RCTBridgingToString(p); +} +inline id JS::NativeNetworkingIOS::SpecSendRequestQuery::data() const +{ + id const p = _v[@"data"]; + return p; +} +inline id JS::NativeNetworkingIOS::SpecSendRequestQuery::headers() const +{ + id const p = _v[@"headers"]; + return p; +} +inline NSString *JS::NativeNetworkingIOS::SpecSendRequestQuery::responseType() const +{ + id const p = _v[@"responseType"]; + return RCTBridgingToString(p); +} +inline bool JS::NativeNetworkingIOS::SpecSendRequestQuery::incrementalUpdates() const +{ + id const p = _v[@"incrementalUpdates"]; + return RCTBridgingToBool(p); +} +inline double JS::NativeNetworkingIOS::SpecSendRequestQuery::timeout() const +{ + id const p = _v[@"timeout"]; + return RCTBridgingToDouble(p); +} +inline bool JS::NativeNetworkingIOS::SpecSendRequestQuery::withCredentials() const +{ + id const p = _v[@"withCredentials"]; + return RCTBridgingToBool(p); +} +inline JS::NativePlatformConstantsIOS::ConstantsReactNativeVersion::Builder::Builder(const Input i) : _factory(^{ + NSMutableDictionary *d = [NSMutableDictionary new]; + auto major = i.major.get(); + d[@"major"] = @(major); + auto minor = i.minor.get(); + d[@"minor"] = @(minor); + auto patch = i.patch.get(); + d[@"patch"] = @(patch); + auto prerelease = i.prerelease.get(); + d[@"prerelease"] = prerelease.hasValue() ? @((double)prerelease.value()) : nil; + return d; +}) {} +inline JS::NativePlatformConstantsIOS::ConstantsReactNativeVersion::Builder::Builder(ConstantsReactNativeVersion i) : _factory(^{ + return i.unsafeRawValue(); +}) {} +inline JS::NativePlatformConstantsIOS::Constants::Builder::Builder(const Input i) : _factory(^{ + NSMutableDictionary *d = [NSMutableDictionary new]; + auto isTesting = i.isTesting.get(); + d[@"isTesting"] = @(isTesting); + auto reactNativeVersion = i.reactNativeVersion.get(); + d[@"reactNativeVersion"] = reactNativeVersion.buildUnsafeRawValue(); + auto forceTouchAvailable = i.forceTouchAvailable.get(); + d[@"forceTouchAvailable"] = @(forceTouchAvailable); + auto osVersion = i.osVersion.get(); + d[@"osVersion"] = osVersion; + auto systemName = i.systemName.get(); + d[@"systemName"] = systemName; + auto interfaceIdiom = i.interfaceIdiom.get(); + d[@"interfaceIdiom"] = interfaceIdiom; + return d; +}) {} +inline JS::NativePlatformConstantsIOS::Constants::Builder::Builder(Constants i) : _factory(^{ + return i.unsafeRawValue(); +}) {} +inline bool JS::NativePushNotificationManagerIOS::SpecRequestPermissionsPermission::alert() const +{ + id const p = _v[@"alert"]; + return RCTBridgingToBool(p); +} +inline bool JS::NativePushNotificationManagerIOS::SpecRequestPermissionsPermission::badge() const +{ + id const p = _v[@"badge"]; + return RCTBridgingToBool(p); +} +inline bool JS::NativePushNotificationManagerIOS::SpecRequestPermissionsPermission::sound() const +{ + id const p = _v[@"sound"]; + return RCTBridgingToBool(p); +} +inline NSString *JS::NativePushNotificationManagerIOS::Notification::alertTitle() const +{ + id const p = _v[@"alertTitle"]; + return RCTBridgingToOptionalString(p); +} +inline folly::Optional JS::NativePushNotificationManagerIOS::Notification::fireDate() const +{ + id const p = _v[@"fireDate"]; + return RCTBridgingToOptionalDouble(p); +} +inline NSString *JS::NativePushNotificationManagerIOS::Notification::alertBody() const +{ + id const p = _v[@"alertBody"]; + return RCTBridgingToOptionalString(p); +} +inline NSString *JS::NativePushNotificationManagerIOS::Notification::alertAction() const +{ + id const p = _v[@"alertAction"]; + return RCTBridgingToOptionalString(p); +} +inline id _Nullable JS::NativePushNotificationManagerIOS::Notification::userInfo() const +{ + id const p = _v[@"userInfo"]; + return p; +} +inline NSString *JS::NativePushNotificationManagerIOS::Notification::category() const +{ + id const p = _v[@"category"]; + return RCTBridgingToOptionalString(p); +} +inline NSString *JS::NativePushNotificationManagerIOS::Notification::repeatInterval() const +{ + id const p = _v[@"repeatInterval"]; + return RCTBridgingToOptionalString(p); +} +inline folly::Optional JS::NativePushNotificationManagerIOS::Notification::applicationIconBadgeNumber() const +{ + id const p = _v[@"applicationIconBadgeNumber"]; + return RCTBridgingToOptionalDouble(p); +} +inline folly::Optional JS::NativePushNotificationManagerIOS::Notification::isSilent() const +{ + id const p = _v[@"isSilent"]; + return RCTBridgingToOptionalBool(p); +} + + +inline JS::NativeSettingsManager::Constants::Builder::Builder(const Input i) : _factory(^{ + NSMutableDictionary *d = [NSMutableDictionary new]; + auto settings = i.settings.get(); + d[@"settings"] = settings; + return d; +}) {} +inline JS::NativeSettingsManager::Constants::Builder::Builder(Constants i) : _factory(^{ + return i.unsafeRawValue(); +}) {} +inline NSString *JS::NativeShareModule::SpecShareContent::title() const +{ + id const p = _v[@"title"]; + return RCTBridgingToOptionalString(p); +} +inline NSString *JS::NativeShareModule::SpecShareContent::message() const +{ + id const p = _v[@"message"]; + return RCTBridgingToOptionalString(p); +} + +inline JS::NativeSourceCode::Constants::Builder::Builder(const Input i) : _factory(^{ + NSMutableDictionary *d = [NSMutableDictionary new]; + auto scriptURL = i.scriptURL.get(); + d[@"scriptURL"] = scriptURL; + return d; +}) {} +inline JS::NativeSourceCode::Constants::Builder::Builder(Constants i) : _factory(^{ + return i.unsafeRawValue(); +}) {} +inline JS::NativeStatusBarManagerIOS::Constants::Builder::Builder(const Input i) : _factory(^{ + NSMutableDictionary *d = [NSMutableDictionary new]; + auto HEIGHT = i.HEIGHT.get(); + d[@"HEIGHT"] = @(HEIGHT); + auto DEFAULT_BACKGROUND_COLOR = i.DEFAULT_BACKGROUND_COLOR; + d[@"DEFAULT_BACKGROUND_COLOR"] = DEFAULT_BACKGROUND_COLOR.hasValue() ? @((double)DEFAULT_BACKGROUND_COLOR.value()) : nil; + return d; +}) {} +inline JS::NativeStatusBarManagerIOS::Constants::Builder::Builder(Constants i) : _factory(^{ + return i.unsafeRawValue(); +}) {} + + +inline id _Nullable JS::NativeWebSocketModule::SpecConnectOptions::headers() const +{ + id const p = _v[@"headers"]; + return p; +} diff --git a/Frameworks/FBReactNativeSpec.xcframework/ios-arm64_x86_64-simulator/libFBReactNativeSpec.a b/Frameworks/FBReactNativeSpec.xcframework/ios-arm64_x86_64-simulator/libFBReactNativeSpec.a new file mode 100644 index 0000000..2021c51 Binary files /dev/null and b/Frameworks/FBReactNativeSpec.xcframework/ios-arm64_x86_64-simulator/libFBReactNativeSpec.a differ diff --git a/Frameworks/Newsmemory.xcframework/Info.plist b/Frameworks/Newsmemory.xcframework/Info.plist new file mode 100644 index 0000000..cb9e4f9 --- /dev/null +++ b/Frameworks/Newsmemory.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libNewsmemory.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libNewsmemory.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libNewsmemory.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libNewsmemory.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/Newsmemory.xcframework/ios-arm64/Headers/Newsmemory/Newsmemory-umbrella.h b/Frameworks/Newsmemory.xcframework/ios-arm64/Headers/Newsmemory/Newsmemory-umbrella.h new file mode 100644 index 0000000..6a3b411 --- /dev/null +++ b/Frameworks/Newsmemory.xcframework/ios-arm64/Headers/Newsmemory/Newsmemory-umbrella.h @@ -0,0 +1,19 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + +#import "Newsmemory.h" +#import "NewsmemorySDKBridge.h" +#import "TANewsmemoryViewController.h" + +FOUNDATION_EXPORT double NewsmemoryVersionNumber; +FOUNDATION_EXPORT const unsigned char NewsmemoryVersionString[]; + diff --git a/Frameworks/Newsmemory.xcframework/ios-arm64/Headers/Newsmemory/Newsmemory.h b/Frameworks/Newsmemory.xcframework/ios-arm64/Headers/Newsmemory/Newsmemory.h new file mode 100644 index 0000000..f2146f0 --- /dev/null +++ b/Frameworks/Newsmemory.xcframework/ios-arm64/Headers/Newsmemory/Newsmemory.h @@ -0,0 +1,41 @@ +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol NewsmemoryDelegate +@optional +- (void)onNewsmemoryClose; +- (BOOL)newsmemoryWillOpenURL:(NSString *)url; +- (void)onNewsmemoryTrackAction:(NSDictionary *)data; +- (void)onNewsmemoryReload; +- (BOOL)onNewsmemoryTokenExpired; +@end + +/// The RN library API +@interface Newsmemory : NSObject + +/// The way in which we communicate with React Native +@property (nonatomic, strong, readonly) RCTBridge *bridge; + +/// The single instance of a Newsmemory ++ (instancetype)sharedInstance; ++ (void)setDelegate:(id )delegate; ++ (void)setDebugMode:(BOOL)debug; ++ (void)setPSetup:(NSString *)pSetup; ++ (void)setServer:(NSString *)server; ++ (void)setToken:(NSString *)token; ++ (void)setNeedsCloseButton:(BOOL)need; ++ (void)setNeedsSafeArea:(BOOL)need; ++ (void)setAPIKey:(NSString *)key; ++ (void)setLockedOrientation:(NSString *)orientation; ++ (void)setLockedOrientationDevice:(NSString *)device; + +- (instancetype)init; +- (RCTRootView *)getView; +- (id )getDelegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/Newsmemory.xcframework/ios-arm64/Headers/Newsmemory/Newsmemory.modulemap b/Frameworks/Newsmemory.xcframework/ios-arm64/Headers/Newsmemory/Newsmemory.modulemap new file mode 100644 index 0000000..5d7bcfb --- /dev/null +++ b/Frameworks/Newsmemory.xcframework/ios-arm64/Headers/Newsmemory/Newsmemory.modulemap @@ -0,0 +1,6 @@ +module Newsmemory { + umbrella header "Newsmemory-umbrella.h" + + export * + module * { export * } +} diff --git a/Frameworks/Newsmemory.xcframework/ios-arm64/Headers/Newsmemory/NewsmemorySDKBridge.h b/Frameworks/Newsmemory.xcframework/ios-arm64/Headers/Newsmemory/NewsmemorySDKBridge.h new file mode 100644 index 0000000..9741409 --- /dev/null +++ b/Frameworks/Newsmemory.xcframework/ios-arm64/Headers/Newsmemory/NewsmemorySDKBridge.h @@ -0,0 +1,6 @@ +#import +#import + +@interface NewsmemorySDKBridge : NSObject + +@end diff --git a/Frameworks/Newsmemory.xcframework/ios-arm64/Headers/Newsmemory/TANewsmemoryViewController.h b/Frameworks/Newsmemory.xcframework/ios-arm64/Headers/Newsmemory/TANewsmemoryViewController.h new file mode 100644 index 0000000..cbeb624 --- /dev/null +++ b/Frameworks/Newsmemory.xcframework/ios-arm64/Headers/Newsmemory/TANewsmemoryViewController.h @@ -0,0 +1,4 @@ +#import + +@interface TANewsmemoryViewController : UIViewController +@end diff --git a/Frameworks/Newsmemory.xcframework/ios-arm64/libNewsmemory.a b/Frameworks/Newsmemory.xcframework/ios-arm64/libNewsmemory.a new file mode 100644 index 0000000..94f6e97 Binary files /dev/null and b/Frameworks/Newsmemory.xcframework/ios-arm64/libNewsmemory.a differ diff --git a/Frameworks/Newsmemory.xcframework/ios-arm64_x86_64-simulator/Headers/Newsmemory/Newsmemory-umbrella.h b/Frameworks/Newsmemory.xcframework/ios-arm64_x86_64-simulator/Headers/Newsmemory/Newsmemory-umbrella.h new file mode 100644 index 0000000..6a3b411 --- /dev/null +++ b/Frameworks/Newsmemory.xcframework/ios-arm64_x86_64-simulator/Headers/Newsmemory/Newsmemory-umbrella.h @@ -0,0 +1,19 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + +#import "Newsmemory.h" +#import "NewsmemorySDKBridge.h" +#import "TANewsmemoryViewController.h" + +FOUNDATION_EXPORT double NewsmemoryVersionNumber; +FOUNDATION_EXPORT const unsigned char NewsmemoryVersionString[]; + diff --git a/Frameworks/Newsmemory.xcframework/ios-arm64_x86_64-simulator/Headers/Newsmemory/Newsmemory.h b/Frameworks/Newsmemory.xcframework/ios-arm64_x86_64-simulator/Headers/Newsmemory/Newsmemory.h new file mode 100644 index 0000000..f2146f0 --- /dev/null +++ b/Frameworks/Newsmemory.xcframework/ios-arm64_x86_64-simulator/Headers/Newsmemory/Newsmemory.h @@ -0,0 +1,41 @@ +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol NewsmemoryDelegate +@optional +- (void)onNewsmemoryClose; +- (BOOL)newsmemoryWillOpenURL:(NSString *)url; +- (void)onNewsmemoryTrackAction:(NSDictionary *)data; +- (void)onNewsmemoryReload; +- (BOOL)onNewsmemoryTokenExpired; +@end + +/// The RN library API +@interface Newsmemory : NSObject + +/// The way in which we communicate with React Native +@property (nonatomic, strong, readonly) RCTBridge *bridge; + +/// The single instance of a Newsmemory ++ (instancetype)sharedInstance; ++ (void)setDelegate:(id )delegate; ++ (void)setDebugMode:(BOOL)debug; ++ (void)setPSetup:(NSString *)pSetup; ++ (void)setServer:(NSString *)server; ++ (void)setToken:(NSString *)token; ++ (void)setNeedsCloseButton:(BOOL)need; ++ (void)setNeedsSafeArea:(BOOL)need; ++ (void)setAPIKey:(NSString *)key; ++ (void)setLockedOrientation:(NSString *)orientation; ++ (void)setLockedOrientationDevice:(NSString *)device; + +- (instancetype)init; +- (RCTRootView *)getView; +- (id )getDelegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/Newsmemory.xcframework/ios-arm64_x86_64-simulator/Headers/Newsmemory/Newsmemory.modulemap b/Frameworks/Newsmemory.xcframework/ios-arm64_x86_64-simulator/Headers/Newsmemory/Newsmemory.modulemap new file mode 100644 index 0000000..5d7bcfb --- /dev/null +++ b/Frameworks/Newsmemory.xcframework/ios-arm64_x86_64-simulator/Headers/Newsmemory/Newsmemory.modulemap @@ -0,0 +1,6 @@ +module Newsmemory { + umbrella header "Newsmemory-umbrella.h" + + export * + module * { export * } +} diff --git a/Frameworks/Newsmemory.xcframework/ios-arm64_x86_64-simulator/Headers/Newsmemory/NewsmemorySDKBridge.h b/Frameworks/Newsmemory.xcframework/ios-arm64_x86_64-simulator/Headers/Newsmemory/NewsmemorySDKBridge.h new file mode 100644 index 0000000..9741409 --- /dev/null +++ b/Frameworks/Newsmemory.xcframework/ios-arm64_x86_64-simulator/Headers/Newsmemory/NewsmemorySDKBridge.h @@ -0,0 +1,6 @@ +#import +#import + +@interface NewsmemorySDKBridge : NSObject + +@end diff --git a/Frameworks/Newsmemory.xcframework/ios-arm64_x86_64-simulator/Headers/Newsmemory/TANewsmemoryViewController.h b/Frameworks/Newsmemory.xcframework/ios-arm64_x86_64-simulator/Headers/Newsmemory/TANewsmemoryViewController.h new file mode 100644 index 0000000..cbeb624 --- /dev/null +++ b/Frameworks/Newsmemory.xcframework/ios-arm64_x86_64-simulator/Headers/Newsmemory/TANewsmemoryViewController.h @@ -0,0 +1,4 @@ +#import + +@interface TANewsmemoryViewController : UIViewController +@end diff --git a/Frameworks/Newsmemory.xcframework/ios-arm64_x86_64-simulator/libNewsmemory.a b/Frameworks/Newsmemory.xcframework/ios-arm64_x86_64-simulator/libNewsmemory.a new file mode 100644 index 0000000..f43a79d Binary files /dev/null and b/Frameworks/Newsmemory.xcframework/ios-arm64_x86_64-simulator/libNewsmemory.a differ diff --git a/Frameworks/RCT-Folly.xcframework/Info.plist b/Frameworks/RCT-Folly.xcframework/Info.plist new file mode 100644 index 0000000..ae26e9a --- /dev/null +++ b/Frameworks/RCT-Folly.xcframework/Info.plist @@ -0,0 +1,44 @@ + + + + + AvailableLibraries + + + BinaryPath + libRCT-Folly.a + LibraryIdentifier + ios-arm64 + LibraryPath + libRCT-Folly.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libRCT-Folly.a + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libRCT-Folly.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/RCT-Folly.xcframework/ios-arm64/libRCT-Folly.a b/Frameworks/RCT-Folly.xcframework/ios-arm64/libRCT-Folly.a new file mode 100644 index 0000000..48f75ab Binary files /dev/null and b/Frameworks/RCT-Folly.xcframework/ios-arm64/libRCT-Folly.a differ diff --git a/Frameworks/RCT-Folly.xcframework/ios-arm64_x86_64-simulator/libRCT-Folly.a b/Frameworks/RCT-Folly.xcframework/ios-arm64_x86_64-simulator/libRCT-Folly.a new file mode 100644 index 0000000..06149bd Binary files /dev/null and b/Frameworks/RCT-Folly.xcframework/ios-arm64_x86_64-simulator/libRCT-Folly.a differ diff --git a/Frameworks/RCTTypeSafety.xcframework/Info.plist b/Frameworks/RCTTypeSafety.xcframework/Info.plist new file mode 100644 index 0000000..d9913d3 --- /dev/null +++ b/Frameworks/RCTTypeSafety.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libRCTTypeSafety.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libRCTTypeSafety.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + libRCTTypeSafety.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libRCTTypeSafety.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/RCTTypeSafety.xcframework/ios-arm64/Headers/RCTTypeSafety/RCTConvertHelpers.h b/Frameworks/RCTTypeSafety.xcframework/ios-arm64/Headers/RCTTypeSafety/RCTConvertHelpers.h new file mode 100644 index 0000000..0b7144b --- /dev/null +++ b/Frameworks/RCTTypeSafety.xcframework/ios-arm64/Headers/RCTTypeSafety/RCTConvertHelpers.h @@ -0,0 +1,74 @@ +/* + * 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 + +#import + +#import +#import + +namespace facebook { +namespace react { + template + using LazyVector = FB::LazyVector; +}} + +template +NSArray *RCTConvertVecToArray(const ContainerT &vec, id (^convertor)(typename ContainerT::value_type element)) +{ + NSMutableArray *array = [NSMutableArray new]; + for (size_t i = 0, size = vec.size(); i < size; ++i) { + id object = convertor(vec[i]); + array[i] = object ?: (id)kCFNull; + } + return array; +} +template +NSArray *RCTConvertVecToArray(const ContainerT &vec) +{ + return RCTConvertVecToArray(vec, ^id(typename ContainerT::value_type element) { return element; }); +} + +template +NSArray *RCTConvertOptionalVecToArray(const folly::Optional &vec, id (^convertor)(typename ContainerT::value_type element)) +{ + return vec.hasValue() ? RCTConvertVecToArray(vec.value(), convertor) : nil; +} + +template +NSArray *RCTConvertOptionalVecToArray(const folly::Optional &vec) +{ + return vec.hasValue() ? RCTConvertVecToArray(vec.value(), ^id(typename ContainerT::value_type element) { return element; }) : nil; +} + +bool RCTBridgingToBool(id value); +folly::Optional RCTBridgingToOptionalBool(id value); +NSString *RCTBridgingToString(id value); +NSString *RCTBridgingToOptionalString(id value); +folly::Optional RCTBridgingToOptionalDouble(id value); +double RCTBridgingToDouble(id value); +NSArray *RCTBridgingToArray(id value); + +template +facebook::react::LazyVector RCTBridgingToVec(id value, T (^ctor)(id element)) +{ + NSArray *array = RCTBridgingToArray(value); + typedef typename facebook::react::LazyVector::size_type _size_t; + _size_t size = static_cast<_size_t>(array.count); + return facebook::react::LazyVector::fromUnsafeRawValue(array, size, ctor); +} + +template +folly::Optional> RCTBridgingToOptionalVec(id value, T (^ctor)(id element)) +{ + if (value == nil || value == (id)kCFNull) { + return folly::none; + } else { + return RCTBridgingToVec(value, ctor); + } +} diff --git a/Frameworks/RCTTypeSafety.xcframework/ios-arm64/Headers/RCTTypeSafety/RCTTypedModuleConstants.h b/Frameworks/RCTTypeSafety.xcframework/ios-arm64/Headers/RCTTypeSafety/RCTTypedModuleConstants.h new file mode 100644 index 0000000..b3514c0 --- /dev/null +++ b/Frameworks/RCTTypeSafety.xcframework/ios-arm64/Headers/RCTTypeSafety/RCTTypedModuleConstants.h @@ -0,0 +1,47 @@ +/* + * 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. + */ + +#include + +#import + +#import +#import + +/** + * Interop type layer for RN's exportedConstants and the C++ structs generated by our typesafety codegen. + * + * The NativeModuleSpec will define a constantsToExport method which you can implement as follows: + * + * - (nonnull ModuleConstants)constantsToExport + * { + * return typedConstants({ ... }); + * } + */ + +// Internal container for module constants. Do not use yourself directly, instead use the typedConstants helpers below. +@interface _RCTTypedModuleConstants : NSDictionary + ++ (instancetype)newWithUnsafeDictionary:(NSDictionary *)dictionary; + +@end + +namespace facebook { +namespace react { + +// Objective-C doesn't allow arbitrary types in its lightweight generics, only object and block types. We can work +// around that by having the struct type we care about be a block-argument. The block never exists at runtime. +template +using ModuleConstants = _RCTTypedModuleConstants *; + +template +ModuleConstants typedConstants(typename T::Builder::Input &&value) { + typename T::Builder builder(std::move(value)); + return [_RCTTypedModuleConstants newWithUnsafeDictionary:builder.buildUnsafeRawValue()]; +} + +} } diff --git a/Frameworks/RCTTypeSafety.xcframework/ios-arm64/libRCTTypeSafety.a b/Frameworks/RCTTypeSafety.xcframework/ios-arm64/libRCTTypeSafety.a new file mode 100644 index 0000000..347d264 Binary files /dev/null and b/Frameworks/RCTTypeSafety.xcframework/ios-arm64/libRCTTypeSafety.a differ diff --git a/Frameworks/RCTTypeSafety.xcframework/ios-arm64_x86_64-simulator/Headers/RCTTypeSafety/RCTConvertHelpers.h b/Frameworks/RCTTypeSafety.xcframework/ios-arm64_x86_64-simulator/Headers/RCTTypeSafety/RCTConvertHelpers.h new file mode 100644 index 0000000..0b7144b --- /dev/null +++ b/Frameworks/RCTTypeSafety.xcframework/ios-arm64_x86_64-simulator/Headers/RCTTypeSafety/RCTConvertHelpers.h @@ -0,0 +1,74 @@ +/* + * 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 + +#import + +#import +#import + +namespace facebook { +namespace react { + template + using LazyVector = FB::LazyVector; +}} + +template +NSArray *RCTConvertVecToArray(const ContainerT &vec, id (^convertor)(typename ContainerT::value_type element)) +{ + NSMutableArray *array = [NSMutableArray new]; + for (size_t i = 0, size = vec.size(); i < size; ++i) { + id object = convertor(vec[i]); + array[i] = object ?: (id)kCFNull; + } + return array; +} +template +NSArray *RCTConvertVecToArray(const ContainerT &vec) +{ + return RCTConvertVecToArray(vec, ^id(typename ContainerT::value_type element) { return element; }); +} + +template +NSArray *RCTConvertOptionalVecToArray(const folly::Optional &vec, id (^convertor)(typename ContainerT::value_type element)) +{ + return vec.hasValue() ? RCTConvertVecToArray(vec.value(), convertor) : nil; +} + +template +NSArray *RCTConvertOptionalVecToArray(const folly::Optional &vec) +{ + return vec.hasValue() ? RCTConvertVecToArray(vec.value(), ^id(typename ContainerT::value_type element) { return element; }) : nil; +} + +bool RCTBridgingToBool(id value); +folly::Optional RCTBridgingToOptionalBool(id value); +NSString *RCTBridgingToString(id value); +NSString *RCTBridgingToOptionalString(id value); +folly::Optional RCTBridgingToOptionalDouble(id value); +double RCTBridgingToDouble(id value); +NSArray *RCTBridgingToArray(id value); + +template +facebook::react::LazyVector RCTBridgingToVec(id value, T (^ctor)(id element)) +{ + NSArray *array = RCTBridgingToArray(value); + typedef typename facebook::react::LazyVector::size_type _size_t; + _size_t size = static_cast<_size_t>(array.count); + return facebook::react::LazyVector::fromUnsafeRawValue(array, size, ctor); +} + +template +folly::Optional> RCTBridgingToOptionalVec(id value, T (^ctor)(id element)) +{ + if (value == nil || value == (id)kCFNull) { + return folly::none; + } else { + return RCTBridgingToVec(value, ctor); + } +} diff --git a/Frameworks/RCTTypeSafety.xcframework/ios-arm64_x86_64-simulator/Headers/RCTTypeSafety/RCTTypedModuleConstants.h b/Frameworks/RCTTypeSafety.xcframework/ios-arm64_x86_64-simulator/Headers/RCTTypeSafety/RCTTypedModuleConstants.h new file mode 100644 index 0000000..b3514c0 --- /dev/null +++ b/Frameworks/RCTTypeSafety.xcframework/ios-arm64_x86_64-simulator/Headers/RCTTypeSafety/RCTTypedModuleConstants.h @@ -0,0 +1,47 @@ +/* + * 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. + */ + +#include + +#import + +#import +#import + +/** + * Interop type layer for RN's exportedConstants and the C++ structs generated by our typesafety codegen. + * + * The NativeModuleSpec will define a constantsToExport method which you can implement as follows: + * + * - (nonnull ModuleConstants)constantsToExport + * { + * return typedConstants({ ... }); + * } + */ + +// Internal container for module constants. Do not use yourself directly, instead use the typedConstants helpers below. +@interface _RCTTypedModuleConstants : NSDictionary + ++ (instancetype)newWithUnsafeDictionary:(NSDictionary *)dictionary; + +@end + +namespace facebook { +namespace react { + +// Objective-C doesn't allow arbitrary types in its lightweight generics, only object and block types. We can work +// around that by having the struct type we care about be a block-argument. The block never exists at runtime. +template +using ModuleConstants = _RCTTypedModuleConstants *; + +template +ModuleConstants typedConstants(typename T::Builder::Input &&value) { + typename T::Builder builder(std::move(value)); + return [_RCTTypedModuleConstants newWithUnsafeDictionary:builder.buildUnsafeRawValue()]; +} + +} } diff --git a/Frameworks/RCTTypeSafety.xcframework/ios-arm64_x86_64-simulator/libRCTTypeSafety.a b/Frameworks/RCTTypeSafety.xcframework/ios-arm64_x86_64-simulator/libRCTTypeSafety.a new file mode 100644 index 0000000..b4a5579 Binary files /dev/null and b/Frameworks/RCTTypeSafety.xcframework/ios-arm64_x86_64-simulator/libRCTTypeSafety.a differ diff --git a/Frameworks/RNCAsyncStorage.xcframework/Info.plist b/Frameworks/RNCAsyncStorage.xcframework/Info.plist new file mode 100644 index 0000000..97773c4 --- /dev/null +++ b/Frameworks/RNCAsyncStorage.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libRNCAsyncStorage.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libRNCAsyncStorage.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libRNCAsyncStorage.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libRNCAsyncStorage.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/RNCAsyncStorage.xcframework/ios-arm64/Headers/RNCAsyncStorage.h b/Frameworks/RNCAsyncStorage.xcframework/ios-arm64/Headers/RNCAsyncStorage.h new file mode 100644 index 0000000..38e5178 --- /dev/null +++ b/Frameworks/RNCAsyncStorage.xcframework/ios-arm64/Headers/RNCAsyncStorage.h @@ -0,0 +1,62 @@ +/** + * 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 + +#import +#import + +#ifdef RCT_NEW_ARCH_ENABLED +#import +#endif + +#import "RNCAsyncStorageDelegate.h" + +/** + * A simple, asynchronous, persistent, key-value storage system designed as a + * backend to the AsyncStorage JS module, which is modeled after LocalStorage. + * + * Current implementation stores small values in serialized dictionary and + * larger values in separate files. Since we use a serial file queue + * `RKFileQueue`, reading/writing from multiple threads should be perceived as + * being atomic, unless someone bypasses the `RNCAsyncStorage` API. + * + * Keys and values must always be strings or an error is returned. + */ +@interface RNCAsyncStorage : NSObject < +#ifdef RCT_NEW_ARCH_ENABLED + NativeAsyncStorageModuleSpec +#else + RCTBridgeModule +#endif + , + RCTInvalidating> + +@property (nonatomic, weak, nullable) id delegate; + +@property (nonatomic, assign) BOOL clearOnInvalidate; + +@property (nonatomic, readonly, getter=isValid) BOOL valid; + +// Clear the RNCAsyncStorage data from native code +- (void)clearAllData; + +// For clearing data when the bridge may not exist, e.g. when logging out. ++ (void)clearAllData; + +// Grab data from the cache. ResponseBlock result array will have an error at position 0, and an +// array of arrays at position 1. +- (void)multiGet:(NSArray *)keys callback:(RCTResponseSenderBlock)callback; + +// Add multiple key value pairs to the cache. +- (void)multiSet:(NSArray *> *)kvPairs + callback:(RCTResponseSenderBlock)callback; + +// Interface for natively fetching all the keys from the storage data. +- (void)getAllKeys:(RCTResponseSenderBlock)callback; + +@end diff --git a/Frameworks/RNCAsyncStorage.xcframework/ios-arm64/Headers/RNCAsyncStorageDelegate.h b/Frameworks/RNCAsyncStorage.xcframework/ios-arm64/Headers/RNCAsyncStorageDelegate.h new file mode 100644 index 0000000..8298099 --- /dev/null +++ b/Frameworks/RNCAsyncStorage.xcframework/ios-arm64/Headers/RNCAsyncStorageDelegate.h @@ -0,0 +1,73 @@ +/** + * 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 + +NS_ASSUME_NONNULL_BEGIN + +typedef void (^RNCAsyncStorageCompletion)(NSError *_Nullable error); +typedef void (^RNCAsyncStorageResultCallback)(NSArray> *valuesOrErrors); + +@protocol RNCAsyncStorageDelegate + +/*! + * Returns all keys currently stored. If none, an empty array is returned. + * @param block Block to call with result. + */ +- (void)allKeys:(RNCAsyncStorageResultCallback)block; + +/*! + * Merges values with the corresponding values stored at specified keys. + * @param values Values to merge. + * @param keys Keys to the values that should be merged with. + * @param block Block to call with merged result. + */ +- (void)mergeValues:(NSArray *)values + forKeys:(NSArray *)keys + completion:(RNCAsyncStorageResultCallback)block; + +/*! + * Removes all values from the store. + * @param block Block to call with result. + */ +- (void)removeAllValues:(RNCAsyncStorageCompletion)block; + +/*! + * Removes all values associated with specified keys. + * @param keys Keys of values to remove. + * @param block Block to call with result. + */ +- (void)removeValuesForKeys:(NSArray *)keys + completion:(RNCAsyncStorageResultCallback)block; + +/*! + * Sets specified key-value pairs. + * @param values Values to set. + * @param keys Keys of specified values to set. + * @param block Block to call with result. + */ +- (void)setValues:(NSArray *)values + forKeys:(NSArray *)keys + completion:(RNCAsyncStorageResultCallback)block; + +/*! + * Returns values associated with specified keys. + * @param keys Keys of values to return. + * @param block Block to call with result. + */ +- (void)valuesForKeys:(NSArray *)keys completion:(RNCAsyncStorageResultCallback)block; + +@optional + +/*! + * Returns whether the delegate should be treated as a passthrough. + */ +@property (nonatomic, readonly, getter=isPassthrough) BOOL passthrough; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/RNCAsyncStorage.xcframework/ios-arm64/libRNCAsyncStorage.a b/Frameworks/RNCAsyncStorage.xcframework/ios-arm64/libRNCAsyncStorage.a new file mode 100644 index 0000000..acff984 Binary files /dev/null and b/Frameworks/RNCAsyncStorage.xcframework/ios-arm64/libRNCAsyncStorage.a differ diff --git a/Frameworks/RNCAsyncStorage.xcframework/ios-arm64_x86_64-simulator/Headers/RNCAsyncStorage.h b/Frameworks/RNCAsyncStorage.xcframework/ios-arm64_x86_64-simulator/Headers/RNCAsyncStorage.h new file mode 100644 index 0000000..38e5178 --- /dev/null +++ b/Frameworks/RNCAsyncStorage.xcframework/ios-arm64_x86_64-simulator/Headers/RNCAsyncStorage.h @@ -0,0 +1,62 @@ +/** + * 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 + +#import +#import + +#ifdef RCT_NEW_ARCH_ENABLED +#import +#endif + +#import "RNCAsyncStorageDelegate.h" + +/** + * A simple, asynchronous, persistent, key-value storage system designed as a + * backend to the AsyncStorage JS module, which is modeled after LocalStorage. + * + * Current implementation stores small values in serialized dictionary and + * larger values in separate files. Since we use a serial file queue + * `RKFileQueue`, reading/writing from multiple threads should be perceived as + * being atomic, unless someone bypasses the `RNCAsyncStorage` API. + * + * Keys and values must always be strings or an error is returned. + */ +@interface RNCAsyncStorage : NSObject < +#ifdef RCT_NEW_ARCH_ENABLED + NativeAsyncStorageModuleSpec +#else + RCTBridgeModule +#endif + , + RCTInvalidating> + +@property (nonatomic, weak, nullable) id delegate; + +@property (nonatomic, assign) BOOL clearOnInvalidate; + +@property (nonatomic, readonly, getter=isValid) BOOL valid; + +// Clear the RNCAsyncStorage data from native code +- (void)clearAllData; + +// For clearing data when the bridge may not exist, e.g. when logging out. ++ (void)clearAllData; + +// Grab data from the cache. ResponseBlock result array will have an error at position 0, and an +// array of arrays at position 1. +- (void)multiGet:(NSArray *)keys callback:(RCTResponseSenderBlock)callback; + +// Add multiple key value pairs to the cache. +- (void)multiSet:(NSArray *> *)kvPairs + callback:(RCTResponseSenderBlock)callback; + +// Interface for natively fetching all the keys from the storage data. +- (void)getAllKeys:(RCTResponseSenderBlock)callback; + +@end diff --git a/Frameworks/RNCAsyncStorage.xcframework/ios-arm64_x86_64-simulator/Headers/RNCAsyncStorageDelegate.h b/Frameworks/RNCAsyncStorage.xcframework/ios-arm64_x86_64-simulator/Headers/RNCAsyncStorageDelegate.h new file mode 100644 index 0000000..8298099 --- /dev/null +++ b/Frameworks/RNCAsyncStorage.xcframework/ios-arm64_x86_64-simulator/Headers/RNCAsyncStorageDelegate.h @@ -0,0 +1,73 @@ +/** + * 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 + +NS_ASSUME_NONNULL_BEGIN + +typedef void (^RNCAsyncStorageCompletion)(NSError *_Nullable error); +typedef void (^RNCAsyncStorageResultCallback)(NSArray> *valuesOrErrors); + +@protocol RNCAsyncStorageDelegate + +/*! + * Returns all keys currently stored. If none, an empty array is returned. + * @param block Block to call with result. + */ +- (void)allKeys:(RNCAsyncStorageResultCallback)block; + +/*! + * Merges values with the corresponding values stored at specified keys. + * @param values Values to merge. + * @param keys Keys to the values that should be merged with. + * @param block Block to call with merged result. + */ +- (void)mergeValues:(NSArray *)values + forKeys:(NSArray *)keys + completion:(RNCAsyncStorageResultCallback)block; + +/*! + * Removes all values from the store. + * @param block Block to call with result. + */ +- (void)removeAllValues:(RNCAsyncStorageCompletion)block; + +/*! + * Removes all values associated with specified keys. + * @param keys Keys of values to remove. + * @param block Block to call with result. + */ +- (void)removeValuesForKeys:(NSArray *)keys + completion:(RNCAsyncStorageResultCallback)block; + +/*! + * Sets specified key-value pairs. + * @param values Values to set. + * @param keys Keys of specified values to set. + * @param block Block to call with result. + */ +- (void)setValues:(NSArray *)values + forKeys:(NSArray *)keys + completion:(RNCAsyncStorageResultCallback)block; + +/*! + * Returns values associated with specified keys. + * @param keys Keys of values to return. + * @param block Block to call with result. + */ +- (void)valuesForKeys:(NSArray *)keys completion:(RNCAsyncStorageResultCallback)block; + +@optional + +/*! + * Returns whether the delegate should be treated as a passthrough. + */ +@property (nonatomic, readonly, getter=isPassthrough) BOOL passthrough; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/RNCAsyncStorage.xcframework/ios-arm64_x86_64-simulator/libRNCAsyncStorage.a b/Frameworks/RNCAsyncStorage.xcframework/ios-arm64_x86_64-simulator/libRNCAsyncStorage.a new file mode 100644 index 0000000..c5f4d3d Binary files /dev/null and b/Frameworks/RNCAsyncStorage.xcframework/ios-arm64_x86_64-simulator/libRNCAsyncStorage.a differ diff --git a/Frameworks/RNColorMatrixImageFilters.xcframework/Info.plist b/Frameworks/RNColorMatrixImageFilters.xcframework/Info.plist new file mode 100644 index 0000000..d5b907a --- /dev/null +++ b/Frameworks/RNColorMatrixImageFilters.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libRNColorMatrixImageFilters.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libRNColorMatrixImageFilters.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + libRNColorMatrixImageFilters.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libRNColorMatrixImageFilters.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/RNColorMatrixImageFilters.xcframework/ios-arm64/Headers/CMIFColorMatrixImageFilter.h b/Frameworks/RNColorMatrixImageFilters.xcframework/ios-arm64/Headers/CMIFColorMatrixImageFilter.h new file mode 100644 index 0000000..4b3a291 --- /dev/null +++ b/Frameworks/RNColorMatrixImageFilters.xcframework/ios-arm64/Headers/CMIFColorMatrixImageFilter.h @@ -0,0 +1,8 @@ +#import +#import + +@interface CMIFColorMatrixImageFilter : RCTView + +@property (nonatomic, strong) NSArray *matrix; + +@end diff --git a/Frameworks/RNColorMatrixImageFilters.xcframework/ios-arm64/Headers/CMIFColorMatrixImageFilterManager.h b/Frameworks/RNColorMatrixImageFilters.xcframework/ios-arm64/Headers/CMIFColorMatrixImageFilterManager.h new file mode 100644 index 0000000..73fbbf7 --- /dev/null +++ b/Frameworks/RNColorMatrixImageFilters.xcframework/ios-arm64/Headers/CMIFColorMatrixImageFilterManager.h @@ -0,0 +1,5 @@ +#import + +@interface CMIFColorMatrixImageFilterManager : RCTViewManager + +@end diff --git a/Frameworks/RNColorMatrixImageFilters.xcframework/ios-arm64/Headers/CMIFImageView.h b/Frameworks/RNColorMatrixImageFilters.xcframework/ios-arm64/Headers/CMIFImageView.h new file mode 100644 index 0000000..52ad3e4 --- /dev/null +++ b/Frameworks/RNColorMatrixImageFilters.xcframework/ios-arm64/Headers/CMIFImageView.h @@ -0,0 +1,11 @@ +#ifndef CMIFImageView_h +#define CMIFImageView_h + +@protocol CMIFImageView + +- (UIImage *)image; +- (void)setImage:(UIImage *)image; + +@end + +#endif /* CMIFImageView_h */ diff --git a/Frameworks/RNColorMatrixImageFilters.xcframework/ios-arm64/libRNColorMatrixImageFilters.a b/Frameworks/RNColorMatrixImageFilters.xcframework/ios-arm64/libRNColorMatrixImageFilters.a new file mode 100644 index 0000000..1cf6a7d Binary files /dev/null and b/Frameworks/RNColorMatrixImageFilters.xcframework/ios-arm64/libRNColorMatrixImageFilters.a differ diff --git a/Frameworks/RNColorMatrixImageFilters.xcframework/ios-arm64_x86_64-simulator/Headers/CMIFColorMatrixImageFilter.h b/Frameworks/RNColorMatrixImageFilters.xcframework/ios-arm64_x86_64-simulator/Headers/CMIFColorMatrixImageFilter.h new file mode 100644 index 0000000..4b3a291 --- /dev/null +++ b/Frameworks/RNColorMatrixImageFilters.xcframework/ios-arm64_x86_64-simulator/Headers/CMIFColorMatrixImageFilter.h @@ -0,0 +1,8 @@ +#import +#import + +@interface CMIFColorMatrixImageFilter : RCTView + +@property (nonatomic, strong) NSArray *matrix; + +@end diff --git a/Frameworks/RNColorMatrixImageFilters.xcframework/ios-arm64_x86_64-simulator/Headers/CMIFColorMatrixImageFilterManager.h b/Frameworks/RNColorMatrixImageFilters.xcframework/ios-arm64_x86_64-simulator/Headers/CMIFColorMatrixImageFilterManager.h new file mode 100644 index 0000000..73fbbf7 --- /dev/null +++ b/Frameworks/RNColorMatrixImageFilters.xcframework/ios-arm64_x86_64-simulator/Headers/CMIFColorMatrixImageFilterManager.h @@ -0,0 +1,5 @@ +#import + +@interface CMIFColorMatrixImageFilterManager : RCTViewManager + +@end diff --git a/Frameworks/RNColorMatrixImageFilters.xcframework/ios-arm64_x86_64-simulator/Headers/CMIFImageView.h b/Frameworks/RNColorMatrixImageFilters.xcframework/ios-arm64_x86_64-simulator/Headers/CMIFImageView.h new file mode 100644 index 0000000..52ad3e4 --- /dev/null +++ b/Frameworks/RNColorMatrixImageFilters.xcframework/ios-arm64_x86_64-simulator/Headers/CMIFImageView.h @@ -0,0 +1,11 @@ +#ifndef CMIFImageView_h +#define CMIFImageView_h + +@protocol CMIFImageView + +- (UIImage *)image; +- (void)setImage:(UIImage *)image; + +@end + +#endif /* CMIFImageView_h */ diff --git a/Frameworks/RNColorMatrixImageFilters.xcframework/ios-arm64_x86_64-simulator/libRNColorMatrixImageFilters.a b/Frameworks/RNColorMatrixImageFilters.xcframework/ios-arm64_x86_64-simulator/libRNColorMatrixImageFilters.a new file mode 100644 index 0000000..f1dfa48 Binary files /dev/null and b/Frameworks/RNColorMatrixImageFilters.xcframework/ios-arm64_x86_64-simulator/libRNColorMatrixImageFilters.a differ diff --git a/Frameworks/RNDateTimePicker.xcframework/Info.plist b/Frameworks/RNDateTimePicker.xcframework/Info.plist new file mode 100644 index 0000000..d4c5b02 --- /dev/null +++ b/Frameworks/RNDateTimePicker.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libRNDateTimePicker.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libRNDateTimePicker.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + libRNDateTimePicker.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libRNDateTimePicker.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/RNDateTimePicker.xcframework/ios-arm64/Headers/RNDateTimePicker.h b/Frameworks/RNDateTimePicker.xcframework/ios-arm64/Headers/RNDateTimePicker.h new file mode 100644 index 0000000..00dd45d --- /dev/null +++ b/Frameworks/RNDateTimePicker.xcframework/ios-arm64/Headers/RNDateTimePicker.h @@ -0,0 +1,12 @@ +/** + * 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 + +@interface RNDateTimePicker : UIDatePicker + +@end diff --git a/Frameworks/RNDateTimePicker.xcframework/ios-arm64/Headers/RNDateTimePickerManager.h b/Frameworks/RNDateTimePicker.xcframework/ios-arm64/Headers/RNDateTimePickerManager.h new file mode 100644 index 0000000..a619db6 --- /dev/null +++ b/Frameworks/RNDateTimePicker.xcframework/ios-arm64/Headers/RNDateTimePickerManager.h @@ -0,0 +1,19 @@ +/** + * 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 +#import + +@interface RCTConvert(UIDatePicker) + ++ (UIDatePickerMode)UIDatePickerMode:(id)json; + +@end + +@interface RNDateTimePickerManager : RCTViewManager + +@end diff --git a/Frameworks/RNDateTimePicker.xcframework/ios-arm64/Headers/RNDateTimePickerShadowView.h b/Frameworks/RNDateTimePicker.xcframework/ios-arm64/Headers/RNDateTimePickerShadowView.h new file mode 100644 index 0000000..04578ee --- /dev/null +++ b/Frameworks/RNDateTimePicker.xcframework/ios-arm64/Headers/RNDateTimePickerShadowView.h @@ -0,0 +1,12 @@ +#import +#import "RNDateTimePicker.h" + +@interface RNDateTimePickerShadowView : RCTShadowView + +@property (nullable, nonatomic, strong) RNDateTimePicker *picker; +@property (nonatomic) UIDatePickerMode mode; +@property (nullable, nonatomic, strong) NSDate *date; +@property (nullable, nonatomic, strong) NSLocale *locale; +@property (nonatomic, assign) UIDatePickerStyle displayIOS API_AVAILABLE(ios(13.4)); + +@end diff --git a/Frameworks/RNDateTimePicker.xcframework/ios-arm64/libRNDateTimePicker.a b/Frameworks/RNDateTimePicker.xcframework/ios-arm64/libRNDateTimePicker.a new file mode 100644 index 0000000..739040b Binary files /dev/null and b/Frameworks/RNDateTimePicker.xcframework/ios-arm64/libRNDateTimePicker.a differ diff --git a/Frameworks/RNDateTimePicker.xcframework/ios-arm64_x86_64-simulator/Headers/RNDateTimePicker.h b/Frameworks/RNDateTimePicker.xcframework/ios-arm64_x86_64-simulator/Headers/RNDateTimePicker.h new file mode 100644 index 0000000..00dd45d --- /dev/null +++ b/Frameworks/RNDateTimePicker.xcframework/ios-arm64_x86_64-simulator/Headers/RNDateTimePicker.h @@ -0,0 +1,12 @@ +/** + * 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 + +@interface RNDateTimePicker : UIDatePicker + +@end diff --git a/Frameworks/RNDateTimePicker.xcframework/ios-arm64_x86_64-simulator/Headers/RNDateTimePickerManager.h b/Frameworks/RNDateTimePicker.xcframework/ios-arm64_x86_64-simulator/Headers/RNDateTimePickerManager.h new file mode 100644 index 0000000..a619db6 --- /dev/null +++ b/Frameworks/RNDateTimePicker.xcframework/ios-arm64_x86_64-simulator/Headers/RNDateTimePickerManager.h @@ -0,0 +1,19 @@ +/** + * 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 +#import + +@interface RCTConvert(UIDatePicker) + ++ (UIDatePickerMode)UIDatePickerMode:(id)json; + +@end + +@interface RNDateTimePickerManager : RCTViewManager + +@end diff --git a/Frameworks/RNDateTimePicker.xcframework/ios-arm64_x86_64-simulator/Headers/RNDateTimePickerShadowView.h b/Frameworks/RNDateTimePicker.xcframework/ios-arm64_x86_64-simulator/Headers/RNDateTimePickerShadowView.h new file mode 100644 index 0000000..04578ee --- /dev/null +++ b/Frameworks/RNDateTimePicker.xcframework/ios-arm64_x86_64-simulator/Headers/RNDateTimePickerShadowView.h @@ -0,0 +1,12 @@ +#import +#import "RNDateTimePicker.h" + +@interface RNDateTimePickerShadowView : RCTShadowView + +@property (nullable, nonatomic, strong) RNDateTimePicker *picker; +@property (nonatomic) UIDatePickerMode mode; +@property (nullable, nonatomic, strong) NSDate *date; +@property (nullable, nonatomic, strong) NSLocale *locale; +@property (nonatomic, assign) UIDatePickerStyle displayIOS API_AVAILABLE(ios(13.4)); + +@end diff --git a/Frameworks/RNDateTimePicker.xcframework/ios-arm64_x86_64-simulator/libRNDateTimePicker.a b/Frameworks/RNDateTimePicker.xcframework/ios-arm64_x86_64-simulator/libRNDateTimePicker.a new file mode 100644 index 0000000..269b52d Binary files /dev/null and b/Frameworks/RNDateTimePicker.xcframework/ios-arm64_x86_64-simulator/libRNDateTimePicker.a differ diff --git a/Frameworks/RNDefaultPreference.xcframework/Info.plist b/Frameworks/RNDefaultPreference.xcframework/Info.plist new file mode 100644 index 0000000..38f600b --- /dev/null +++ b/Frameworks/RNDefaultPreference.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libRNDefaultPreference.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libRNDefaultPreference.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + libRNDefaultPreference.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libRNDefaultPreference.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/RNDefaultPreference.xcframework/ios-arm64/Headers/RNDefaultPreference.h b/Frameworks/RNDefaultPreference.xcframework/ios-arm64/Headers/RNDefaultPreference.h new file mode 100644 index 0000000..663cf83 --- /dev/null +++ b/Frameworks/RNDefaultPreference.xcframework/ios-arm64/Headers/RNDefaultPreference.h @@ -0,0 +1,7 @@ + +// import RCTBridgeModule +#import + +@interface RNDefaultPreference : NSObject + +@end diff --git a/Frameworks/RNDefaultPreference.xcframework/ios-arm64/libRNDefaultPreference.a b/Frameworks/RNDefaultPreference.xcframework/ios-arm64/libRNDefaultPreference.a new file mode 100644 index 0000000..cd99e8f Binary files /dev/null and b/Frameworks/RNDefaultPreference.xcframework/ios-arm64/libRNDefaultPreference.a differ diff --git a/Frameworks/RNDefaultPreference.xcframework/ios-arm64_x86_64-simulator/Headers/RNDefaultPreference.h b/Frameworks/RNDefaultPreference.xcframework/ios-arm64_x86_64-simulator/Headers/RNDefaultPreference.h new file mode 100644 index 0000000..663cf83 --- /dev/null +++ b/Frameworks/RNDefaultPreference.xcframework/ios-arm64_x86_64-simulator/Headers/RNDefaultPreference.h @@ -0,0 +1,7 @@ + +// import RCTBridgeModule +#import + +@interface RNDefaultPreference : NSObject + +@end diff --git a/Frameworks/RNDefaultPreference.xcframework/ios-arm64_x86_64-simulator/libRNDefaultPreference.a b/Frameworks/RNDefaultPreference.xcframework/ios-arm64_x86_64-simulator/libRNDefaultPreference.a new file mode 100644 index 0000000..4e2357a Binary files /dev/null and b/Frameworks/RNDefaultPreference.xcframework/ios-arm64_x86_64-simulator/libRNDefaultPreference.a differ diff --git a/Frameworks/RNDeviceInfo.xcframework/Info.plist b/Frameworks/RNDeviceInfo.xcframework/Info.plist new file mode 100644 index 0000000..4023da8 --- /dev/null +++ b/Frameworks/RNDeviceInfo.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libRNDeviceInfo.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libRNDeviceInfo.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + libRNDeviceInfo.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libRNDeviceInfo.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/RNDeviceInfo.xcframework/ios-arm64/Headers/DeviceUID.h b/Frameworks/RNDeviceInfo.xcframework/ios-arm64/Headers/DeviceUID.h new file mode 100644 index 0000000..65c1368 --- /dev/null +++ b/Frameworks/RNDeviceInfo.xcframework/ios-arm64/Headers/DeviceUID.h @@ -0,0 +1,6 @@ +#import + +@interface DeviceUID : NSObject ++ (NSString *)syncUid; ++ (NSString *)uid; +@end diff --git a/Frameworks/RNDeviceInfo.xcframework/ios-arm64/Headers/EnvironmentUtil.h b/Frameworks/RNDeviceInfo.xcframework/ios-arm64/Headers/EnvironmentUtil.h new file mode 100644 index 0000000..4e6122a --- /dev/null +++ b/Frameworks/RNDeviceInfo.xcframework/ios-arm64/Headers/EnvironmentUtil.h @@ -0,0 +1,39 @@ +// +// EnvironmentUtil.h +// RNDeviceInfo +// +// Created by Dima Portenko on 10.04.2021. +// Copyright © 2021 Learnium. All rights reserved. +// + +#import + +/** + * App environment + */ +typedef NS_ENUM(NSInteger, MSACEnvironment) { + + /** + * App has been downloaded from the AppStore. + */ + MSACEnvironmentAppStore = 0, + + /** + * App has been downloaded from TestFlight. + */ + MSACEnvironmentTestFlight = 1, + + /** + * App has been installed by some other mechanism. + * This could be Ad-Hoc, Enterprise, etc. + */ + MSACEnvironmentOther = 2 +}; + +#define EnvironmentValues [NSArray arrayWithObjects: @"AppStore", @"TestFlight", @"Other", nil] + +@interface EnvironmentUtil : NSObject + ++ (MSACEnvironment)currentAppEnvironment; + +@end diff --git a/Frameworks/RNDeviceInfo.xcframework/ios-arm64/Headers/RNDeviceInfo.h b/Frameworks/RNDeviceInfo.xcframework/ios-arm64/Headers/RNDeviceInfo.h new file mode 100644 index 0000000..f77b052 --- /dev/null +++ b/Frameworks/RNDeviceInfo.xcframework/ios-arm64/Headers/RNDeviceInfo.h @@ -0,0 +1,20 @@ +// +// RNDeviceInfo.h +// Learnium +// +// Created by Rebecca Hughes on 03/08/2015. +// Copyright © 2015 Learnium Limited. All rights reserved. +// + +#import +#import +#import +#import +#import +#import + +@interface RNDeviceInfo : RCTEventEmitter + +@property (nonatomic) float lowBatteryThreshold; + +@end diff --git a/Frameworks/RNDeviceInfo.xcframework/ios-arm64/libRNDeviceInfo.a b/Frameworks/RNDeviceInfo.xcframework/ios-arm64/libRNDeviceInfo.a new file mode 100644 index 0000000..df29382 Binary files /dev/null and b/Frameworks/RNDeviceInfo.xcframework/ios-arm64/libRNDeviceInfo.a differ diff --git a/Frameworks/RNDeviceInfo.xcframework/ios-arm64_x86_64-simulator/Headers/DeviceUID.h b/Frameworks/RNDeviceInfo.xcframework/ios-arm64_x86_64-simulator/Headers/DeviceUID.h new file mode 100644 index 0000000..65c1368 --- /dev/null +++ b/Frameworks/RNDeviceInfo.xcframework/ios-arm64_x86_64-simulator/Headers/DeviceUID.h @@ -0,0 +1,6 @@ +#import + +@interface DeviceUID : NSObject ++ (NSString *)syncUid; ++ (NSString *)uid; +@end diff --git a/Frameworks/RNDeviceInfo.xcframework/ios-arm64_x86_64-simulator/Headers/EnvironmentUtil.h b/Frameworks/RNDeviceInfo.xcframework/ios-arm64_x86_64-simulator/Headers/EnvironmentUtil.h new file mode 100644 index 0000000..4e6122a --- /dev/null +++ b/Frameworks/RNDeviceInfo.xcframework/ios-arm64_x86_64-simulator/Headers/EnvironmentUtil.h @@ -0,0 +1,39 @@ +// +// EnvironmentUtil.h +// RNDeviceInfo +// +// Created by Dima Portenko on 10.04.2021. +// Copyright © 2021 Learnium. All rights reserved. +// + +#import + +/** + * App environment + */ +typedef NS_ENUM(NSInteger, MSACEnvironment) { + + /** + * App has been downloaded from the AppStore. + */ + MSACEnvironmentAppStore = 0, + + /** + * App has been downloaded from TestFlight. + */ + MSACEnvironmentTestFlight = 1, + + /** + * App has been installed by some other mechanism. + * This could be Ad-Hoc, Enterprise, etc. + */ + MSACEnvironmentOther = 2 +}; + +#define EnvironmentValues [NSArray arrayWithObjects: @"AppStore", @"TestFlight", @"Other", nil] + +@interface EnvironmentUtil : NSObject + ++ (MSACEnvironment)currentAppEnvironment; + +@end diff --git a/Frameworks/RNDeviceInfo.xcframework/ios-arm64_x86_64-simulator/Headers/RNDeviceInfo.h b/Frameworks/RNDeviceInfo.xcframework/ios-arm64_x86_64-simulator/Headers/RNDeviceInfo.h new file mode 100644 index 0000000..f77b052 --- /dev/null +++ b/Frameworks/RNDeviceInfo.xcframework/ios-arm64_x86_64-simulator/Headers/RNDeviceInfo.h @@ -0,0 +1,20 @@ +// +// RNDeviceInfo.h +// Learnium +// +// Created by Rebecca Hughes on 03/08/2015. +// Copyright © 2015 Learnium Limited. All rights reserved. +// + +#import +#import +#import +#import +#import +#import + +@interface RNDeviceInfo : RCTEventEmitter + +@property (nonatomic) float lowBatteryThreshold; + +@end diff --git a/Frameworks/RNDeviceInfo.xcframework/ios-arm64_x86_64-simulator/libRNDeviceInfo.a b/Frameworks/RNDeviceInfo.xcframework/ios-arm64_x86_64-simulator/libRNDeviceInfo.a new file mode 100644 index 0000000..0cc7cc6 Binary files /dev/null and b/Frameworks/RNDeviceInfo.xcframework/ios-arm64_x86_64-simulator/libRNDeviceInfo.a differ diff --git a/Frameworks/RNFS.xcframework/Info.plist b/Frameworks/RNFS.xcframework/Info.plist new file mode 100644 index 0000000..c0b3934 --- /dev/null +++ b/Frameworks/RNFS.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libRNFS.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libRNFS.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libRNFS.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libRNFS.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/RNFS.xcframework/ios-arm64/Headers/Downloader.h b/Frameworks/RNFS.xcframework/ios-arm64/Headers/Downloader.h new file mode 100644 index 0000000..8204252 --- /dev/null +++ b/Frameworks/RNFS.xcframework/ios-arm64/Headers/Downloader.h @@ -0,0 +1,37 @@ +#import + +typedef void (^DownloadCompleteCallback)(NSNumber*, NSNumber*); +typedef void (^ErrorCallback)(NSError*); +typedef void (^BeginCallback)(NSNumber*, NSNumber*, NSDictionary*); +typedef void (^ProgressCallback)(NSNumber*, NSNumber*); +typedef void (^ResumableCallback)(void); + +@interface RNFSDownloadParams : NSObject + +@property (copy) NSString* fromUrl; +@property (copy) NSString* toFile; +@property (copy) NSDictionary* headers; +@property (copy) DownloadCompleteCallback completeCallback; // Download has finished (data written) +@property (copy) ErrorCallback errorCallback; // Something went wrong +@property (copy) BeginCallback beginCallback; // Download has started (headers received) +@property (copy) ProgressCallback progressCallback; // Download is progressing +@property (copy) ResumableCallback resumableCallback; // Download has stopped but is resumable +@property bool background; // Whether to continue download when app is in background +@property bool discretionary; // Whether the file may be downloaded at the OS's discretion (iOS only) +@property bool cacheable; // Whether the file may be stored in the shared NSURLCache (iOS only) +@property (copy) NSNumber* progressInterval; +@property (copy) NSNumber* progressDivider; +@property (copy) NSNumber* readTimeout; // How long (in milliseconds) a task should wait for additional data to arrive before giving up +@property (copy) NSNumber* backgroundTimeout; // How long (in milliseconds) to wait for an entire resource to transfer before giving up + + +@end + +@interface RNFSDownloader : NSObject + +- (NSString *)downloadFile:(RNFSDownloadParams*)params; +- (void)stopDownload; +- (void)resumeDownload; +- (BOOL)isResumable; + +@end diff --git a/Frameworks/RNFS.xcframework/ios-arm64/Headers/NSArray+Map.h b/Frameworks/RNFS.xcframework/ios-arm64/Headers/NSArray+Map.h new file mode 100644 index 0000000..dbdd0d3 --- /dev/null +++ b/Frameworks/RNFS.xcframework/ios-arm64/Headers/NSArray+Map.h @@ -0,0 +1,13 @@ +// +// NSArray+Map.h +// RNFS +// +// taken from http://stackoverflow.com/questions/6127638/nsarray-equivalent-of-map + +#import + +@interface NSArray (Map) + +- (NSArray *)rnfs_mapObjectsUsingBlock:(id (^)(id obj, NSUInteger idx))block; + +@end \ No newline at end of file diff --git a/Frameworks/RNFS.xcframework/ios-arm64/Headers/RNFSManager.h b/Frameworks/RNFS.xcframework/ios-arm64/Headers/RNFSManager.h new file mode 100644 index 0000000..8ef10e4 --- /dev/null +++ b/Frameworks/RNFS.xcframework/ios-arm64/Headers/RNFSManager.h @@ -0,0 +1,19 @@ +// +// RNFSManager.h +// RNFSManager +// +// Created by Johannes Lumpe on 08/05/15. +// Copyright (c) 2015 Johannes Lumpe. All rights reserved. +// + +#import +#import +#import + +typedef void (^CompletionHandler)(void); + +@interface RNFSManager : RCTEventEmitter + ++(void)setCompletionHandlerForIdentifier: (NSString *)identifier completionHandler: (CompletionHandler)completionHandler; + +@end diff --git a/Frameworks/RNFS.xcframework/ios-arm64/Headers/Uploader.h b/Frameworks/RNFS.xcframework/ios-arm64/Headers/Uploader.h new file mode 100644 index 0000000..e75cef0 --- /dev/null +++ b/Frameworks/RNFS.xcframework/ios-arm64/Headers/Uploader.h @@ -0,0 +1,32 @@ +#import + +#if !TARGET_OS_OSX +#import +#endif + +typedef void (^UploadCompleteCallback)(NSString*, NSURLResponse *); +typedef void (^UploadErrorCallback)(NSError*); +typedef void (^UploadBeginCallback)(void); +typedef void (^UploadProgressCallback)(NSNumber*, NSNumber*); + +@interface RNFSUploadParams : NSObject + +@property (copy) NSString* toUrl; +@property (copy) NSArray* files; +@property (copy) NSDictionary* headers; +@property (copy) NSDictionary* fields; +@property (copy) NSString* method; +@property (assign) BOOL binaryStreamOnly; +@property (copy) UploadCompleteCallback completeCallback; // Upload has finished (data written) +@property (copy) UploadErrorCallback errorCallback; // Something gone wrong +@property (copy) UploadBeginCallback beginCallback; // Upload has started +@property (copy) UploadProgressCallback progressCallback; // Upload is progressing + +@end + +@interface RNFSUploader : NSObject + +- (void)uploadFiles:(RNFSUploadParams*)params; +- (void)stopUpload; + +@end diff --git a/Frameworks/RNFS.xcframework/ios-arm64/libRNFS.a b/Frameworks/RNFS.xcframework/ios-arm64/libRNFS.a new file mode 100644 index 0000000..75d08a7 Binary files /dev/null and b/Frameworks/RNFS.xcframework/ios-arm64/libRNFS.a differ diff --git a/Frameworks/RNFS.xcframework/ios-arm64_x86_64-simulator/Headers/Downloader.h b/Frameworks/RNFS.xcframework/ios-arm64_x86_64-simulator/Headers/Downloader.h new file mode 100644 index 0000000..8204252 --- /dev/null +++ b/Frameworks/RNFS.xcframework/ios-arm64_x86_64-simulator/Headers/Downloader.h @@ -0,0 +1,37 @@ +#import + +typedef void (^DownloadCompleteCallback)(NSNumber*, NSNumber*); +typedef void (^ErrorCallback)(NSError*); +typedef void (^BeginCallback)(NSNumber*, NSNumber*, NSDictionary*); +typedef void (^ProgressCallback)(NSNumber*, NSNumber*); +typedef void (^ResumableCallback)(void); + +@interface RNFSDownloadParams : NSObject + +@property (copy) NSString* fromUrl; +@property (copy) NSString* toFile; +@property (copy) NSDictionary* headers; +@property (copy) DownloadCompleteCallback completeCallback; // Download has finished (data written) +@property (copy) ErrorCallback errorCallback; // Something went wrong +@property (copy) BeginCallback beginCallback; // Download has started (headers received) +@property (copy) ProgressCallback progressCallback; // Download is progressing +@property (copy) ResumableCallback resumableCallback; // Download has stopped but is resumable +@property bool background; // Whether to continue download when app is in background +@property bool discretionary; // Whether the file may be downloaded at the OS's discretion (iOS only) +@property bool cacheable; // Whether the file may be stored in the shared NSURLCache (iOS only) +@property (copy) NSNumber* progressInterval; +@property (copy) NSNumber* progressDivider; +@property (copy) NSNumber* readTimeout; // How long (in milliseconds) a task should wait for additional data to arrive before giving up +@property (copy) NSNumber* backgroundTimeout; // How long (in milliseconds) to wait for an entire resource to transfer before giving up + + +@end + +@interface RNFSDownloader : NSObject + +- (NSString *)downloadFile:(RNFSDownloadParams*)params; +- (void)stopDownload; +- (void)resumeDownload; +- (BOOL)isResumable; + +@end diff --git a/Frameworks/RNFS.xcframework/ios-arm64_x86_64-simulator/Headers/NSArray+Map.h b/Frameworks/RNFS.xcframework/ios-arm64_x86_64-simulator/Headers/NSArray+Map.h new file mode 100644 index 0000000..dbdd0d3 --- /dev/null +++ b/Frameworks/RNFS.xcframework/ios-arm64_x86_64-simulator/Headers/NSArray+Map.h @@ -0,0 +1,13 @@ +// +// NSArray+Map.h +// RNFS +// +// taken from http://stackoverflow.com/questions/6127638/nsarray-equivalent-of-map + +#import + +@interface NSArray (Map) + +- (NSArray *)rnfs_mapObjectsUsingBlock:(id (^)(id obj, NSUInteger idx))block; + +@end \ No newline at end of file diff --git a/Frameworks/RNFS.xcframework/ios-arm64_x86_64-simulator/Headers/RNFSManager.h b/Frameworks/RNFS.xcframework/ios-arm64_x86_64-simulator/Headers/RNFSManager.h new file mode 100644 index 0000000..8ef10e4 --- /dev/null +++ b/Frameworks/RNFS.xcframework/ios-arm64_x86_64-simulator/Headers/RNFSManager.h @@ -0,0 +1,19 @@ +// +// RNFSManager.h +// RNFSManager +// +// Created by Johannes Lumpe on 08/05/15. +// Copyright (c) 2015 Johannes Lumpe. All rights reserved. +// + +#import +#import +#import + +typedef void (^CompletionHandler)(void); + +@interface RNFSManager : RCTEventEmitter + ++(void)setCompletionHandlerForIdentifier: (NSString *)identifier completionHandler: (CompletionHandler)completionHandler; + +@end diff --git a/Frameworks/RNFS.xcframework/ios-arm64_x86_64-simulator/Headers/Uploader.h b/Frameworks/RNFS.xcframework/ios-arm64_x86_64-simulator/Headers/Uploader.h new file mode 100644 index 0000000..e75cef0 --- /dev/null +++ b/Frameworks/RNFS.xcframework/ios-arm64_x86_64-simulator/Headers/Uploader.h @@ -0,0 +1,32 @@ +#import + +#if !TARGET_OS_OSX +#import +#endif + +typedef void (^UploadCompleteCallback)(NSString*, NSURLResponse *); +typedef void (^UploadErrorCallback)(NSError*); +typedef void (^UploadBeginCallback)(void); +typedef void (^UploadProgressCallback)(NSNumber*, NSNumber*); + +@interface RNFSUploadParams : NSObject + +@property (copy) NSString* toUrl; +@property (copy) NSArray* files; +@property (copy) NSDictionary* headers; +@property (copy) NSDictionary* fields; +@property (copy) NSString* method; +@property (assign) BOOL binaryStreamOnly; +@property (copy) UploadCompleteCallback completeCallback; // Upload has finished (data written) +@property (copy) UploadErrorCallback errorCallback; // Something gone wrong +@property (copy) UploadBeginCallback beginCallback; // Upload has started +@property (copy) UploadProgressCallback progressCallback; // Upload is progressing + +@end + +@interface RNFSUploader : NSObject + +- (void)uploadFiles:(RNFSUploadParams*)params; +- (void)stopUpload; + +@end diff --git a/Frameworks/RNFS.xcframework/ios-arm64_x86_64-simulator/libRNFS.a b/Frameworks/RNFS.xcframework/ios-arm64_x86_64-simulator/libRNFS.a new file mode 100644 index 0000000..ba4c113 Binary files /dev/null and b/Frameworks/RNFS.xcframework/ios-arm64_x86_64-simulator/libRNFS.a differ diff --git a/Frameworks/RNFastImage.xcframework/Info.plist b/Frameworks/RNFastImage.xcframework/Info.plist new file mode 100644 index 0000000..4dae2c6 --- /dev/null +++ b/Frameworks/RNFastImage.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libRNFastImage.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libRNFastImage.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libRNFastImage.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libRNFastImage.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/RNFastImage.xcframework/ios-arm64/Headers/FFFastImageSource.h b/Frameworks/RNFastImage.xcframework/ios-arm64/Headers/FFFastImageSource.h new file mode 100644 index 0000000..7f97869 --- /dev/null +++ b/Frameworks/RNFastImage.xcframework/ios-arm64/Headers/FFFastImageSource.h @@ -0,0 +1,33 @@ +#import +#import + +typedef NS_ENUM(NSInteger, FFFPriority) { + FFFPriorityLow, + FFFPriorityNormal, + FFFPriorityHigh +}; + +typedef NS_ENUM(NSInteger, FFFCacheControl) { + FFFCacheControlImmutable, + FFFCacheControlWeb, + FFFCacheControlCacheOnly +}; + +// Object containing an image uri and metadata. +@interface FFFastImageSource : NSObject + +// uri for image, or base64 +@property (nonatomic) NSURL* url; +// priority for image request +@property (nonatomic) FFFPriority priority; +// headers for the image request +@property (nonatomic) NSDictionary *headers; +// cache control mode +@property (nonatomic) FFFCacheControl cacheControl; + +- (instancetype)initWithURL:(NSURL *)url + priority:(FFFPriority)priority + headers:(NSDictionary *)headers + cacheControl:(FFFCacheControl)cacheControl; + +@end diff --git a/Frameworks/RNFastImage.xcframework/ios-arm64/Headers/FFFastImageView.h b/Frameworks/RNFastImage.xcframework/ios-arm64/Headers/FFFastImageView.h new file mode 100644 index 0000000..fb557cf --- /dev/null +++ b/Frameworks/RNFastImage.xcframework/ios-arm64/Headers/FFFastImageView.h @@ -0,0 +1,23 @@ +#import + +#import +#import + +#import +#import + +#import "FFFastImageSource.h" + +@interface FFFastImageView : SDAnimatedImageView + +@property (nonatomic, copy) RCTDirectEventBlock onFastImageLoadStart; +@property (nonatomic, copy) RCTDirectEventBlock onFastImageProgress; +@property (nonatomic, copy) RCTDirectEventBlock onFastImageError; +@property (nonatomic, copy) RCTDirectEventBlock onFastImageLoad; +@property (nonatomic, copy) RCTDirectEventBlock onFastImageLoadEnd; +@property (nonatomic, assign) RCTResizeMode resizeMode; +@property (nonatomic, strong) FFFastImageSource *source; +@property (nonatomic, strong) UIColor *imageColor; + +@end + diff --git a/Frameworks/RNFastImage.xcframework/ios-arm64/Headers/FFFastImageViewManager.h b/Frameworks/RNFastImage.xcframework/ios-arm64/Headers/FFFastImageViewManager.h new file mode 100644 index 0000000..8ba6020 --- /dev/null +++ b/Frameworks/RNFastImage.xcframework/ios-arm64/Headers/FFFastImageViewManager.h @@ -0,0 +1,5 @@ +#import + +@interface FFFastImageViewManager : RCTViewManager + +@end diff --git a/Frameworks/RNFastImage.xcframework/ios-arm64/Headers/RCTConvert+FFFastImage.h b/Frameworks/RNFastImage.xcframework/ios-arm64/Headers/RCTConvert+FFFastImage.h new file mode 100644 index 0000000..f1070c9 --- /dev/null +++ b/Frameworks/RNFastImage.xcframework/ios-arm64/Headers/RCTConvert+FFFastImage.h @@ -0,0 +1,9 @@ +#import + +@class FFFastImageSource; + +@interface RCTConvert (FFFastImage) + ++ (FFFastImageSource *)FFFastImageSource:(id)json; + +@end diff --git a/Frameworks/RNFastImage.xcframework/ios-arm64/libRNFastImage.a b/Frameworks/RNFastImage.xcframework/ios-arm64/libRNFastImage.a new file mode 100644 index 0000000..cfd4605 Binary files /dev/null and b/Frameworks/RNFastImage.xcframework/ios-arm64/libRNFastImage.a differ diff --git a/Frameworks/RNFastImage.xcframework/ios-arm64_x86_64-simulator/Headers/FFFastImageSource.h b/Frameworks/RNFastImage.xcframework/ios-arm64_x86_64-simulator/Headers/FFFastImageSource.h new file mode 100644 index 0000000..7f97869 --- /dev/null +++ b/Frameworks/RNFastImage.xcframework/ios-arm64_x86_64-simulator/Headers/FFFastImageSource.h @@ -0,0 +1,33 @@ +#import +#import + +typedef NS_ENUM(NSInteger, FFFPriority) { + FFFPriorityLow, + FFFPriorityNormal, + FFFPriorityHigh +}; + +typedef NS_ENUM(NSInteger, FFFCacheControl) { + FFFCacheControlImmutable, + FFFCacheControlWeb, + FFFCacheControlCacheOnly +}; + +// Object containing an image uri and metadata. +@interface FFFastImageSource : NSObject + +// uri for image, or base64 +@property (nonatomic) NSURL* url; +// priority for image request +@property (nonatomic) FFFPriority priority; +// headers for the image request +@property (nonatomic) NSDictionary *headers; +// cache control mode +@property (nonatomic) FFFCacheControl cacheControl; + +- (instancetype)initWithURL:(NSURL *)url + priority:(FFFPriority)priority + headers:(NSDictionary *)headers + cacheControl:(FFFCacheControl)cacheControl; + +@end diff --git a/Frameworks/RNFastImage.xcframework/ios-arm64_x86_64-simulator/Headers/FFFastImageView.h b/Frameworks/RNFastImage.xcframework/ios-arm64_x86_64-simulator/Headers/FFFastImageView.h new file mode 100644 index 0000000..fb557cf --- /dev/null +++ b/Frameworks/RNFastImage.xcframework/ios-arm64_x86_64-simulator/Headers/FFFastImageView.h @@ -0,0 +1,23 @@ +#import + +#import +#import + +#import +#import + +#import "FFFastImageSource.h" + +@interface FFFastImageView : SDAnimatedImageView + +@property (nonatomic, copy) RCTDirectEventBlock onFastImageLoadStart; +@property (nonatomic, copy) RCTDirectEventBlock onFastImageProgress; +@property (nonatomic, copy) RCTDirectEventBlock onFastImageError; +@property (nonatomic, copy) RCTDirectEventBlock onFastImageLoad; +@property (nonatomic, copy) RCTDirectEventBlock onFastImageLoadEnd; +@property (nonatomic, assign) RCTResizeMode resizeMode; +@property (nonatomic, strong) FFFastImageSource *source; +@property (nonatomic, strong) UIColor *imageColor; + +@end + diff --git a/Frameworks/RNFastImage.xcframework/ios-arm64_x86_64-simulator/Headers/FFFastImageViewManager.h b/Frameworks/RNFastImage.xcframework/ios-arm64_x86_64-simulator/Headers/FFFastImageViewManager.h new file mode 100644 index 0000000..8ba6020 --- /dev/null +++ b/Frameworks/RNFastImage.xcframework/ios-arm64_x86_64-simulator/Headers/FFFastImageViewManager.h @@ -0,0 +1,5 @@ +#import + +@interface FFFastImageViewManager : RCTViewManager + +@end diff --git a/Frameworks/RNFastImage.xcframework/ios-arm64_x86_64-simulator/Headers/RCTConvert+FFFastImage.h b/Frameworks/RNFastImage.xcframework/ios-arm64_x86_64-simulator/Headers/RCTConvert+FFFastImage.h new file mode 100644 index 0000000..f1070c9 --- /dev/null +++ b/Frameworks/RNFastImage.xcframework/ios-arm64_x86_64-simulator/Headers/RCTConvert+FFFastImage.h @@ -0,0 +1,9 @@ +#import + +@class FFFastImageSource; + +@interface RCTConvert (FFFastImage) + ++ (FFFastImageSource *)FFFastImageSource:(id)json; + +@end diff --git a/Frameworks/RNFastImage.xcframework/ios-arm64_x86_64-simulator/libRNFastImage.a b/Frameworks/RNFastImage.xcframework/ios-arm64_x86_64-simulator/libRNFastImage.a new file mode 100644 index 0000000..50eb1c5 Binary files /dev/null and b/Frameworks/RNFastImage.xcframework/ios-arm64_x86_64-simulator/libRNFastImage.a differ diff --git a/Frameworks/RNGestureHandler.xcframework/Info.plist b/Frameworks/RNGestureHandler.xcframework/Info.plist new file mode 100644 index 0000000..e4b82b7 --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libRNGestureHandler.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libRNGestureHandler.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libRNGestureHandler.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libRNGestureHandler.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNFlingHandler.h b/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNFlingHandler.h new file mode 100644 index 0000000..b10d778 --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNFlingHandler.h @@ -0,0 +1,4 @@ +#import "RNGestureHandler.h" + +@interface RNFlingGestureHandler : RNGestureHandler +@end diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNForceTouchHandler.h b/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNForceTouchHandler.h new file mode 100644 index 0000000..b71fb78 --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNForceTouchHandler.h @@ -0,0 +1,4 @@ +#import "RNGestureHandler.h" + +@interface RNForceTouchHandler : RNGestureHandler +@end diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNGestureHandler.h b/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNGestureHandler.h new file mode 100644 index 0000000..f952c15 --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNGestureHandler.h @@ -0,0 +1,73 @@ +#import "RNGestureHandlerState.h" +#import "RNGestureHandlerDirection.h" +#import "RNGestureHandlerEvents.h" + +#import +#import +#import + +#define VEC_LEN_SQ(pt) (pt.x * pt.x + pt.y * pt.y) +#define TEST_MIN_IF_NOT_NAN(value, limit) \ +(!isnan(limit) && ((limit < 0 && value <= limit) || (limit >= 0 && value >= limit))) + +#define TEST_MAX_IF_NOT_NAN(value, max) \ +(!isnan(max) && ((max < 0 && value < max) || (max >= 0 && value > max))) + +#define APPLY_PROP(recognizer, config, type, prop, propName) do { \ +id value = config[propName]; \ +if (value != nil) recognizer.prop = [RCTConvert type:value]; \ +} while(0) + +#define APPLY_FLOAT_PROP(prop) do { APPLY_PROP(recognizer, config, CGFloat, prop, @#prop); } while(0) +#define APPLY_INT_PROP(prop) do { APPLY_PROP(recognizer, config, NSInteger, prop, @#prop); } while(0) +#define APPLY_NAMED_INT_PROP(prop, propName) do { APPLY_PROP(recognizer, config, NSInteger, prop, propName); } while(0) + +@protocol RNGestureHandlerEventEmitter + +- (void)sendTouchEvent:(nonnull RNGestureHandlerEvent *)event; + +- (void)sendStateChangeEvent:(nonnull RNGestureHandlerStateChange *)event; + +@end + + +@protocol RNRootViewGestureRecognizerDelegate + +- (void)gestureRecognizer:(nullable UIGestureRecognizer *)gestureRecognizer + didActivateInRootView:(nullable UIView *)rootView; + +@end + + +@interface RNGestureHandler : NSObject { + +@protected UIGestureRecognizer *_recognizer; +@protected RNGestureHandlerState _lastState; + +} + ++ (nullable RNGestureHandler *)findGestureHandlerByRecognizer:(nonnull UIGestureRecognizer *)recognizer; + +- (nonnull instancetype)initWithTag:(nonnull NSNumber *)tag; + +@property (nonatomic, readonly, nonnull) NSNumber *tag; +@property (nonatomic, weak, nullable) id emitter; +@property (nonatomic, readonly, nullable) UIGestureRecognizer *recognizer; +@property (nonatomic) BOOL enabled; +@property(nonatomic) BOOL shouldCancelWhenOutside; + +- (void)bindToView:(nonnull UIView *)view; +- (void)unbindFromView; +- (void)configure:(nullable NSDictionary *)config NS_REQUIRES_SUPER; +- (void)handleGesture:(nonnull id)recognizer; +- (BOOL)containsPointInView; +- (RNGestureHandlerState)state; +- (nullable RNGestureHandlerEventExtraData *)eventExtraData:(nonnull id)recognizer; + +- (void)reset; +- (void)sendEventsInState:(RNGestureHandlerState)state + forViewWithTag:(nonnull NSNumber *)reactTag + withExtraData:(RNGestureHandlerEventExtraData *)extraData; + +@end + diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNGestureHandlerButton.h b/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNGestureHandlerButton.h new file mode 100644 index 0000000..bfbbf7b --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNGestureHandlerButton.h @@ -0,0 +1,18 @@ +// +// RNGestureHandlerButton.h +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNGestureHandler.h" + +@interface RNGestureHandlerButton : UIControl + +/** + * Insets used when hit testing inside this view. + */ +@property (nonatomic, assign) UIEdgeInsets hitTestEdgeInsets; + +@end diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNGestureHandlerDirection.h b/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNGestureHandlerDirection.h new file mode 100644 index 0000000..84e4f18 --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNGestureHandlerDirection.h @@ -0,0 +1,8 @@ +#import + +typedef NS_ENUM(NSInteger, RNGestureHandlerDirection) { + RNGestureHandlerDirectionRight = 1, + RNGestureHandlerDirectionLeft = 2, + RNGestureHandlerDirectionUp = 4, + RNGestureHandlerDirectionDown = 8, +}; diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNGestureHandlerEvents.h b/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNGestureHandlerEvents.h new file mode 100644 index 0000000..85f1620 --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNGestureHandlerEvents.h @@ -0,0 +1,56 @@ +#import + +#import +#import + +#import "RNGestureHandlerState.h" + +@interface RNGestureHandlerEventExtraData : NSObject + +@property (readonly) NSDictionary *data; + +- (instancetype)initWithData:(NSDictionary *)data; + ++ (RNGestureHandlerEventExtraData *)forPosition:(CGPoint)position + withAbsolutePosition:(CGPoint)absolutePosition + withNumberOfTouches:(NSUInteger)numberOfTouches; ++ (RNGestureHandlerEventExtraData *)forPan:(CGPoint)position + withAbsolutePosition:(CGPoint)absolutePosition + withTranslation:(CGPoint)translation + withVelocity:(CGPoint)velocity + withNumberOfTouches:(NSUInteger)numberOfTouches; ++ (RNGestureHandlerEventExtraData *)forForce:(CGFloat)force + forPosition:(CGPoint)position + withAbsolutePosition:(CGPoint)absolutePosition + withNumberOfTouches:(NSUInteger)numberOfTouches; ++ (RNGestureHandlerEventExtraData *)forPinch:(CGFloat)scale + withFocalPoint:(CGPoint)focalPoint + withVelocity:(CGFloat)velocity + withNumberOfTouches:(NSUInteger)numberOfTouches; ++ (RNGestureHandlerEventExtraData *)forRotation:(CGFloat)rotation + withAnchorPoint:(CGPoint)anchorPoint + withVelocity:(CGFloat)velocity + withNumberOfTouches:(NSUInteger)numberOfTouches; ++ (RNGestureHandlerEventExtraData *)forPointerInside:(BOOL)pointerInside; +@end + +@interface RNGestureHandlerEvent : NSObject + +- (instancetype)initWithReactTag:(NSNumber *)reactTag + handlerTag:(NSNumber *)handlerTag + state:(RNGestureHandlerState)state + extraData:(RNGestureHandlerEventExtraData*)extraData + coalescingKey:(uint16_t)coalescingKey NS_DESIGNATED_INITIALIZER; + +@end + + +@interface RNGestureHandlerStateChange : NSObject + +- (instancetype)initWithReactTag:(NSNumber *)reactTag + handlerTag:(NSNumber *)handlerTag + state:(RNGestureHandlerState)state + prevState:(RNGestureHandlerState)prevState + extraData:(RNGestureHandlerEventExtraData*)extraData NS_DESIGNATED_INITIALIZER; + +@end diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNGestureHandlerManager.h b/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNGestureHandlerManager.h new file mode 100644 index 0000000..382d446 --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNGestureHandlerManager.h @@ -0,0 +1,29 @@ +#import + +#import + +@class RCTUIManager; +@class RCTEventDispatcher; + +@interface RNGestureHandlerManager : NSObject + +- (nonnull instancetype)initWithUIManager:(nonnull RCTUIManager *)uiManager + eventDispatcher:(nonnull RCTEventDispatcher *)eventDispatcher; + +- (void)createGestureHandler:(nonnull NSString *)handlerName + tag:(nonnull NSNumber *)handlerTag + config:(nonnull NSDictionary *)config; + +- (void)attachGestureHandler:(nonnull NSNumber *)handlerTag + toViewWithTag:(nonnull NSNumber *)viewTag; + +- (void)updateGestureHandler:(nonnull NSNumber *)handlerTag config:(nonnull NSDictionary *)config; + +- (void)dropGestureHandler:(nonnull NSNumber *)handlerTag; + +- (void)handleSetJSResponder:(nonnull NSNumber *)viewTag + blockNativeResponder:(nonnull NSNumber *)blockNativeResponder; + +- (void)handleClearJSResponder; + +@end diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNGestureHandlerModule.h b/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNGestureHandlerModule.h new file mode 100644 index 0000000..b5b1cc9 --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNGestureHandlerModule.h @@ -0,0 +1,8 @@ +#import +#import +#import + +@interface RNGestureHandlerModule : RCTEventEmitter + +@end + diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNGestureHandlerRegistry.h b/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNGestureHandlerRegistry.h new file mode 100644 index 0000000..d65ede2 --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNGestureHandlerRegistry.h @@ -0,0 +1,18 @@ +// +// RNGestureHandlerRegistry.h +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNGestureHandler.h" + +@interface RNGestureHandlerRegistry : NSObject + +- (nullable RNGestureHandler *)handlerWithTag:(nonnull NSNumber *)handlerTag; +- (void)registerGestureHandler:(nonnull RNGestureHandler *)gestureHandler; +- (void)attachHandlerWithTag:(nonnull NSNumber *)handlerTag toView:(nonnull UIView *)view; +- (void)dropHandlerWithTag:(nonnull NSNumber *)handlerTag; + +@end diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNGestureHandlerState.h b/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNGestureHandlerState.h new file mode 100644 index 0000000..b550697 --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNGestureHandlerState.h @@ -0,0 +1,10 @@ +#import + +typedef NS_ENUM(NSInteger, RNGestureHandlerState) { + RNGestureHandlerStateUndetermined = 0, + RNGestureHandlerStateFailed, + RNGestureHandlerStateBegan, + RNGestureHandlerStateCancelled, + RNGestureHandlerStateActive, + RNGestureHandlerStateEnd, +}; diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNLongPressHandler.h b/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNLongPressHandler.h new file mode 100644 index 0000000..db0ddce --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNLongPressHandler.h @@ -0,0 +1,12 @@ +// +// RNLongPressHandler.h +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNGestureHandler.h" + +@interface RNLongPressGestureHandler : RNGestureHandler +@end diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNNativeViewHandler.h b/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNNativeViewHandler.h new file mode 100644 index 0000000..cd7996e --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNNativeViewHandler.h @@ -0,0 +1,15 @@ +// +// RNNativeViewHandler.h +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNGestureHandler.h" + +@interface RNDummyGestureRecognizer : UIGestureRecognizer +@end + +@interface RNNativeViewGestureHandler : RNGestureHandler +@end diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNPanHandler.h b/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNPanHandler.h new file mode 100644 index 0000000..dae819a --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNPanHandler.h @@ -0,0 +1,12 @@ +// +// RNPanHandler.h +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNGestureHandler.h" + +@interface RNPanGestureHandler : RNGestureHandler +@end diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNPinchHandler.h b/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNPinchHandler.h new file mode 100644 index 0000000..afca530 --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNPinchHandler.h @@ -0,0 +1,12 @@ +// +// RNPinchHandler.h +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNGestureHandler.h" + +@interface RNPinchGestureHandler : RNGestureHandler +@end diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNRootViewGestureRecognizer.h b/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNRootViewGestureRecognizer.h new file mode 100644 index 0000000..a57dfc6 --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNRootViewGestureRecognizer.h @@ -0,0 +1,17 @@ +// +// RNRootViewGestureRecognizer.h +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNGestureHandler.h" + +@interface RNRootViewGestureRecognizer : UIGestureRecognizer + +@property (nullable, nonatomic, weak) id delegate; + +- (void)blockOtherRecognizers; + +@end diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNRotationHandler.h b/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNRotationHandler.h new file mode 100644 index 0000000..ca8b0ef --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNRotationHandler.h @@ -0,0 +1,12 @@ +// +// RNRotationHandler.h +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNGestureHandler.h" + +@interface RNRotationGestureHandler : RNGestureHandler +@end diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNTapHandler.h b/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNTapHandler.h new file mode 100644 index 0000000..53f53d1 --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/ios-arm64/Headers/RNTapHandler.h @@ -0,0 +1,12 @@ +// +// RNTapHandler.h +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNGestureHandler.h" + +@interface RNTapGestureHandler : RNGestureHandler +@end diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64/libRNGestureHandler.a b/Frameworks/RNGestureHandler.xcframework/ios-arm64/libRNGestureHandler.a new file mode 100644 index 0000000..1193d60 Binary files /dev/null and b/Frameworks/RNGestureHandler.xcframework/ios-arm64/libRNGestureHandler.a differ diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNFlingHandler.h b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNFlingHandler.h new file mode 100644 index 0000000..b10d778 --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNFlingHandler.h @@ -0,0 +1,4 @@ +#import "RNGestureHandler.h" + +@interface RNFlingGestureHandler : RNGestureHandler +@end diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNForceTouchHandler.h b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNForceTouchHandler.h new file mode 100644 index 0000000..b71fb78 --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNForceTouchHandler.h @@ -0,0 +1,4 @@ +#import "RNGestureHandler.h" + +@interface RNForceTouchHandler : RNGestureHandler +@end diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNGestureHandler.h b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNGestureHandler.h new file mode 100644 index 0000000..f952c15 --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNGestureHandler.h @@ -0,0 +1,73 @@ +#import "RNGestureHandlerState.h" +#import "RNGestureHandlerDirection.h" +#import "RNGestureHandlerEvents.h" + +#import +#import +#import + +#define VEC_LEN_SQ(pt) (pt.x * pt.x + pt.y * pt.y) +#define TEST_MIN_IF_NOT_NAN(value, limit) \ +(!isnan(limit) && ((limit < 0 && value <= limit) || (limit >= 0 && value >= limit))) + +#define TEST_MAX_IF_NOT_NAN(value, max) \ +(!isnan(max) && ((max < 0 && value < max) || (max >= 0 && value > max))) + +#define APPLY_PROP(recognizer, config, type, prop, propName) do { \ +id value = config[propName]; \ +if (value != nil) recognizer.prop = [RCTConvert type:value]; \ +} while(0) + +#define APPLY_FLOAT_PROP(prop) do { APPLY_PROP(recognizer, config, CGFloat, prop, @#prop); } while(0) +#define APPLY_INT_PROP(prop) do { APPLY_PROP(recognizer, config, NSInteger, prop, @#prop); } while(0) +#define APPLY_NAMED_INT_PROP(prop, propName) do { APPLY_PROP(recognizer, config, NSInteger, prop, propName); } while(0) + +@protocol RNGestureHandlerEventEmitter + +- (void)sendTouchEvent:(nonnull RNGestureHandlerEvent *)event; + +- (void)sendStateChangeEvent:(nonnull RNGestureHandlerStateChange *)event; + +@end + + +@protocol RNRootViewGestureRecognizerDelegate + +- (void)gestureRecognizer:(nullable UIGestureRecognizer *)gestureRecognizer + didActivateInRootView:(nullable UIView *)rootView; + +@end + + +@interface RNGestureHandler : NSObject { + +@protected UIGestureRecognizer *_recognizer; +@protected RNGestureHandlerState _lastState; + +} + ++ (nullable RNGestureHandler *)findGestureHandlerByRecognizer:(nonnull UIGestureRecognizer *)recognizer; + +- (nonnull instancetype)initWithTag:(nonnull NSNumber *)tag; + +@property (nonatomic, readonly, nonnull) NSNumber *tag; +@property (nonatomic, weak, nullable) id emitter; +@property (nonatomic, readonly, nullable) UIGestureRecognizer *recognizer; +@property (nonatomic) BOOL enabled; +@property(nonatomic) BOOL shouldCancelWhenOutside; + +- (void)bindToView:(nonnull UIView *)view; +- (void)unbindFromView; +- (void)configure:(nullable NSDictionary *)config NS_REQUIRES_SUPER; +- (void)handleGesture:(nonnull id)recognizer; +- (BOOL)containsPointInView; +- (RNGestureHandlerState)state; +- (nullable RNGestureHandlerEventExtraData *)eventExtraData:(nonnull id)recognizer; + +- (void)reset; +- (void)sendEventsInState:(RNGestureHandlerState)state + forViewWithTag:(nonnull NSNumber *)reactTag + withExtraData:(RNGestureHandlerEventExtraData *)extraData; + +@end + diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNGestureHandlerButton.h b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNGestureHandlerButton.h new file mode 100644 index 0000000..bfbbf7b --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNGestureHandlerButton.h @@ -0,0 +1,18 @@ +// +// RNGestureHandlerButton.h +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNGestureHandler.h" + +@interface RNGestureHandlerButton : UIControl + +/** + * Insets used when hit testing inside this view. + */ +@property (nonatomic, assign) UIEdgeInsets hitTestEdgeInsets; + +@end diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNGestureHandlerDirection.h b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNGestureHandlerDirection.h new file mode 100644 index 0000000..84e4f18 --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNGestureHandlerDirection.h @@ -0,0 +1,8 @@ +#import + +typedef NS_ENUM(NSInteger, RNGestureHandlerDirection) { + RNGestureHandlerDirectionRight = 1, + RNGestureHandlerDirectionLeft = 2, + RNGestureHandlerDirectionUp = 4, + RNGestureHandlerDirectionDown = 8, +}; diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNGestureHandlerEvents.h b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNGestureHandlerEvents.h new file mode 100644 index 0000000..85f1620 --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNGestureHandlerEvents.h @@ -0,0 +1,56 @@ +#import + +#import +#import + +#import "RNGestureHandlerState.h" + +@interface RNGestureHandlerEventExtraData : NSObject + +@property (readonly) NSDictionary *data; + +- (instancetype)initWithData:(NSDictionary *)data; + ++ (RNGestureHandlerEventExtraData *)forPosition:(CGPoint)position + withAbsolutePosition:(CGPoint)absolutePosition + withNumberOfTouches:(NSUInteger)numberOfTouches; ++ (RNGestureHandlerEventExtraData *)forPan:(CGPoint)position + withAbsolutePosition:(CGPoint)absolutePosition + withTranslation:(CGPoint)translation + withVelocity:(CGPoint)velocity + withNumberOfTouches:(NSUInteger)numberOfTouches; ++ (RNGestureHandlerEventExtraData *)forForce:(CGFloat)force + forPosition:(CGPoint)position + withAbsolutePosition:(CGPoint)absolutePosition + withNumberOfTouches:(NSUInteger)numberOfTouches; ++ (RNGestureHandlerEventExtraData *)forPinch:(CGFloat)scale + withFocalPoint:(CGPoint)focalPoint + withVelocity:(CGFloat)velocity + withNumberOfTouches:(NSUInteger)numberOfTouches; ++ (RNGestureHandlerEventExtraData *)forRotation:(CGFloat)rotation + withAnchorPoint:(CGPoint)anchorPoint + withVelocity:(CGFloat)velocity + withNumberOfTouches:(NSUInteger)numberOfTouches; ++ (RNGestureHandlerEventExtraData *)forPointerInside:(BOOL)pointerInside; +@end + +@interface RNGestureHandlerEvent : NSObject + +- (instancetype)initWithReactTag:(NSNumber *)reactTag + handlerTag:(NSNumber *)handlerTag + state:(RNGestureHandlerState)state + extraData:(RNGestureHandlerEventExtraData*)extraData + coalescingKey:(uint16_t)coalescingKey NS_DESIGNATED_INITIALIZER; + +@end + + +@interface RNGestureHandlerStateChange : NSObject + +- (instancetype)initWithReactTag:(NSNumber *)reactTag + handlerTag:(NSNumber *)handlerTag + state:(RNGestureHandlerState)state + prevState:(RNGestureHandlerState)prevState + extraData:(RNGestureHandlerEventExtraData*)extraData NS_DESIGNATED_INITIALIZER; + +@end diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNGestureHandlerManager.h b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNGestureHandlerManager.h new file mode 100644 index 0000000..382d446 --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNGestureHandlerManager.h @@ -0,0 +1,29 @@ +#import + +#import + +@class RCTUIManager; +@class RCTEventDispatcher; + +@interface RNGestureHandlerManager : NSObject + +- (nonnull instancetype)initWithUIManager:(nonnull RCTUIManager *)uiManager + eventDispatcher:(nonnull RCTEventDispatcher *)eventDispatcher; + +- (void)createGestureHandler:(nonnull NSString *)handlerName + tag:(nonnull NSNumber *)handlerTag + config:(nonnull NSDictionary *)config; + +- (void)attachGestureHandler:(nonnull NSNumber *)handlerTag + toViewWithTag:(nonnull NSNumber *)viewTag; + +- (void)updateGestureHandler:(nonnull NSNumber *)handlerTag config:(nonnull NSDictionary *)config; + +- (void)dropGestureHandler:(nonnull NSNumber *)handlerTag; + +- (void)handleSetJSResponder:(nonnull NSNumber *)viewTag + blockNativeResponder:(nonnull NSNumber *)blockNativeResponder; + +- (void)handleClearJSResponder; + +@end diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNGestureHandlerModule.h b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNGestureHandlerModule.h new file mode 100644 index 0000000..b5b1cc9 --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNGestureHandlerModule.h @@ -0,0 +1,8 @@ +#import +#import +#import + +@interface RNGestureHandlerModule : RCTEventEmitter + +@end + diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNGestureHandlerRegistry.h b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNGestureHandlerRegistry.h new file mode 100644 index 0000000..d65ede2 --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNGestureHandlerRegistry.h @@ -0,0 +1,18 @@ +// +// RNGestureHandlerRegistry.h +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNGestureHandler.h" + +@interface RNGestureHandlerRegistry : NSObject + +- (nullable RNGestureHandler *)handlerWithTag:(nonnull NSNumber *)handlerTag; +- (void)registerGestureHandler:(nonnull RNGestureHandler *)gestureHandler; +- (void)attachHandlerWithTag:(nonnull NSNumber *)handlerTag toView:(nonnull UIView *)view; +- (void)dropHandlerWithTag:(nonnull NSNumber *)handlerTag; + +@end diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNGestureHandlerState.h b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNGestureHandlerState.h new file mode 100644 index 0000000..b550697 --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNGestureHandlerState.h @@ -0,0 +1,10 @@ +#import + +typedef NS_ENUM(NSInteger, RNGestureHandlerState) { + RNGestureHandlerStateUndetermined = 0, + RNGestureHandlerStateFailed, + RNGestureHandlerStateBegan, + RNGestureHandlerStateCancelled, + RNGestureHandlerStateActive, + RNGestureHandlerStateEnd, +}; diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNLongPressHandler.h b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNLongPressHandler.h new file mode 100644 index 0000000..db0ddce --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNLongPressHandler.h @@ -0,0 +1,12 @@ +// +// RNLongPressHandler.h +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNGestureHandler.h" + +@interface RNLongPressGestureHandler : RNGestureHandler +@end diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNNativeViewHandler.h b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNNativeViewHandler.h new file mode 100644 index 0000000..cd7996e --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNNativeViewHandler.h @@ -0,0 +1,15 @@ +// +// RNNativeViewHandler.h +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNGestureHandler.h" + +@interface RNDummyGestureRecognizer : UIGestureRecognizer +@end + +@interface RNNativeViewGestureHandler : RNGestureHandler +@end diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNPanHandler.h b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNPanHandler.h new file mode 100644 index 0000000..dae819a --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNPanHandler.h @@ -0,0 +1,12 @@ +// +// RNPanHandler.h +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNGestureHandler.h" + +@interface RNPanGestureHandler : RNGestureHandler +@end diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNPinchHandler.h b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNPinchHandler.h new file mode 100644 index 0000000..afca530 --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNPinchHandler.h @@ -0,0 +1,12 @@ +// +// RNPinchHandler.h +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNGestureHandler.h" + +@interface RNPinchGestureHandler : RNGestureHandler +@end diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNRootViewGestureRecognizer.h b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNRootViewGestureRecognizer.h new file mode 100644 index 0000000..a57dfc6 --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNRootViewGestureRecognizer.h @@ -0,0 +1,17 @@ +// +// RNRootViewGestureRecognizer.h +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNGestureHandler.h" + +@interface RNRootViewGestureRecognizer : UIGestureRecognizer + +@property (nullable, nonatomic, weak) id delegate; + +- (void)blockOtherRecognizers; + +@end diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNRotationHandler.h b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNRotationHandler.h new file mode 100644 index 0000000..ca8b0ef --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNRotationHandler.h @@ -0,0 +1,12 @@ +// +// RNRotationHandler.h +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNGestureHandler.h" + +@interface RNRotationGestureHandler : RNGestureHandler +@end diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNTapHandler.h b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNTapHandler.h new file mode 100644 index 0000000..53f53d1 --- /dev/null +++ b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/Headers/RNTapHandler.h @@ -0,0 +1,12 @@ +// +// RNTapHandler.h +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNGestureHandler.h" + +@interface RNTapGestureHandler : RNGestureHandler +@end diff --git a/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/libRNGestureHandler.a b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/libRNGestureHandler.a new file mode 100644 index 0000000..7209008 Binary files /dev/null and b/Frameworks/RNGestureHandler.xcframework/ios-arm64_x86_64-simulator/libRNGestureHandler.a differ diff --git a/Frameworks/RNOpenAppSettings.xcframework/Info.plist b/Frameworks/RNOpenAppSettings.xcframework/Info.plist new file mode 100644 index 0000000..3305c90 --- /dev/null +++ b/Frameworks/RNOpenAppSettings.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libRNOpenAppSettings.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libRNOpenAppSettings.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libRNOpenAppSettings.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libRNOpenAppSettings.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/RNOpenAppSettings.xcframework/ios-arm64/Headers/RNOpenAppSettings.h b/Frameworks/RNOpenAppSettings.xcframework/ios-arm64/Headers/RNOpenAppSettings.h new file mode 100644 index 0000000..de5f445 --- /dev/null +++ b/Frameworks/RNOpenAppSettings.xcframework/ios-arm64/Headers/RNOpenAppSettings.h @@ -0,0 +1,7 @@ +#import +#import + +@interface RNOpenAppSettings : NSObject + +@end + diff --git a/Frameworks/RNOpenAppSettings.xcframework/ios-arm64/libRNOpenAppSettings.a b/Frameworks/RNOpenAppSettings.xcframework/ios-arm64/libRNOpenAppSettings.a new file mode 100644 index 0000000..2d8d5d1 Binary files /dev/null and b/Frameworks/RNOpenAppSettings.xcframework/ios-arm64/libRNOpenAppSettings.a differ diff --git a/Frameworks/RNOpenAppSettings.xcframework/ios-arm64_x86_64-simulator/Headers/RNOpenAppSettings.h b/Frameworks/RNOpenAppSettings.xcframework/ios-arm64_x86_64-simulator/Headers/RNOpenAppSettings.h new file mode 100644 index 0000000..de5f445 --- /dev/null +++ b/Frameworks/RNOpenAppSettings.xcframework/ios-arm64_x86_64-simulator/Headers/RNOpenAppSettings.h @@ -0,0 +1,7 @@ +#import +#import + +@interface RNOpenAppSettings : NSObject + +@end + diff --git a/Frameworks/RNOpenAppSettings.xcframework/ios-arm64_x86_64-simulator/libRNOpenAppSettings.a b/Frameworks/RNOpenAppSettings.xcframework/ios-arm64_x86_64-simulator/libRNOpenAppSettings.a new file mode 100644 index 0000000..5f1c13a Binary files /dev/null and b/Frameworks/RNOpenAppSettings.xcframework/ios-arm64_x86_64-simulator/libRNOpenAppSettings.a differ diff --git a/Frameworks/RNReanimated.xcframework/Info.plist b/Frameworks/RNReanimated.xcframework/Info.plist new file mode 100644 index 0000000..a6ff874 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libRNReanimated.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libRNReanimated.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + libRNReanimated.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libRNReanimated.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/RCTConvert+REATransition.h b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/RCTConvert+REATransition.h new file mode 100644 index 0000000..17ebf0d --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/RCTConvert+REATransition.h @@ -0,0 +1,12 @@ +#import + +#import "REATransition.h" + +@interface RCTConvert (REATransition) + ++ (REATransitionType)REATransitionType:(id)json; ++ (REATransitionAnimationType)REATransitionAnimationType:(id)json; ++ (REATransitionInterpolationType)REATransitionInterpolationType:(id)json; ++ (REATransitionPropagationType)REATransitionPropagationType:(id)json; + +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAAllTransitions.h b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAAllTransitions.h new file mode 100644 index 0000000..8ab0480 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAAllTransitions.h @@ -0,0 +1,26 @@ +#import "REATransition.h" + +@interface REATransitionGroup : REATransition +@property (nonatomic) BOOL sequence; +@property (nonatomic) NSArray *transitions; +- (instancetype)initWithConfig:(NSDictionary *)config; +@end + +@interface REAVisibilityTransition : REATransition +@property (nonatomic) REATransitionAnimationType animationType; +- (REATransitionAnimation *)appearView:(UIView*)view inParent:(UIView*)parent; +- (REATransitionAnimation *)disappearView:(UIView*)view fromParent:(UIView*)parent; +- (instancetype)initWithConfig:(NSDictionary *)config; +@end + +@interface REAInTransition : REAVisibilityTransition +- (instancetype)initWithConfig:(NSDictionary *)config; +@end + +@interface REAOutTransition : REAVisibilityTransition +- (instancetype)initWithConfig:(NSDictionary *)config; +@end + +@interface REAChangeTransition : REATransition +- (instancetype)initWithConfig:(NSDictionary *)config; +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAAlwaysNode.h b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAAlwaysNode.h new file mode 100644 index 0000000..589251c --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAAlwaysNode.h @@ -0,0 +1,4 @@ +#import "REANode.h" + +@interface REAAlwaysNode : REANode +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REABezierNode.h b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REABezierNode.h new file mode 100644 index 0000000..0e0a953 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REABezierNode.h @@ -0,0 +1,5 @@ +#import "REANode.h" + +@interface REABezierNode : REANode + +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REABlockNode.h b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REABlockNode.h new file mode 100644 index 0000000..54f412c --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REABlockNode.h @@ -0,0 +1,5 @@ +#import "REANode.h" + +@interface REABlockNode : REANode + +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REACallFuncNode.h b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REACallFuncNode.h new file mode 100644 index 0000000..4502724 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REACallFuncNode.h @@ -0,0 +1,7 @@ + +#import "REANode.h" + +@interface REACallFuncNode : REANode + +@end + diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAClockNodes.h b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAClockNodes.h new file mode 100644 index 0000000..fc0fc08 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAClockNodes.h @@ -0,0 +1,19 @@ +#import "REANode.h" + +@interface REAClockNode : REANode +@property (nonatomic, readonly) BOOL isRunning; +- (void)start; +- (void)stop; +@end + +@interface REAClockOpNode : REANode +@end + +@interface REAClockStartNode : REAClockOpNode +@end + +@interface REAClockStopNode : REAClockOpNode +@end + +@interface REAClockTestNode : REAClockOpNode +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAConcatNode.h b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAConcatNode.h new file mode 100644 index 0000000..d275eec --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAConcatNode.h @@ -0,0 +1,6 @@ +#import "REANode.h" + +@interface REAConcatNode : REANode + +@end + diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REACondNode.h b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REACondNode.h new file mode 100644 index 0000000..3e4a173 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REACondNode.h @@ -0,0 +1,5 @@ +#import "REANode.h" + +@interface REACondNode : REANode + +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/READebugNode.h b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/READebugNode.h new file mode 100644 index 0000000..cd7cd3e --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/READebugNode.h @@ -0,0 +1,5 @@ +#import "REANode.h" + +@interface READebugNode : REANode + +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAEventNode.h b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAEventNode.h new file mode 100644 index 0000000..73027f1 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAEventNode.h @@ -0,0 +1,9 @@ +#import "REANode.h" + +#import + +@interface REAEventNode : REANode + +- (void)processEvent:(id)event; + +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAFunctionNode.h b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAFunctionNode.h new file mode 100644 index 0000000..4b6ef73 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAFunctionNode.h @@ -0,0 +1,7 @@ + +#import "REANode.h" + +@interface REAFunctionNode : REANode + +@end + diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAJSCallNode.h b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAJSCallNode.h new file mode 100644 index 0000000..f13a803 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAJSCallNode.h @@ -0,0 +1,5 @@ +#import "REANode.h" + +@interface REAJSCallNode : REANode + +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAModule.h b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAModule.h new file mode 100644 index 0000000..ed60267 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAModule.h @@ -0,0 +1,12 @@ +#import +#import +#import +#import +#import +#import + +#import "REAValueNode.h" + +@interface REAModule : RCTEventEmitter + +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REANode.h b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REANode.h new file mode 100644 index 0000000..0874400 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REANode.h @@ -0,0 +1,39 @@ +#import +#import + +@class REANodesManager; + +typedef NSNumber* REANodeID; + +@protocol REAFinalNode + +- (void)update; + +@end + +@interface REAUpdateContext : NSObject +@property (nonatomic) NSString* callID; +@end + +@interface REANode : NSObject + ++ (void)runPropUpdates:(nonnull REAUpdateContext *)context; + +- (instancetype)initWithID:(REANodeID)nodeID + config:(NSDictionary *)config NS_DESIGNATED_INITIALIZER; + +@property (nonatomic, weak, nullable) REANodesManager *nodesManager; +@property (nonatomic, nullable) REAUpdateContext *updateContext; +@property (nonatomic, readonly, nonnull) REANodeID nodeID; + +- (_Nullable id)evaluate; +- (_Nullable id)value; +- (void)markUpdated; + +- (void)addChild:(REANode *)child NS_REQUIRES_SUPER; +- (void)removeChild:(REANode *)child NS_REQUIRES_SUPER; + +- (void)dangerouslyRescheduleEvaluate; +- (void)forceUpdateMemoizedValue:(id)value; + +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REANodesManager.h b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REANodesManager.h new file mode 100644 index 0000000..9597166 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REANodesManager.h @@ -0,0 +1,79 @@ +#import + +#import "REANode.h" +#import +#import + +@class REAModule; + +typedef void (^REAOnAnimationCallback)(CADisplayLink *displayLink); +typedef void (^REANativeAnimationOp)(RCTUIManager *uiManager); + +@interface REANodesManager : NSObject + +@property (nonatomic, weak, nullable) RCTUIManager *uiManager; +@property (nonatomic, weak, nullable) REAModule *reanimatedModule; +@property (nonatomic, readonly) CFTimeInterval currentAnimationTimestamp; + +@property (nonatomic, nullable) NSSet *uiProps; +@property (nonatomic, nullable) NSSet *nativeProps; + +- (nonnull instancetype)initWithModule:(REAModule *)reanimatedModule + uiManager:(nonnull RCTUIManager *)uiManager; + +- (REANode* _Nullable)findNodeByID:(nonnull REANodeID)nodeID; + +- (void)invalidate; + +- (void)operationsBatchDidComplete; + +// + +- (void)postOnAnimation:(REAOnAnimationCallback)clb; +- (void)postRunUpdatesAfterAnimation; +- (void)enqueueUpdateViewOnNativeThread:(nonnull NSNumber *)reactTag + viewName:(NSString *) viewName + nativeProps:(NSMutableDictionary *)nativeProps; +- (void)getValue:(REANodeID)nodeID + callback:(RCTResponseSenderBlock)callback; + +// graph + +- (void)createNode:(nonnull REANodeID)tag + config:(NSDictionary *__nonnull)config; + +- (void)dropNode:(nonnull REANodeID)tag; + +- (void)connectNodes:(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)attachEvent:(nonnull NSNumber *)viewTag + eventName:(nonnull NSString *)eventName + eventNodeID:(nonnull REANodeID)eventNodeID; + +- (void)detachEvent:(nonnull NSNumber *)viewTag + eventName:(nonnull NSString *)eventName + eventNodeID:(nonnull REANodeID)eventNodeID; + +// configuration + +- (void)configureProps:(nonnull NSSet *)nativeProps + uiProps:(nonnull NSSet *)uiProps; + +// events + +- (void)dispatchEvent:(id)event; + +- (void)setValueForNodeID:(nonnull NSNumber *)nodeID value:(nonnull NSNumber *)newValue; + +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAOperatorNode.h b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAOperatorNode.h new file mode 100644 index 0000000..50c1689 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAOperatorNode.h @@ -0,0 +1,5 @@ +#import "REANode.h" + +@interface REAOperatorNode : REANode + +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAParamNode.h b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAParamNode.h new file mode 100644 index 0000000..b5e97e8 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAParamNode.h @@ -0,0 +1,12 @@ +#import "REAValueNode.h" + +@interface REAParamNode : REAValueNode + +- (void)beginContext:(NSNumber*) ref + prevCallID:(NSNumber*) prevCallID; +- (void)endContext; +- (void)start; +- (void)stop; +- (BOOL)isRunning; +@end + diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAPropsNode.h b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAPropsNode.h new file mode 100644 index 0000000..05171f1 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAPropsNode.h @@ -0,0 +1,11 @@ +#import "REANode.h" + +@interface REAPropsNode : REANode + +- (void)connectToView:(NSNumber *_Nonnull)viewTag + viewName:(NSString *_Nonnull)viewName; + +- (void)disconnectFromView:(NSNumber *_Nonnull)viewTag; + +@end + diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REASetNode.h b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REASetNode.h new file mode 100644 index 0000000..5bc6a38 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REASetNode.h @@ -0,0 +1,6 @@ +#import "REANode.h" + +@interface REASetNode : REANode + +@end + diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAStyleNode.h b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAStyleNode.h new file mode 100644 index 0000000..58bc7ba --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAStyleNode.h @@ -0,0 +1,6 @@ +#import "REANode.h" + +@interface REAStyleNode : REANode + +@end + diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REATransformNode.h b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REATransformNode.h new file mode 100644 index 0000000..51ae259 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REATransformNode.h @@ -0,0 +1,6 @@ +#import "REANode.h" + +@interface REATransformNode : REANode + +@end + diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REATransition.h b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REATransition.h new file mode 100644 index 0000000..6d4d1f0 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REATransition.h @@ -0,0 +1,64 @@ +#import +#import +#import + +#import "REATransitionAnimation.h" +#import "REATransitionValues.h" + +// TODO: fix below implementation +#define IS_LAYOUT_ONLY(view) ([view isKindOfClass:[RCTView class]] && view.backgroundColor == nil) + +typedef NS_ENUM(NSInteger, REATransitionType) { + REATransitionTypeNone = 0, + REATransitionTypeGroup, + REATransitionTypeIn, + REATransitionTypeOut, + REATransitionTypeChange +}; + +typedef NS_ENUM(NSInteger, REATransitionAnimationType) { + REATransitionAnimationTypeNone = 0, + REATransitionAnimationTypeFade, + REATransitionAnimationTypeScale, + REATransitionAnimationTypeSlideTop, + REATransitionAnimationTypeSlideBottom, + REATransitionAnimationTypeSlideRight, + REATransitionAnimationTypeSlideLeft, +}; + +typedef NS_ENUM(NSInteger, REATransitionInterpolationType) { + REATransitionInterpolationLinear = 0, + REATransitionInterpolationEaseIn, + REATransitionInterpolationEaseOut, + REATransitionInterpolationEaseInOut, +}; + +typedef NS_ENUM(NSInteger, REATransitionPropagationType) { + REATransitionPropagationNone = 0, + REATransitionPropagationTop, + REATransitionPropagationBottom, + REATransitionPropagationLeft, + REATransitionPropagationRight, +}; + +@interface REATransition : NSObject +@property (nonatomic, weak) REATransition *parent; +@property (nonatomic) CFTimeInterval duration; +@property (nonatomic) CFTimeInterval delay; +@property (nonatomic) REATransitionInterpolationType interpolation; +@property (nonatomic) REATransitionPropagationType propagation; +- (instancetype)initWithConfig:(NSDictionary *)config; +- (CAMediaTimingFunction *)mediaTiming; +- (void)startCaptureInRoot:(UIView *)root; +- (void)playInRoot:(UIView *)root; +- (REATransitionValues *)findStartValuesForKey:(NSNumber *)key; +- (REATransitionValues *)findEndValuesForKey:(NSNumber *)key; +- (REATransitionAnimation *)animationForTransitioning:(REATransitionValues*)startValues + endValues:(REATransitionValues*)endValues + forRoot:(UIView *)root; +- (NSArray *)animationsForTransitioning:(NSMutableDictionary *)startValues + endValues:(NSMutableDictionary *)endValues + forRoot:(UIView *)root; + ++ (REATransition *)inflate:(NSDictionary *)config; +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REATransitionAnimation.h b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REATransitionAnimation.h new file mode 100644 index 0000000..b9efb93 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REATransitionAnimation.h @@ -0,0 +1,17 @@ +#import + +@interface REATransitionAnimation : NSObject + +@property (nonatomic) CAAnimation *animation; +@property (nonatomic) CALayer *layer; +@property (nonatomic) NSString *keyPath; + ++ (REATransitionAnimation *)transitionWithAnimation:(CAAnimation *)animation + layer:(CALayer *)layer + andKeyPath:(NSString*)keyPath; +- (void)play; +- (void)delayBy:(CFTimeInterval)delay; +- (CFTimeInterval)finishTime; +- (CFTimeInterval)duration; + +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REATransitionManager.h b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REATransitionManager.h new file mode 100644 index 0000000..d3a3844 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REATransitionManager.h @@ -0,0 +1,9 @@ +#import +#import + +@interface REATransitionManager : NSObject + +- (instancetype)initWithUIManager:(RCTUIManager *)uiManager; +- (void)animateNextTransitionInRoot:(nonnull NSNumber *)reactTag withConfig:(NSDictionary *)config; + +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REATransitionValues.h b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REATransitionValues.h new file mode 100644 index 0000000..a1f739d --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REATransitionValues.h @@ -0,0 +1,15 @@ +#import + +@interface REATransitionValues : NSObject + +@property (nonatomic) CGPoint center; +@property (nonatomic) CGRect bounds; +@property (nonatomic) CGPoint centerRelativeToRoot; +@property (nonatomic, retain) UIView *view; +@property (nonatomic, retain) UIView *parent; +@property (nonatomic, retain) UIView *reactParent; +@property (nonatomic) CGPoint centerInReactParent; + +- (instancetype)initWithView:(UIView *)view forRoot:(UIView *)root; + +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAUtils.h b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAUtils.h new file mode 100644 index 0000000..1eb8ad7 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAUtils.h @@ -0,0 +1,5 @@ +#import + +#define REA_LOG_ERROR_IF_NIL(value, errorMsg) ({\ + if (value == nil) RCTLogError(errorMsg);\ +}) diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAValueNode.h b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAValueNode.h new file mode 100644 index 0000000..8de5023 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64/Headers/REAValueNode.h @@ -0,0 +1,11 @@ +#import + +#import "REANode.h" + +@class REAValueNode; + +@interface REAValueNode : REANode + +- (void)setValue:(NSNumber *)value; + +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64/libRNReanimated.a b/Frameworks/RNReanimated.xcframework/ios-arm64/libRNReanimated.a new file mode 100644 index 0000000..fd3dd0b Binary files /dev/null and b/Frameworks/RNReanimated.xcframework/ios-arm64/libRNReanimated.a differ diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/RCTConvert+REATransition.h b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/RCTConvert+REATransition.h new file mode 100644 index 0000000..17ebf0d --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/RCTConvert+REATransition.h @@ -0,0 +1,12 @@ +#import + +#import "REATransition.h" + +@interface RCTConvert (REATransition) + ++ (REATransitionType)REATransitionType:(id)json; ++ (REATransitionAnimationType)REATransitionAnimationType:(id)json; ++ (REATransitionInterpolationType)REATransitionInterpolationType:(id)json; ++ (REATransitionPropagationType)REATransitionPropagationType:(id)json; + +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAAllTransitions.h b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAAllTransitions.h new file mode 100644 index 0000000..8ab0480 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAAllTransitions.h @@ -0,0 +1,26 @@ +#import "REATransition.h" + +@interface REATransitionGroup : REATransition +@property (nonatomic) BOOL sequence; +@property (nonatomic) NSArray *transitions; +- (instancetype)initWithConfig:(NSDictionary *)config; +@end + +@interface REAVisibilityTransition : REATransition +@property (nonatomic) REATransitionAnimationType animationType; +- (REATransitionAnimation *)appearView:(UIView*)view inParent:(UIView*)parent; +- (REATransitionAnimation *)disappearView:(UIView*)view fromParent:(UIView*)parent; +- (instancetype)initWithConfig:(NSDictionary *)config; +@end + +@interface REAInTransition : REAVisibilityTransition +- (instancetype)initWithConfig:(NSDictionary *)config; +@end + +@interface REAOutTransition : REAVisibilityTransition +- (instancetype)initWithConfig:(NSDictionary *)config; +@end + +@interface REAChangeTransition : REATransition +- (instancetype)initWithConfig:(NSDictionary *)config; +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAAlwaysNode.h b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAAlwaysNode.h new file mode 100644 index 0000000..589251c --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAAlwaysNode.h @@ -0,0 +1,4 @@ +#import "REANode.h" + +@interface REAAlwaysNode : REANode +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REABezierNode.h b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REABezierNode.h new file mode 100644 index 0000000..0e0a953 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REABezierNode.h @@ -0,0 +1,5 @@ +#import "REANode.h" + +@interface REABezierNode : REANode + +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REABlockNode.h b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REABlockNode.h new file mode 100644 index 0000000..54f412c --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REABlockNode.h @@ -0,0 +1,5 @@ +#import "REANode.h" + +@interface REABlockNode : REANode + +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REACallFuncNode.h b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REACallFuncNode.h new file mode 100644 index 0000000..4502724 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REACallFuncNode.h @@ -0,0 +1,7 @@ + +#import "REANode.h" + +@interface REACallFuncNode : REANode + +@end + diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAClockNodes.h b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAClockNodes.h new file mode 100644 index 0000000..fc0fc08 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAClockNodes.h @@ -0,0 +1,19 @@ +#import "REANode.h" + +@interface REAClockNode : REANode +@property (nonatomic, readonly) BOOL isRunning; +- (void)start; +- (void)stop; +@end + +@interface REAClockOpNode : REANode +@end + +@interface REAClockStartNode : REAClockOpNode +@end + +@interface REAClockStopNode : REAClockOpNode +@end + +@interface REAClockTestNode : REAClockOpNode +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAConcatNode.h b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAConcatNode.h new file mode 100644 index 0000000..d275eec --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAConcatNode.h @@ -0,0 +1,6 @@ +#import "REANode.h" + +@interface REAConcatNode : REANode + +@end + diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REACondNode.h b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REACondNode.h new file mode 100644 index 0000000..3e4a173 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REACondNode.h @@ -0,0 +1,5 @@ +#import "REANode.h" + +@interface REACondNode : REANode + +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/READebugNode.h b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/READebugNode.h new file mode 100644 index 0000000..cd7cd3e --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/READebugNode.h @@ -0,0 +1,5 @@ +#import "REANode.h" + +@interface READebugNode : REANode + +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAEventNode.h b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAEventNode.h new file mode 100644 index 0000000..73027f1 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAEventNode.h @@ -0,0 +1,9 @@ +#import "REANode.h" + +#import + +@interface REAEventNode : REANode + +- (void)processEvent:(id)event; + +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAFunctionNode.h b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAFunctionNode.h new file mode 100644 index 0000000..4b6ef73 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAFunctionNode.h @@ -0,0 +1,7 @@ + +#import "REANode.h" + +@interface REAFunctionNode : REANode + +@end + diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAJSCallNode.h b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAJSCallNode.h new file mode 100644 index 0000000..f13a803 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAJSCallNode.h @@ -0,0 +1,5 @@ +#import "REANode.h" + +@interface REAJSCallNode : REANode + +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAModule.h b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAModule.h new file mode 100644 index 0000000..ed60267 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAModule.h @@ -0,0 +1,12 @@ +#import +#import +#import +#import +#import +#import + +#import "REAValueNode.h" + +@interface REAModule : RCTEventEmitter + +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REANode.h b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REANode.h new file mode 100644 index 0000000..0874400 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REANode.h @@ -0,0 +1,39 @@ +#import +#import + +@class REANodesManager; + +typedef NSNumber* REANodeID; + +@protocol REAFinalNode + +- (void)update; + +@end + +@interface REAUpdateContext : NSObject +@property (nonatomic) NSString* callID; +@end + +@interface REANode : NSObject + ++ (void)runPropUpdates:(nonnull REAUpdateContext *)context; + +- (instancetype)initWithID:(REANodeID)nodeID + config:(NSDictionary *)config NS_DESIGNATED_INITIALIZER; + +@property (nonatomic, weak, nullable) REANodesManager *nodesManager; +@property (nonatomic, nullable) REAUpdateContext *updateContext; +@property (nonatomic, readonly, nonnull) REANodeID nodeID; + +- (_Nullable id)evaluate; +- (_Nullable id)value; +- (void)markUpdated; + +- (void)addChild:(REANode *)child NS_REQUIRES_SUPER; +- (void)removeChild:(REANode *)child NS_REQUIRES_SUPER; + +- (void)dangerouslyRescheduleEvaluate; +- (void)forceUpdateMemoizedValue:(id)value; + +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REANodesManager.h b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REANodesManager.h new file mode 100644 index 0000000..9597166 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REANodesManager.h @@ -0,0 +1,79 @@ +#import + +#import "REANode.h" +#import +#import + +@class REAModule; + +typedef void (^REAOnAnimationCallback)(CADisplayLink *displayLink); +typedef void (^REANativeAnimationOp)(RCTUIManager *uiManager); + +@interface REANodesManager : NSObject + +@property (nonatomic, weak, nullable) RCTUIManager *uiManager; +@property (nonatomic, weak, nullable) REAModule *reanimatedModule; +@property (nonatomic, readonly) CFTimeInterval currentAnimationTimestamp; + +@property (nonatomic, nullable) NSSet *uiProps; +@property (nonatomic, nullable) NSSet *nativeProps; + +- (nonnull instancetype)initWithModule:(REAModule *)reanimatedModule + uiManager:(nonnull RCTUIManager *)uiManager; + +- (REANode* _Nullable)findNodeByID:(nonnull REANodeID)nodeID; + +- (void)invalidate; + +- (void)operationsBatchDidComplete; + +// + +- (void)postOnAnimation:(REAOnAnimationCallback)clb; +- (void)postRunUpdatesAfterAnimation; +- (void)enqueueUpdateViewOnNativeThread:(nonnull NSNumber *)reactTag + viewName:(NSString *) viewName + nativeProps:(NSMutableDictionary *)nativeProps; +- (void)getValue:(REANodeID)nodeID + callback:(RCTResponseSenderBlock)callback; + +// graph + +- (void)createNode:(nonnull REANodeID)tag + config:(NSDictionary *__nonnull)config; + +- (void)dropNode:(nonnull REANodeID)tag; + +- (void)connectNodes:(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)attachEvent:(nonnull NSNumber *)viewTag + eventName:(nonnull NSString *)eventName + eventNodeID:(nonnull REANodeID)eventNodeID; + +- (void)detachEvent:(nonnull NSNumber *)viewTag + eventName:(nonnull NSString *)eventName + eventNodeID:(nonnull REANodeID)eventNodeID; + +// configuration + +- (void)configureProps:(nonnull NSSet *)nativeProps + uiProps:(nonnull NSSet *)uiProps; + +// events + +- (void)dispatchEvent:(id)event; + +- (void)setValueForNodeID:(nonnull NSNumber *)nodeID value:(nonnull NSNumber *)newValue; + +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAOperatorNode.h b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAOperatorNode.h new file mode 100644 index 0000000..50c1689 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAOperatorNode.h @@ -0,0 +1,5 @@ +#import "REANode.h" + +@interface REAOperatorNode : REANode + +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAParamNode.h b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAParamNode.h new file mode 100644 index 0000000..b5e97e8 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAParamNode.h @@ -0,0 +1,12 @@ +#import "REAValueNode.h" + +@interface REAParamNode : REAValueNode + +- (void)beginContext:(NSNumber*) ref + prevCallID:(NSNumber*) prevCallID; +- (void)endContext; +- (void)start; +- (void)stop; +- (BOOL)isRunning; +@end + diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAPropsNode.h b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAPropsNode.h new file mode 100644 index 0000000..05171f1 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAPropsNode.h @@ -0,0 +1,11 @@ +#import "REANode.h" + +@interface REAPropsNode : REANode + +- (void)connectToView:(NSNumber *_Nonnull)viewTag + viewName:(NSString *_Nonnull)viewName; + +- (void)disconnectFromView:(NSNumber *_Nonnull)viewTag; + +@end + diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REASetNode.h b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REASetNode.h new file mode 100644 index 0000000..5bc6a38 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REASetNode.h @@ -0,0 +1,6 @@ +#import "REANode.h" + +@interface REASetNode : REANode + +@end + diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAStyleNode.h b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAStyleNode.h new file mode 100644 index 0000000..58bc7ba --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAStyleNode.h @@ -0,0 +1,6 @@ +#import "REANode.h" + +@interface REAStyleNode : REANode + +@end + diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REATransformNode.h b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REATransformNode.h new file mode 100644 index 0000000..51ae259 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REATransformNode.h @@ -0,0 +1,6 @@ +#import "REANode.h" + +@interface REATransformNode : REANode + +@end + diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REATransition.h b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REATransition.h new file mode 100644 index 0000000..6d4d1f0 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REATransition.h @@ -0,0 +1,64 @@ +#import +#import +#import + +#import "REATransitionAnimation.h" +#import "REATransitionValues.h" + +// TODO: fix below implementation +#define IS_LAYOUT_ONLY(view) ([view isKindOfClass:[RCTView class]] && view.backgroundColor == nil) + +typedef NS_ENUM(NSInteger, REATransitionType) { + REATransitionTypeNone = 0, + REATransitionTypeGroup, + REATransitionTypeIn, + REATransitionTypeOut, + REATransitionTypeChange +}; + +typedef NS_ENUM(NSInteger, REATransitionAnimationType) { + REATransitionAnimationTypeNone = 0, + REATransitionAnimationTypeFade, + REATransitionAnimationTypeScale, + REATransitionAnimationTypeSlideTop, + REATransitionAnimationTypeSlideBottom, + REATransitionAnimationTypeSlideRight, + REATransitionAnimationTypeSlideLeft, +}; + +typedef NS_ENUM(NSInteger, REATransitionInterpolationType) { + REATransitionInterpolationLinear = 0, + REATransitionInterpolationEaseIn, + REATransitionInterpolationEaseOut, + REATransitionInterpolationEaseInOut, +}; + +typedef NS_ENUM(NSInteger, REATransitionPropagationType) { + REATransitionPropagationNone = 0, + REATransitionPropagationTop, + REATransitionPropagationBottom, + REATransitionPropagationLeft, + REATransitionPropagationRight, +}; + +@interface REATransition : NSObject +@property (nonatomic, weak) REATransition *parent; +@property (nonatomic) CFTimeInterval duration; +@property (nonatomic) CFTimeInterval delay; +@property (nonatomic) REATransitionInterpolationType interpolation; +@property (nonatomic) REATransitionPropagationType propagation; +- (instancetype)initWithConfig:(NSDictionary *)config; +- (CAMediaTimingFunction *)mediaTiming; +- (void)startCaptureInRoot:(UIView *)root; +- (void)playInRoot:(UIView *)root; +- (REATransitionValues *)findStartValuesForKey:(NSNumber *)key; +- (REATransitionValues *)findEndValuesForKey:(NSNumber *)key; +- (REATransitionAnimation *)animationForTransitioning:(REATransitionValues*)startValues + endValues:(REATransitionValues*)endValues + forRoot:(UIView *)root; +- (NSArray *)animationsForTransitioning:(NSMutableDictionary *)startValues + endValues:(NSMutableDictionary *)endValues + forRoot:(UIView *)root; + ++ (REATransition *)inflate:(NSDictionary *)config; +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REATransitionAnimation.h b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REATransitionAnimation.h new file mode 100644 index 0000000..b9efb93 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REATransitionAnimation.h @@ -0,0 +1,17 @@ +#import + +@interface REATransitionAnimation : NSObject + +@property (nonatomic) CAAnimation *animation; +@property (nonatomic) CALayer *layer; +@property (nonatomic) NSString *keyPath; + ++ (REATransitionAnimation *)transitionWithAnimation:(CAAnimation *)animation + layer:(CALayer *)layer + andKeyPath:(NSString*)keyPath; +- (void)play; +- (void)delayBy:(CFTimeInterval)delay; +- (CFTimeInterval)finishTime; +- (CFTimeInterval)duration; + +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REATransitionManager.h b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REATransitionManager.h new file mode 100644 index 0000000..d3a3844 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REATransitionManager.h @@ -0,0 +1,9 @@ +#import +#import + +@interface REATransitionManager : NSObject + +- (instancetype)initWithUIManager:(RCTUIManager *)uiManager; +- (void)animateNextTransitionInRoot:(nonnull NSNumber *)reactTag withConfig:(NSDictionary *)config; + +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REATransitionValues.h b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REATransitionValues.h new file mode 100644 index 0000000..a1f739d --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REATransitionValues.h @@ -0,0 +1,15 @@ +#import + +@interface REATransitionValues : NSObject + +@property (nonatomic) CGPoint center; +@property (nonatomic) CGRect bounds; +@property (nonatomic) CGPoint centerRelativeToRoot; +@property (nonatomic, retain) UIView *view; +@property (nonatomic, retain) UIView *parent; +@property (nonatomic, retain) UIView *reactParent; +@property (nonatomic) CGPoint centerInReactParent; + +- (instancetype)initWithView:(UIView *)view forRoot:(UIView *)root; + +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAUtils.h b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAUtils.h new file mode 100644 index 0000000..1eb8ad7 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAUtils.h @@ -0,0 +1,5 @@ +#import + +#define REA_LOG_ERROR_IF_NIL(value, errorMsg) ({\ + if (value == nil) RCTLogError(errorMsg);\ +}) diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAValueNode.h b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAValueNode.h new file mode 100644 index 0000000..8de5023 --- /dev/null +++ b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/Headers/REAValueNode.h @@ -0,0 +1,11 @@ +#import + +#import "REANode.h" + +@class REAValueNode; + +@interface REAValueNode : REANode + +- (void)setValue:(NSNumber *)value; + +@end diff --git a/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/libRNReanimated.a b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/libRNReanimated.a new file mode 100644 index 0000000..0947390 Binary files /dev/null and b/Frameworks/RNReanimated.xcframework/ios-arm64_x86_64-simulator/libRNReanimated.a differ diff --git a/Frameworks/RNSVG.xcframework/Info.plist b/Frameworks/RNSVG.xcframework/Info.plist new file mode 100644 index 0000000..651a8a6 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libRNSVG.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libRNSVG.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libRNSVG.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libRNSVG.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RCTConvert+RNSVG.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RCTConvert+RNSVG.h new file mode 100644 index 0000000..4388e0c --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RCTConvert+RNSVG.h @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import +#import +#import "RCTConvert+RNSVG.h" +#import +#import "RNSVGCGFCRule.h" +#import "RNSVGVBMOS.h" +#import "RNSVGUnits.h" +#import "RNSVGLength.h" +#import "RNSVGPathParser.h" + +@class RNSVGBrush; + +@interface RCTConvert (RNSVG) + ++ (RNSVGLength*)RNSVGLength:(id)json; ++ (NSArray*)RNSVGLengthArray:(id)json; ++ (RNSVGCGFCRule)RNSVGCGFCRule:(id)json; ++ (RNSVGVBMOS)RNSVGVBMOS:(id)json; ++ (RNSVGUnits)RNSVGUnits:(id)json; ++ (RNSVGBrush *)RNSVGBrush:(id)json; ++ (RNSVGPathParser *)RNSVGCGPath:(NSString *)d; ++ (CGRect)RNSVGCGRect:(id)json offset:(NSUInteger)offset; ++ (CGColorRef)RNSVGCGColor:(id)json offset:(NSUInteger)offset; ++ (CGGradientRef)RNSVGCGGradient:(id)json; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGBezierElement.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGBezierElement.h new file mode 100644 index 0000000..eefbbf1 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGBezierElement.h @@ -0,0 +1,25 @@ +/* + + Erica Sadun, http://ericasadun.com + https://github.com/erica/iOS-Drawing/tree/master/C08/Quartz%20Book%20Pack/Bezier + */ + +#import +#import + +#define RNSVGNULLPOINT CGRectNull.origin + +@interface RNSVGBezierElement : NSObject + +// Element storage +@property (nonatomic, assign) CGPathElementType elementType; +@property (nonatomic, assign) CGPoint point; +@property (nonatomic, assign) CGPoint controlPoint1; +@property (nonatomic, assign) CGPoint controlPoint2; + +// Instance creation ++ (instancetype) elementWithPathElement: (CGPathElement) element; ++ (NSArray *) elementsFromCGPath:(CGPathRef)path; + +@end + diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGBrush.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGBrush.h new file mode 100644 index 0000000..edf3fc4 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGBrush.h @@ -0,0 +1,41 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import +#import +#import "RNSVGPainter.h" + +@interface RNSVGBrush : NSObject + +@property (nonatomic, strong) NSString* brushRef; + +/* @abstract */ +- (instancetype)initWithArray:(NSArray *)data; + +/** + * @abstract + * For certain brushes we can fast path a combined fill and stroke. + * For those brushes we override applyFillColor which sets the fill + * color to be used by those batch paints. Those return YES. + * We can't batch gradient painting in CoreGraphics, so those will + * return NO and paint gets called instead. + */ +- (BOOL)applyFillColor:(CGContextRef)context opacity:(CGFloat)opacity; + +- (BOOL)applyStrokeColor:(CGContextRef)context opacity:(CGFloat)opacity; + +- (CGColorRef)getColorWithOpacity:(CGFloat)opacity; + +/** + * @abstract + * paint fills the context with a brush. The context is assumed to + * be clipped. + */ +- (void)paint:(CGContextRef)context opacity:(CGFloat)opacity painter:(RNSVGPainter *)painter bounds:(CGRect)bounds; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGBrushType.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGBrushType.h new file mode 100644 index 0000000..3cc4a30 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGBrushType.h @@ -0,0 +1,14 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +typedef enum { + kRNSVGUndefinedType, + kRNSVGLinearGradient, + kRNSVGRadialGradient, + kRNSVGPattern +} RNSVGBrushType; diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGCGFCRule.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGCGFCRule.h new file mode 100644 index 0000000..160b0ef --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGCGFCRule.h @@ -0,0 +1,12 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +typedef CF_ENUM(int32_t, RNSVGCGFCRule) { + kRNSVGCGFCRuleEvenodd, + kRNSVGCGFCRuleNonzero +}; \ No newline at end of file diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGCircle.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGCircle.h new file mode 100644 index 0000000..f4e411a --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGCircle.h @@ -0,0 +1,20 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +#import "RNSVGPath.h" + +@interface RNSVGCircle : RNSVGRenderable + +@property (nonatomic, strong) RNSVGLength* cx; +@property (nonatomic, strong) RNSVGLength* cy; +@property (nonatomic, strong) RNSVGLength* r; + +@end + diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGCircleManager.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGCircleManager.h new file mode 100644 index 0000000..30b6c1c --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGCircleManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGRenderableManager.h" + +@interface RNSVGCircleManager : RNSVGRenderableManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGClipPath.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGClipPath.h new file mode 100644 index 0000000..27697e2 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGClipPath.h @@ -0,0 +1,19 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +#import "RNSVGContainer.h" +#import "RNSVGGroup.h" +#import "RNSVGSvgView.h" + +@interface RNSVGClipPath : RNSVGGroup + +- (BOOL)isSimpleClipPath; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGClipPathManager.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGClipPathManager.h new file mode 100644 index 0000000..111c7e4 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGClipPathManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGNodeManager.h" + +@interface RNSVGClipPathManager : RNSVGNodeManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGContainer.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGContainer.h new file mode 100644 index 0000000..4d16332 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGContainer.h @@ -0,0 +1,17 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +@protocol RNSVGContainer + +// This is used as a hook for child to mark it's parent as dirty. +// This bubbles up to the root which gets marked as dirty. +- (void)invalidate; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGContextBrush.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGContextBrush.h new file mode 100644 index 0000000..269f46c --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGContextBrush.h @@ -0,0 +1,16 @@ +/** + * Copyright (c) 2015-present, react-native-community. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGBrush.h" + +@interface RNSVGContextBrush : RNSVGBrush + +- (instancetype)initFill; +- (instancetype)initStroke; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGDefs.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGDefs.h new file mode 100644 index 0000000..9e58b40 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGDefs.h @@ -0,0 +1,17 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGNode.h" + +/** + * RNSVG defination are implemented as abstract UIViews for all elements inside Defs. + */ + +@interface RNSVGDefs : RNSVGNode + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGDefsManager.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGDefsManager.h new file mode 100644 index 0000000..591ba68 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGDefsManager.h @@ -0,0 +1,15 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +@interface RNSVGDefsManager : RCTViewManager + +@end + +#import "RNSVGNode.h" diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGEllipse.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGEllipse.h new file mode 100644 index 0000000..8ca56cc --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGEllipse.h @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +#import "RNSVGPath.h" + +@interface RNSVGEllipse : RNSVGRenderable +@property (nonatomic, strong) RNSVGLength* cx; +@property (nonatomic, strong) RNSVGLength* cy; +@property (nonatomic, strong) RNSVGLength* rx; +@property (nonatomic, strong) RNSVGLength* ry; +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGEllipseManager.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGEllipseManager.h new file mode 100644 index 0000000..3f6c001 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGEllipseManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGRenderableManager.h" + +@interface RNSVGEllipseManager : RNSVGRenderableManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGFontData.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGFontData.h new file mode 100644 index 0000000..a988ca4 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGFontData.h @@ -0,0 +1,36 @@ +#import +#import + +#import "RNSVGTextProperties.h" +#import "RNSVGPropHelper.h" + +@interface RNSVGFontData : NSObject { +@public + CGFloat fontSize; + NSString * fontSize_; + NSString *fontFamily; + enum RNSVGFontStyle fontStyle; + NSDictionary * fontData; + enum RNSVGFontWeight fontWeight; + int absoluteFontWeight; + NSString *fontFeatureSettings; + enum RNSVGFontVariantLigatures fontVariantLigatures; + enum RNSVGTextAnchor textAnchor; + enum RNSVGTextDecoration textDecoration; + CGFloat kerning; + CGFloat wordSpacing; + CGFloat letterSpacing; + bool manualKerning; +} + ++ (instancetype)Defaults; + ++ (CGFloat)toAbsoluteWithNSString:(NSString *)string + fontSize:(CGFloat)fontSize; + ++ (instancetype)initWithNSDictionary:(NSDictionary *)font + parent:(RNSVGFontData *)parent; + +@end + +#define RNSVGFontData_DEFAULT_FONT_SIZE 12.0 diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGForeignObject.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGForeignObject.h new file mode 100644 index 0000000..346b204 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGForeignObject.h @@ -0,0 +1,12 @@ + +#import "RNSVGGroup.h" +#import "RNSVGLength.h" + +@interface RNSVGForeignObject : RNSVGGroup + +@property (nonatomic, strong) RNSVGLength *x; +@property (nonatomic, strong) RNSVGLength *y; +@property (nonatomic, strong) RNSVGLength *foreignObjectwidth; +@property (nonatomic, strong) RNSVGLength *foreignObjectheight; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGForeignObjectManager.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGForeignObjectManager.h new file mode 100644 index 0000000..845a6db --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGForeignObjectManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGGroupManager.h" + +@interface RNSVGForeignObjectManager : RNSVGGroupManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGGlyphContext.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGGlyphContext.h new file mode 100644 index 0000000..de49110 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGGlyphContext.h @@ -0,0 +1,49 @@ +#import +#import +#import "RNSVGFontData.h" + +@class RNSVGText; +@class RNSVGGroup; +@class RNSVGGlyphContext; + +@interface RNSVGGlyphContext : NSObject + +- (CTFontRef)getGlyphFont; + +- (instancetype)initWithWidth:(CGFloat)width + height:(CGFloat)height; + +- (RNSVGFontData *)getFont; + +- (CGFloat)getFontSize; + +- (CGFloat)getHeight; + +- (CGFloat)getWidth; + +- (CGFloat)nextDeltaX; + +- (CGFloat)nextDeltaY; + +- (CGFloat)nextRotation; + +- (CGFloat)nextXWithDouble:(CGFloat)advance; + +- (CGFloat)nextY; + +- (void)popContext; + +- (void)pushContext:(RNSVGText*)node + font:(NSDictionary*)font + x:(NSArray*)x + y:(NSArray*)y + deltaX:(NSArray*)deltaX + deltaY:(NSArray*)deltaY + rotate:(NSArray*)rotate; + +- (void)pushContext:(RNSVGGroup*)node + font:(NSDictionary *)font; + +- (NSArray*)getFontContext; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGGroup.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGGroup.h new file mode 100644 index 0000000..4402014 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGGroup.h @@ -0,0 +1,27 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import +#import +#import "RNSVGContainer.h" +#import "RNSVGCGFCRule.h" +#import "RNSVGSvgView.h" +#import "RNSVGPath.h" +#import "RNSVGGlyphContext.h" + +@interface RNSVGGroup : RNSVGPath + +@property (nonatomic, strong) NSDictionary *font; + +- (void)renderPathTo:(CGContextRef)context rect:(CGRect)rect; +- (void)renderGroupTo:(CGContextRef)context rect:(CGRect)rect; + +- (RNSVGGlyphContext *)getGlyphContext; +- (void)pushGlyphContext; +- (void)popGlyphContext; +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGGroupManager.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGGroupManager.h new file mode 100644 index 0000000..84f7c82 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGGroupManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGRenderableManager.h" + +@interface RNSVGGroupManager : RNSVGRenderableManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGImage.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGImage.h new file mode 100644 index 0000000..dc7e78d --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGImage.h @@ -0,0 +1,27 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +#import +#import "RNSVGRenderable.h" +#import "RNSVGVBMOS.h" +#import "RNSVGLength.h" + +@interface RNSVGImage : RNSVGRenderable + +@property (nonatomic, weak) RCTBridge *bridge; +@property (nonatomic, assign) id src; +@property (nonatomic, strong) RNSVGLength* x; +@property (nonatomic, strong) RNSVGLength* y; +@property (nonatomic, strong) RNSVGLength* imagewidth; +@property (nonatomic, strong) RNSVGLength* imageheight; +@property (nonatomic, strong) NSString *align; +@property (nonatomic, assign) RNSVGVBMOS meetOrSlice; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGImageManager.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGImageManager.h new file mode 100644 index 0000000..c799d3e --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGImageManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGRenderableManager.h" + +@interface RNSVGImageManager : RNSVGRenderableManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGLength.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGLength.h new file mode 100644 index 0000000..ba7fb09 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGLength.h @@ -0,0 +1,32 @@ +#import + +#ifndef RNSVGLength_h +#define RNSVGLength_h + +// https://www.w3.org/TR/SVG/types.html#InterfaceSVGLength +typedef CF_ENUM(unsigned short, RNSVGLengthUnitType) { + SVG_LENGTHTYPE_UNKNOWN, + SVG_LENGTHTYPE_NUMBER, + SVG_LENGTHTYPE_PERCENTAGE, + SVG_LENGTHTYPE_EMS, + SVG_LENGTHTYPE_EXS, + SVG_LENGTHTYPE_PX, + SVG_LENGTHTYPE_CM, + SVG_LENGTHTYPE_MM, + SVG_LENGTHTYPE_IN, + SVG_LENGTHTYPE_PT, + SVG_LENGTHTYPE_PC, +}; + +@interface RNSVGLength : NSObject + +@property (nonatomic, assign) CGFloat value; +@property (nonatomic, assign) RNSVGLengthUnitType unit; + ++ (instancetype) lengthWithNumber: (CGFloat) number; ++ (instancetype) lengthWithString: (NSString *) lengthString; +- (BOOL) isEqualTo: (RNSVGLength *)other; + +@end + +#endif /* RNSVGLength_h */ diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGLine.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGLine.h new file mode 100644 index 0000000..1183902 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGLine.h @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +#import "RNSVGPath.h" + +@interface RNSVGLine : RNSVGRenderable +@property (nonatomic, strong) RNSVGLength* x1; +@property (nonatomic, strong) RNSVGLength* y1; +@property (nonatomic, strong) RNSVGLength* x2; +@property (nonatomic, strong) RNSVGLength* y2; +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGLineManager.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGLineManager.h new file mode 100644 index 0000000..51ed2f2 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGLineManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGRenderableManager.h" + +@interface RNSVGLineManager : RNSVGRenderableManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGLinearGradient.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGLinearGradient.h new file mode 100644 index 0000000..30e577a --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGLinearGradient.h @@ -0,0 +1,22 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGNode.h" +#import "RNSVGLength.h" + +@interface RNSVGLinearGradient : RNSVGNode + +@property (nonatomic, strong) RNSVGLength *x1; +@property (nonatomic, strong) RNSVGLength *y1; +@property (nonatomic, strong) RNSVGLength *x2; +@property (nonatomic, strong) RNSVGLength *y2; +@property (nonatomic, copy) NSArray *gradient; +@property (nonatomic, assign) RNSVGUnits gradientUnits; +@property (nonatomic, assign) CGAffineTransform gradientTransform; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGLinearGradientManager.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGLinearGradientManager.h new file mode 100644 index 0000000..4927884 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGLinearGradientManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGNodeManager.h" + +@interface RNSVGLinearGradientManager : RNSVGNodeManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGMarker.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGMarker.h new file mode 100644 index 0000000..a0744b9 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGMarker.h @@ -0,0 +1,24 @@ + +#import "RNSVGGroup.h" +#import "RNSVGLength.h" +#import "RNSVGMarkerPosition.h" + +@interface RNSVGMarker : RNSVGGroup + +@property (nonatomic, strong) RNSVGLength *refX; +@property (nonatomic, strong) RNSVGLength *refY; +@property (nonatomic, strong) RNSVGLength *markerWidth; +@property (nonatomic, strong) RNSVGLength *markerHeight; +@property (nonatomic, strong) NSString *markerUnits; +@property (nonatomic, strong) NSString *orient; + +@property (nonatomic, assign) CGFloat minX; +@property (nonatomic, assign) CGFloat minY; +@property (nonatomic, assign) CGFloat vbWidth; +@property (nonatomic, assign) CGFloat vbHeight; +@property (nonatomic, strong) NSString *align; +@property (nonatomic, assign) RNSVGVBMOS meetOrSlice; + +- (void)renderMarker:(CGContextRef)context rect:(CGRect)rect position:(RNSVGMarkerPosition*)position strokeWidth:(CGFloat)strokeWidth; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGMarkerManager.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGMarkerManager.h new file mode 100644 index 0000000..da10481 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGMarkerManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGGroupManager.h" + +@interface RNSVGMarkerManager : RNSVGGroupManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGMarkerPosition.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGMarkerPosition.h new file mode 100644 index 0000000..bf7b3c0 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGMarkerPosition.h @@ -0,0 +1,25 @@ + +#import +#import + +typedef enum RNSVGMarkerType { + kStartMarker, + kMidMarker, + kEndMarker +} RNSVGMarkerType; + +#define RNSVGZEROPOINT CGRectZero.origin + +@interface RNSVGMarkerPosition : NSObject + +// Element storage +@property (nonatomic, assign) RNSVGMarkerType type; +@property (nonatomic, assign) CGPoint origin; +@property (nonatomic, assign) float angle; + +// Instance creation ++ (instancetype) markerPosition:(RNSVGMarkerType)type origin:(CGPoint)origin angle:(float)angle; + ++ (NSArray*) fromCGPath:(CGPathRef)path; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGMask.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGMask.h new file mode 100644 index 0000000..a710c76 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGMask.h @@ -0,0 +1,15 @@ + +#import "RNSVGGroup.h" +#import "RNSVGLength.h" + +@interface RNSVGMask : RNSVGGroup + +@property (nonatomic, strong) RNSVGLength *x; +@property (nonatomic, strong) RNSVGLength *y; +@property (nonatomic, strong) RNSVGLength *maskwidth; +@property (nonatomic, strong) RNSVGLength *maskheight; +@property (nonatomic, assign) RNSVGUnits maskUnits; +@property (nonatomic, assign) RNSVGUnits maskContentUnits; +@property (nonatomic, assign) CGAffineTransform maskTransform; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGMaskManager.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGMaskManager.h new file mode 100644 index 0000000..bb5fa53 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGMaskManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGGroupManager.h" + +@interface RNSVGMaskManager : RNSVGGroupManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGNode.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGNode.h new file mode 100644 index 0000000..81513b3 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGNode.h @@ -0,0 +1,141 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import +#import +#import "RNSVGCGFCRule.h" +#import "RNSVGSvgView.h" +@class RNSVGGroup; + +/** + * RNSVG nodes are implemented as base UIViews. They should be implementation for all basic + *interfaces for all non-definition nodes. + */ + +@interface RNSVGNode : UIView + +/* + N[1/Sqrt[2], 36] + The inverse of the square root of 2. + Provide enough digits for the 128-bit IEEE quad (36 significant digits). + */ +extern CGFloat const RNSVG_M_SQRT1_2l; +extern CGFloat const RNSVG_DEFAULT_FONT_SIZE; + +@property (nonatomic, strong) NSString *name; +@property (nonatomic, strong) NSString *display; +@property (nonatomic, assign) CGFloat opacity; +@property (nonatomic, assign) RNSVGCGFCRule clipRule; +@property (nonatomic, strong) NSString *clipPath; +@property (nonatomic, strong) NSString *mask; +@property (nonatomic, strong) NSString *markerStart; +@property (nonatomic, strong) NSString *markerMid; +@property (nonatomic, strong) NSString *markerEnd; + +/** + * Used to control how touch events are processed. + */ +@property (nonatomic, assign) RCTPointerEvents pointerEvents; +@property (nonatomic, assign) BOOL responsible; + +@property (nonatomic, assign) CGAffineTransform ctm; +@property (nonatomic, assign) CGAffineTransform screenCTM; +@property (nonatomic, assign) CGAffineTransform matrix; +@property (nonatomic, assign) CGAffineTransform transforms; +@property (nonatomic, assign) CGAffineTransform invmatrix; +@property (nonatomic, assign) CGAffineTransform invTransform; +@property (nonatomic, assign) BOOL active; +@property (nonatomic, assign) BOOL dirty; +@property (nonatomic, assign) BOOL merging; +@property (nonatomic, assign) BOOL skip; +@property (nonatomic, assign) CGPathRef path; +@property (nonatomic, assign) CGPathRef strokePath; +@property (nonatomic, assign) CGPathRef markerPath; +@property (nonatomic, assign) CGRect clientRect; +@property (nonatomic, assign) CGRect pathBounds; +@property (nonatomic, assign) CGRect fillBounds; +@property (nonatomic, assign) CGRect strokeBounds; +@property (nonatomic, assign) CGRect markerBounds; +@property (nonatomic, copy) RCTDirectEventBlock onLayout; + + +/** + * RNSVGSvgView which ownes current RNSVGNode + */ +@property (nonatomic, readonly, weak) RNSVGSvgView *svgView; +@property (nonatomic, readonly, weak) RNSVGGroup *textRoot; + +- (void)invalidate; + +- (RNSVGGroup *)getParentTextRoot; + +- (void)renderTo:(CGContextRef)context rect:(CGRect)rect; + +/** + * @abstract + * renderTo will take opacity into account and draw renderLayerTo off-screen if there is opacity + * specified, then composite that onto the context. renderLayerTo always draws at opacity=1. + */ +- (void)renderLayerTo:(CGContextRef)context rect:(CGRect)rect; + +/** + * get clipPath from cache + */ +- (CGPathRef)getClipPath; + +/** + * get clipPath through context + */ +- (CGPathRef)getClipPath:(CGContextRef)context; + +/** + * clip node by clipPath + */ +- (void)clip:(CGContextRef)context; + +/** + * getPath will return the path inside node as a ClipPath. + */ +- (CGPathRef)getPath:(CGContextRef) context; + +- (CGFloat)relativeOnWidthString:(NSString *)length; + +- (CGFloat)relativeOnHeightString:(NSString *)length; + +- (CGFloat)relativeOnOtherString:(NSString *)length; + +- (CGFloat)relativeOn:(RNSVGLength *)length relative:(CGFloat)relative; + +- (CGFloat)relativeOnWidth:(RNSVGLength *)length; + +- (CGFloat)relativeOnHeight:(RNSVGLength *)length; + +- (CGFloat)relativeOnOther:(RNSVGLength *)length; + +- (CGFloat)getFontSizeFromContext; + +- (CGFloat)getContextWidth; + +- (CGFloat)getContextHeight; + +/** + * save element`s reference into svg element. + */ +- (void)parseReference; + +- (void)beginTransparencyLayer:(CGContextRef)context; + +- (void)endTransparencyLayer:(CGContextRef)context; + +- (void)traverseSubviews:(BOOL (^)(__kindof UIView *node))block; + +- (void)clearChildCache; + +- (void)clearPath; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGNodeManager.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGNodeManager.h new file mode 100644 index 0000000..2075bf6 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGNodeManager.h @@ -0,0 +1,16 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGNode.h" +#import + +@interface RNSVGNodeManager : RCTViewManager + +- (RNSVGNode *)node; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGPainter.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGPainter.h new file mode 100644 index 0000000..f7e7385 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGPainter.h @@ -0,0 +1,39 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RCTConvert+RNSVG.h" +#import "RNSVGBrushType.h" +#import "RNSVGUnits.h" +#import "RNSVGLength.h" + +@class RNSVGPattern; + +@interface RNSVGPainter : NSObject + +@property (nonatomic, assign) RNSVGPattern* pattern; +@property (nonatomic, assign) CGRect paintBounds; +@property (nonatomic, assign) bool useObjectBoundingBoxForContentUnits; +@property (nonatomic, assign) CGRect bounds; + +- (instancetype)initWithPointsArray:(NSArray *)pointsArray NS_DESIGNATED_INITIALIZER; + +- (void)paint:(CGContextRef)context bounds:(CGRect)bounds; + +- (void)setUnits:(RNSVGUnits)unit; + +- (void)setContentUnits:(RNSVGUnits)unit; + +- (void)setUserSpaceBoundingBox:(CGRect)userSpaceBoundingBox; + +- (void)setTransform:(CGAffineTransform)transform; + +- (void)setLinearGradientColors:(NSArray *)colors; + +- (void)setRadialGradientColors:(NSArray *)colors; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGPainterBrush.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGPainterBrush.h new file mode 100644 index 0000000..e075d58 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGPainterBrush.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGBrush.h" + +@interface RNSVGPainterBrush : RNSVGBrush + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGPath.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGPath.h new file mode 100644 index 0000000..2caf060 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGPath.h @@ -0,0 +1,17 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import +#import "RNSVGPathParser.h" +#import "RNSVGRenderable.h" + +@interface RNSVGPath : RNSVGRenderable + +@property (nonatomic, strong) RNSVGPathParser *d; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGPathManager.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGPathManager.h new file mode 100644 index 0000000..4b13dff --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGPathManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGRenderableManager.h" + +@interface RNSVGPathManager : RNSVGRenderableManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGPathMeasure.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGPathMeasure.h new file mode 100644 index 0000000..42b16fd --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGPathMeasure.h @@ -0,0 +1,24 @@ +/** + * Copyright (c) 2015-present, react-native-community. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +@interface RNSVGPathMeasure : NSObject + +@property CGFloat pathLength; +@property CGPathRef path; +@property NSMutableArray *lengths; +@property NSMutableArray *lines; +@property NSUInteger lineCount; +@property BOOL isClosed; + +- (void)reset; +- (void)extractPathData:(CGPathRef)path; +- (void)getPosAndTan:(CGFloat *)angle midPoint:(CGFloat)midPoint x:(CGFloat *)x y:(CGFloat *)y; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGPathParser.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGPathParser.h new file mode 100644 index 0000000..5ea68b8 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGPathParser.h @@ -0,0 +1,17 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + + +#import + +@interface RNSVGPathParser : NSObject + +- (instancetype) initWithPathString:(NSString *)d; +- (CGPathRef)getPath; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGPattern.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGPattern.h new file mode 100644 index 0000000..87f5290 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGPattern.h @@ -0,0 +1,22 @@ + +#import "RNSVGGroup.h" +#import "RNSVGLength.h" + +@interface RNSVGPattern : RNSVGGroup + +@property (nonatomic, strong) RNSVGLength *x; +@property (nonatomic, strong) RNSVGLength *y; +@property (nonatomic, strong) RNSVGLength *patternwidth; +@property (nonatomic, strong) RNSVGLength *patternheight; +@property (nonatomic, assign) RNSVGUnits patternUnits; +@property (nonatomic, assign) RNSVGUnits patternContentUnits; +@property (nonatomic, assign) CGAffineTransform patternTransform; + +@property (nonatomic, assign) CGFloat minX; +@property (nonatomic, assign) CGFloat minY; +@property (nonatomic, assign) CGFloat vbWidth; +@property (nonatomic, assign) CGFloat vbHeight; +@property (nonatomic, strong) NSString *align; +@property (nonatomic, assign) RNSVGVBMOS meetOrSlice; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGPatternManager.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGPatternManager.h new file mode 100644 index 0000000..05d546b --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGPatternManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGGroupManager.h" + +@interface RNSVGPatternManager : RNSVGGroupManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGPropHelper.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGPropHelper.h new file mode 100644 index 0000000..ce89239 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGPropHelper.h @@ -0,0 +1,22 @@ +#import +#import +#import "RNSVGLength.h" + +#ifndef RNSVGPropHelper_h +#define RNSVGPropHelper_h + +@interface RNSVGPropHelper : NSObject + ++ (CGFloat) fromRelativeWithNSString:(NSString *)length + relative:(CGFloat)relative + fontSize:(CGFloat)fontSize; + ++ (CGFloat) fromRelative:(RNSVGLength*)length + relative:(CGFloat)relative + fontSize:(CGFloat)fontSize; + ++ (CGFloat)fromRelative:(RNSVGLength*)length + relative:(CGFloat)relative; +@end + +#endif diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGRadialGradient.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGRadialGradient.h new file mode 100644 index 0000000..deb8e03 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGRadialGradient.h @@ -0,0 +1,24 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGNode.h" +#import "RNSVGLength.h" + +@interface RNSVGRadialGradient : RNSVGNode + +@property (nonatomic, strong) RNSVGLength *fx; +@property (nonatomic, strong) RNSVGLength *fy; +@property (nonatomic, strong) RNSVGLength *rx; +@property (nonatomic, strong) RNSVGLength *ry; +@property (nonatomic, strong) RNSVGLength *cx; +@property (nonatomic, strong) RNSVGLength *cy; +@property (nonatomic, copy) NSArray *gradient; +@property (nonatomic, assign) RNSVGUnits gradientUnits; +@property (nonatomic, assign) CGAffineTransform gradientTransform; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGRadialGradientManager.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGRadialGradientManager.h new file mode 100644 index 0000000..60c6055 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGRadialGradientManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGNodeManager.h" + +@interface RNSVGRadialGradientManager : RNSVGNodeManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGRect.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGRect.h new file mode 100644 index 0000000..04eea2c --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGRect.h @@ -0,0 +1,22 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +#import "RNSVGPath.h" + +@interface RNSVGRect : RNSVGRenderable + +@property (nonatomic, strong) RNSVGLength* x; +@property (nonatomic, strong) RNSVGLength* y; +@property (nonatomic, strong) RNSVGLength* rectwidth; +@property (nonatomic, strong) RNSVGLength* rectheight; +@property (nonatomic, strong) RNSVGLength* rx; +@property (nonatomic, strong) RNSVGLength* ry; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGRectManager.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGRectManager.h new file mode 100644 index 0000000..fd16811 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGRectManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGRenderableManager.h" + +@interface RNSVGRectManager : RNSVGRenderableManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGRenderable.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGRenderable.h new file mode 100644 index 0000000..7ae0489 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGRenderable.h @@ -0,0 +1,43 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +#import "RNSVGBrush.h" +#import "RNSVGCGFCRule.h" +#import "RNSVGNode.h" +#import "RNSVGLength.h" +#import "RNSVGVectorEffect.h" + +@interface RNSVGRenderable : RNSVGNode + +@property (class) RNSVGRenderable *contextElement; +@property (nonatomic, strong) RNSVGBrush *fill; +@property (nonatomic, assign) CGFloat fillOpacity; +@property (nonatomic, assign) RNSVGCGFCRule fillRule; +@property (nonatomic, strong) RNSVGBrush *stroke; +@property (nonatomic, assign) CGFloat strokeOpacity; +@property (nonatomic, strong) RNSVGLength *strokeWidth; +@property (nonatomic, assign) CGLineCap strokeLinecap; +@property (nonatomic, assign) CGLineJoin strokeLinejoin; +@property (nonatomic, assign) CGFloat strokeMiterlimit; +@property (nonatomic, strong) NSArray *strokeDasharray; +@property (nonatomic, assign) CGFloat strokeDashoffset; +@property (nonatomic, assign) RNSVGVectorEffect vectorEffect; +@property (nonatomic, copy) NSArray *propList; +@property (nonatomic, assign) CGPathRef hitArea; + +- (void)setHitArea:(CGPathRef)path; + +- (NSArray *)getAttributeList; + +- (void)mergeProperties:(__kindof RNSVGRenderable *)target; + +- (void)resetProperties; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGRenderableManager.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGRenderableManager.h new file mode 100644 index 0000000..1a9eea7 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGRenderableManager.h @@ -0,0 +1,16 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGNodeManager.h" +#import "RNSVGRenderable.h" + +@interface RNSVGRenderableManager : RNSVGNodeManager + +- (RNSVGRenderable *)node; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGSolidColorBrush.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGSolidColorBrush.h new file mode 100644 index 0000000..6e12929 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGSolidColorBrush.h @@ -0,0 +1,15 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGBrush.h" + +@interface RNSVGSolidColorBrush : RNSVGBrush + +- (instancetype)initWithNumber:(NSNumber *)number; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGSvgView.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGSvgView.h new file mode 100644 index 0000000..6510e1b --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGSvgView.h @@ -0,0 +1,70 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import +#import "RNSVGPainter.h" +#import "RNSVGContainer.h" +#import "RNSVGVBMOS.h" + +@class RNSVGNode; + +@interface RNSVGSvgView : UIView + +@property (nonatomic, strong) RNSVGLength *bbWidth; +@property (nonatomic, strong) RNSVGLength *bbHeight; +@property (nonatomic, assign) CGFloat minX; +@property (nonatomic, assign) CGFloat minY; +@property (nonatomic, assign) CGFloat vbWidth; +@property (nonatomic, assign) CGFloat vbHeight; +@property (nonatomic, strong) NSString *align; +@property (nonatomic, assign) RNSVGVBMOS meetOrSlice; +@property (nonatomic, assign) BOOL responsible; +@property (nonatomic, assign) BOOL active; +@property (nonatomic, assign) CGRect boundingBox; +@property (nonatomic, assign) CGAffineTransform initialCTM; +@property (nonatomic, assign) CGAffineTransform invInitialCTM; +@property (nonatomic, assign) CGAffineTransform viewBoxTransform; + + + +/** + * define content as clipPath template. + */ +- (void)defineClipPath:(__kindof RNSVGNode *)clipPath clipPathName:(NSString *)clipPathName; + +- (RNSVGNode *)getDefinedClipPath:(NSString *)clipPathName; + +- (void)defineTemplate:(__kindof RNSVGNode *)template templateName:(NSString *)templateName; + +- (RNSVGNode *)getDefinedTemplate:(NSString *)templateName; + +- (void)definePainter:(RNSVGPainter *)painter painterName:(NSString *)painterName; + +- (RNSVGPainter *)getDefinedPainter:(NSString *)painterName; + +- (void)defineMarker:(RNSVGNode *)marker markerName:(NSString *)markerName; + +- (RNSVGNode *)getDefinedMarker:(NSString *)markerName; + +- (void)defineMask:(RNSVGNode *)mask maskName:(NSString *)maskName; + +- (RNSVGNode *)getDefinedMask:(NSString *)maskName; + +- (NSString *)getDataURL; + +- (NSString *)getDataURLwithBounds:(CGRect)bounds; + +- (CGRect)getContextBounds; + +- (void)drawRect:(CGRect)rect; + +- (void)drawToContext:(CGContextRef)context withRect:(CGRect)rect; + +- (CGAffineTransform)getViewBoxTransform; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGSvgViewManager.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGSvgViewManager.h new file mode 100644 index 0000000..adbb664 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGSvgViewManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +@interface RNSVGSvgViewManager : RCTViewManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGSymbol.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGSymbol.h new file mode 100644 index 0000000..b9297b2 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGSymbol.h @@ -0,0 +1,26 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGGroup.h" + +/** + * RNSVG defination are implemented as abstract UIViews for all elements inside Defs. + */ + +@interface RNSVGSymbol : RNSVGGroup + +@property (nonatomic, assign) CGFloat minX; +@property (nonatomic, assign) CGFloat minY; +@property (nonatomic, assign) CGFloat vbWidth; +@property (nonatomic, assign) CGFloat vbHeight; +@property (nonatomic, strong) NSString *align; +@property (nonatomic, assign) RNSVGVBMOS meetOrSlice; + +- (void)renderSymbolTo:(CGContextRef)context width:(CGFloat)width height:(CGFloat)height; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGSymbolManager.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGSymbolManager.h new file mode 100644 index 0000000..6001344 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGSymbolManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGNodeManager.h" + +@interface RNSVGSymbolManager : RNSVGNodeManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGTSpan.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGTSpan.h new file mode 100644 index 0000000..9b7509f --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGTSpan.h @@ -0,0 +1,17 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ +#import +#import +#import +#import "RNSVGText.h" + +@interface RNSVGTSpan : RNSVGText + +@property (nonatomic, strong) NSString *content; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGTSpanManager.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGTSpanManager.h new file mode 100644 index 0000000..fa4c5f0 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGTSpanManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGTextManager.h" + +@interface RNSVGTSpanManager : RNSVGTextManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGText.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGText.h new file mode 100644 index 0000000..71ec946 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGText.h @@ -0,0 +1,30 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import +#import "RNSVGGroup.h" + +@interface RNSVGText : RNSVGGroup + +@property (nonatomic, strong) RNSVGLength *inlineSize; +@property (nonatomic, strong) RNSVGLength *textLength; +@property (nonatomic, strong) NSString *baselineShift; +@property (nonatomic, strong) NSString *lengthAdjust; +@property (nonatomic, strong) NSString *alignmentBaseline; +@property (nonatomic, strong) NSArray *deltaX; +@property (nonatomic, strong) NSArray *deltaY; +@property (nonatomic, strong) NSArray *positionX; +@property (nonatomic, strong) NSArray *positionY; +@property (nonatomic, strong) NSArray *rotate; + +- (CGPathRef)getGroupPath:(CGContextRef)context; +- (CTFontRef)getFontFromContext; +- (CGFloat)getSubtreeTextChunksTotalAdvance; +- (RNSVGText*)getTextAnchorRoot; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGTextManager.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGTextManager.h new file mode 100644 index 0000000..1885846 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGTextManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGRenderableManager.h" + +@interface RNSVGTextManager : RNSVGRenderableManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGTextPath.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGTextPath.h new file mode 100644 index 0000000..820f575 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGTextPath.h @@ -0,0 +1,23 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import +#import +#import "RNSVGText.h" +#import "RNSVGLength.h" + +@interface RNSVGTextPath : RNSVGText + +@property (nonatomic, strong) NSString *href; +@property (nonatomic, strong) NSString *side; +@property (nonatomic, strong) NSString *method; +@property (nonatomic, strong) NSString *midLine; +@property (nonatomic, strong) NSString *spacing; +@property (nonatomic, strong) RNSVGLength *startOffset; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGTextPathManager.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGTextPathManager.h new file mode 100644 index 0000000..165db27 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGTextPathManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGTextManager.h" + +@interface RNSVGTextPathManager : RNSVGRenderableManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGTextProperties.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGTextProperties.h new file mode 100644 index 0000000..527ce3f --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGTextProperties.h @@ -0,0 +1,217 @@ +#import + +#ifndef RNTextProperties_h +#define RNTextProperties_h + +typedef NS_ENUM(NSInteger, RNSVGAlignmentBaseline) { + RNSVGAlignmentBaselineBaseline, + RNSVGAlignmentBaselineTextBottom, + RNSVGAlignmentBaselineAlphabetic, + RNSVGAlignmentBaselineIdeographic, + RNSVGAlignmentBaselineMiddle, + RNSVGAlignmentBaselineCentral, + RNSVGAlignmentBaselineMathematical, + RNSVGAlignmentBaselineTextTop, + RNSVGAlignmentBaselineBottom, + RNSVGAlignmentBaselineCenter, + RNSVGAlignmentBaselineTop, + /* + SVG implementations may support the following aliases in order to support legacy content: + + text-before-edge = text-top + text-after-edge = text-bottom + */ + RNSVGAlignmentBaselineTextBeforeEdge, + RNSVGAlignmentBaselineTextAfterEdge, + // SVG 1.1 + RNSVGAlignmentBaselineBeforeEdge, + RNSVGAlignmentBaselineAfterEdge, + RNSVGAlignmentBaselineHanging, + RNSVGAlignmentBaselineDEFAULT = RNSVGAlignmentBaselineBaseline +}; + +static NSString* const RNSVGAlignmentBaselineStrings[] = { + @"baseline", + @"text-bottom", + @"alphabetic", + @"ideographic", + @"middle", + @"central", + @"mathematical", + @"text-top", + @"bottom", + @"center", + @"top", + @"text-before-edge", + @"text-after-edge", + @"before-edge", + @"after-edge", + @"hanging", + @"central", + @"mathematical", + @"text-top", + @"bottom", + @"center", + @"top", + nil +}; + +NSString* RNSVGAlignmentBaselineToString( enum RNSVGAlignmentBaseline fw ); + +enum RNSVGAlignmentBaseline RNSVGAlignmentBaselineFromString( NSString* s ); + +typedef NS_ENUM(NSInteger, RNSVGFontStyle) { + RNSVGFontStyleNormal, + RNSVGFontStyleItalic, + RNSVGFontStyleOblique, + RNSVGFontStyleDEFAULT = RNSVGFontStyleNormal, +}; + +static NSString* const RNSVGFontStyleStrings[] = {@"normal", @"italic", @"oblique", nil}; + +NSString* RNSVGFontStyleToString( enum RNSVGFontStyle fw ); + +enum RNSVGFontStyle RNSVGFontStyleFromString( NSString* s ); + +typedef NS_ENUM(NSInteger, RNSVGFontVariantLigatures) { + RNSVGFontVariantLigaturesNormal, + RNSVGFontVariantLigaturesNone, + RNSVGFontVariantLigaturesDEFAULT = RNSVGFontVariantLigaturesNormal, +}; + +static NSString* const RNSVGFontVariantLigaturesStrings[] = {@"normal", @"none", nil}; + +NSString* RNSVGFontVariantLigaturesToString( enum RNSVGFontVariantLigatures fw ); + +enum RNSVGFontVariantLigatures RNSVGFontVariantLigaturesFromString( NSString* s ); + +typedef NS_ENUM(NSInteger, RNSVGFontWeight) { + // Absolute + RNSVGFontWeightNormal, + RNSVGFontWeightBold, + RNSVGFontWeight100, + RNSVGFontWeight200, + RNSVGFontWeight300, + RNSVGFontWeight400, + RNSVGFontWeight500, + RNSVGFontWeight600, + RNSVGFontWeight700, + RNSVGFontWeight800, + RNSVGFontWeight900, + // Relative + RNSVGFontWeightBolder, + RNSVGFontWeightLighter, + RNSVGFontWeightDEFAULT = RNSVGFontWeightNormal, +}; + +static NSString* const RNSVGFontWeightStrings[] = {@"normal", @"bold", @"100", @"200", @"300", @"400", @"500", @"600", @"700", @"800", @"900", @"bolder", @"lighter", nil}; + +static int const RNSVGAbsoluteFontWeights[] = {400, 700, 100, 200, 300, 400, 500, 600, 700, 800, 900}; + +static RNSVGFontWeight const RNSVGFontWeights[] = { + RNSVGFontWeight100, + RNSVGFontWeight100, + RNSVGFontWeight200, + RNSVGFontWeight300, + RNSVGFontWeightNormal, + RNSVGFontWeight500, + RNSVGFontWeight600, + RNSVGFontWeightBold, + RNSVGFontWeight800, + RNSVGFontWeight900, + RNSVGFontWeight900 +}; + +NSString* RNSVGFontWeightToString( enum RNSVGFontWeight fw ); + +enum RNSVGFontWeight RNSVGFontWeightFromString( NSString* s ); + +typedef NS_ENUM(NSInteger, RNSVGTextAnchor) { + RNSVGTextAnchorStart, + RNSVGTextAnchorMiddle, + RNSVGTextAnchorEnd, + RNSVGTextAnchorDEFAULT = RNSVGTextAnchorStart, +}; + +static NSString* const RNSVGTextAnchorStrings[] = {@"start", @"middle", @"end", nil}; + +NSString* RNSVGTextAnchorToString( enum RNSVGTextAnchor fw ); + +enum RNSVGTextAnchor RNSVGTextAnchorFromString( NSString* s ); + +typedef NS_ENUM(NSInteger, RNSVGTextDecoration) { + RNSVGTextDecorationNone, + RNSVGTextDecorationUnderline, + RNSVGTextDecorationOverline, + RNSVGTextDecorationLineThrough, + RNSVGTextDecorationBlink, + RNSVGTextDecorationDEFAULT = RNSVGTextDecorationNone, +}; + +static NSString* const RNSVGTextDecorationStrings[] = {@"None", @"Underline", @"Overline", @"LineThrough", @"Blink", nil}; + +NSString* RNSVGTextDecorationToString( enum RNSVGTextDecoration fw ); + +enum RNSVGTextDecoration RNSVGTextDecorationFromString( NSString* s ); + +typedef NS_ENUM(NSInteger, RNSVGTextLengthAdjust) { + RNSVGTextLengthAdjustSpacing, + RNSVGTextLengthAdjustSpacingAndGlyphs, + RNSVGTextLengthAdjustDEFAULT = RNSVGTextLengthAdjustSpacing, +}; + +static NSString* const RNSVGTextLengthAdjustStrings[] = {@"spacing", @"spacingAndGlyphs", nil}; + +NSString* RNSVGTextLengthAdjustToString( enum RNSVGTextLengthAdjust fw ); + +enum RNSVGTextLengthAdjust RNSVGTextLengthAdjustFromString( NSString* s ); + +typedef NS_ENUM(NSInteger, RNSVGTextPathMethod) { + RNSVGTextPathMethodAlign, + RNSVGTextPathMethodStretch, + RNSVGTextPathMethodDEFAULT = RNSVGTextPathMethodAlign, +}; + +static NSString* const RNSVGTextPathMethodStrings[] = {@"align", @"stretch", nil}; + +NSString* RNSVGTextPathMethodToString( enum RNSVGTextPathMethod fw ); + +enum RNSVGTextPathMethod RNSVGTextPathMethodFromString( NSString* s ); + +typedef NS_ENUM(NSInteger, RNSVGTextPathMidLine) { + RNSVGTextPathMidLineSharp, + RNSVGTextPathMidLineSmooth, + RNSVGTextPathMidLineDEFAULT = RNSVGTextPathMidLineSharp, +}; + +static NSString* const RNSVGTextPathMidLineStrings[] = {@"sharp", @"smooth", nil}; + +NSString* RNSVGTextPathMidLineToString( enum RNSVGTextPathMidLine fw ); + +enum RNSVGTextPathMidLine RNSVGTextPathMidLineFromString( NSString* s ); + +typedef NS_ENUM(NSInteger, RNSVGTextPathSide) { + RNSVGTextPathSideLeft, + RNSVGTextPathSideRight, + RNSVGTextPathSideDEFAULT = RNSVGTextPathSideLeft, +}; + +static NSString* const RNSVGTextPathSideStrings[] = {@"left", @"right", nil}; + +NSString* RNSVGTextPathSideToString( enum RNSVGTextPathSide fw ); + +enum RNSVGTextPathSide RNSVGTextPathSideFromString( NSString* s ); + +typedef NS_ENUM(NSInteger, RNSVGTextPathSpacing) { + RNSVGTextPathSpacingAutoSpacing, + RNSVGTextPathSpacingExact, + RNSVGTextPathSpacingDEFAULT = RNSVGTextPathSpacingAutoSpacing, +}; + +static NSString* const RNSVGTextPathSpacingStrings[] = {@"auto", @"exact", nil}; + +NSString* RNSVGTextPathSpacingToString( enum RNSVGTextPathSpacing fw ); + +enum RNSVGTextPathSpacing RNSVGTextPathSpacingFromString( NSString* s ); + +#endif diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGUnits.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGUnits.h new file mode 100644 index 0000000..0592bc5 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGUnits.h @@ -0,0 +1,12 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +typedef CF_ENUM(int32_t, RNSVGUnits) { + kRNSVGUnitsObjectBoundingBox, + kRNSVGUnitsUserSpaceOnUse +}; diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGUse.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGUse.h new file mode 100644 index 0000000..6d0f3dd --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGUse.h @@ -0,0 +1,23 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGRenderable.h" +#import "RNSVGLength.h" + +/** + * RNSVG defination are implemented as abstract UIViews for all elements inside Defs. + */ + +@interface RNSVGUse : RNSVGRenderable + +@property (nonatomic, strong) NSString *href; +@property (nonatomic, strong) RNSVGLength *x; +@property (nonatomic, strong) RNSVGLength *y; +@property (nonatomic, strong) RNSVGLength *usewidth; +@property (nonatomic, strong) RNSVGLength *useheight; +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGUseManager.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGUseManager.h new file mode 100644 index 0000000..aa6bc34 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGUseManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGRenderableManager.h" + +@interface RNSVGUseManager : RNSVGRenderableManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGVBMOS.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGVBMOS.h new file mode 100644 index 0000000..24c404a --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGVBMOS.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +typedef CF_ENUM(int32_t, RNSVGVBMOS) { + kRNSVGVBMOSMeet, + kRNSVGVBMOSSlice, + kRNSVGVBMOSNone +}; diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGVectorEffect.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGVectorEffect.h new file mode 100644 index 0000000..0ab1703 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGVectorEffect.h @@ -0,0 +1,14 @@ +/** + * Copyright (c) 2015-present, react-native-community. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +typedef CF_ENUM(int32_t, RNSVGVectorEffect) { + kRNSVGVectorEffectDefault, + kRNSVGVectorEffectNonScalingStroke, + kRNSVGVectorEffectInherit, + kRNSVGVectorEffectUri +}; diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGViewBox.h b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGViewBox.h new file mode 100644 index 0000000..746ae79 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64/Headers/RNSVGViewBox.h @@ -0,0 +1,16 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import +#import "RNSVGVBMOS.h" + +@interface RNSVGViewBox : NSObject + ++ (CGAffineTransform)getTransform:(CGRect)vbRect eRect:(CGRect)eRect align:(NSString *)align meetOrSlice:(RNSVGVBMOS)meetOrSlice; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64/libRNSVG.a b/Frameworks/RNSVG.xcframework/ios-arm64/libRNSVG.a new file mode 100644 index 0000000..7c40322 Binary files /dev/null and b/Frameworks/RNSVG.xcframework/ios-arm64/libRNSVG.a differ diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RCTConvert+RNSVG.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RCTConvert+RNSVG.h new file mode 100644 index 0000000..4388e0c --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RCTConvert+RNSVG.h @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import +#import +#import "RCTConvert+RNSVG.h" +#import +#import "RNSVGCGFCRule.h" +#import "RNSVGVBMOS.h" +#import "RNSVGUnits.h" +#import "RNSVGLength.h" +#import "RNSVGPathParser.h" + +@class RNSVGBrush; + +@interface RCTConvert (RNSVG) + ++ (RNSVGLength*)RNSVGLength:(id)json; ++ (NSArray*)RNSVGLengthArray:(id)json; ++ (RNSVGCGFCRule)RNSVGCGFCRule:(id)json; ++ (RNSVGVBMOS)RNSVGVBMOS:(id)json; ++ (RNSVGUnits)RNSVGUnits:(id)json; ++ (RNSVGBrush *)RNSVGBrush:(id)json; ++ (RNSVGPathParser *)RNSVGCGPath:(NSString *)d; ++ (CGRect)RNSVGCGRect:(id)json offset:(NSUInteger)offset; ++ (CGColorRef)RNSVGCGColor:(id)json offset:(NSUInteger)offset; ++ (CGGradientRef)RNSVGCGGradient:(id)json; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGBezierElement.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGBezierElement.h new file mode 100644 index 0000000..eefbbf1 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGBezierElement.h @@ -0,0 +1,25 @@ +/* + + Erica Sadun, http://ericasadun.com + https://github.com/erica/iOS-Drawing/tree/master/C08/Quartz%20Book%20Pack/Bezier + */ + +#import +#import + +#define RNSVGNULLPOINT CGRectNull.origin + +@interface RNSVGBezierElement : NSObject + +// Element storage +@property (nonatomic, assign) CGPathElementType elementType; +@property (nonatomic, assign) CGPoint point; +@property (nonatomic, assign) CGPoint controlPoint1; +@property (nonatomic, assign) CGPoint controlPoint2; + +// Instance creation ++ (instancetype) elementWithPathElement: (CGPathElement) element; ++ (NSArray *) elementsFromCGPath:(CGPathRef)path; + +@end + diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGBrush.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGBrush.h new file mode 100644 index 0000000..edf3fc4 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGBrush.h @@ -0,0 +1,41 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import +#import +#import "RNSVGPainter.h" + +@interface RNSVGBrush : NSObject + +@property (nonatomic, strong) NSString* brushRef; + +/* @abstract */ +- (instancetype)initWithArray:(NSArray *)data; + +/** + * @abstract + * For certain brushes we can fast path a combined fill and stroke. + * For those brushes we override applyFillColor which sets the fill + * color to be used by those batch paints. Those return YES. + * We can't batch gradient painting in CoreGraphics, so those will + * return NO and paint gets called instead. + */ +- (BOOL)applyFillColor:(CGContextRef)context opacity:(CGFloat)opacity; + +- (BOOL)applyStrokeColor:(CGContextRef)context opacity:(CGFloat)opacity; + +- (CGColorRef)getColorWithOpacity:(CGFloat)opacity; + +/** + * @abstract + * paint fills the context with a brush. The context is assumed to + * be clipped. + */ +- (void)paint:(CGContextRef)context opacity:(CGFloat)opacity painter:(RNSVGPainter *)painter bounds:(CGRect)bounds; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGBrushType.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGBrushType.h new file mode 100644 index 0000000..3cc4a30 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGBrushType.h @@ -0,0 +1,14 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +typedef enum { + kRNSVGUndefinedType, + kRNSVGLinearGradient, + kRNSVGRadialGradient, + kRNSVGPattern +} RNSVGBrushType; diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGCGFCRule.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGCGFCRule.h new file mode 100644 index 0000000..160b0ef --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGCGFCRule.h @@ -0,0 +1,12 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +typedef CF_ENUM(int32_t, RNSVGCGFCRule) { + kRNSVGCGFCRuleEvenodd, + kRNSVGCGFCRuleNonzero +}; \ No newline at end of file diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGCircle.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGCircle.h new file mode 100644 index 0000000..f4e411a --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGCircle.h @@ -0,0 +1,20 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +#import "RNSVGPath.h" + +@interface RNSVGCircle : RNSVGRenderable + +@property (nonatomic, strong) RNSVGLength* cx; +@property (nonatomic, strong) RNSVGLength* cy; +@property (nonatomic, strong) RNSVGLength* r; + +@end + diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGCircleManager.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGCircleManager.h new file mode 100644 index 0000000..30b6c1c --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGCircleManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGRenderableManager.h" + +@interface RNSVGCircleManager : RNSVGRenderableManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGClipPath.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGClipPath.h new file mode 100644 index 0000000..27697e2 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGClipPath.h @@ -0,0 +1,19 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +#import "RNSVGContainer.h" +#import "RNSVGGroup.h" +#import "RNSVGSvgView.h" + +@interface RNSVGClipPath : RNSVGGroup + +- (BOOL)isSimpleClipPath; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGClipPathManager.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGClipPathManager.h new file mode 100644 index 0000000..111c7e4 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGClipPathManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGNodeManager.h" + +@interface RNSVGClipPathManager : RNSVGNodeManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGContainer.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGContainer.h new file mode 100644 index 0000000..4d16332 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGContainer.h @@ -0,0 +1,17 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +@protocol RNSVGContainer + +// This is used as a hook for child to mark it's parent as dirty. +// This bubbles up to the root which gets marked as dirty. +- (void)invalidate; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGContextBrush.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGContextBrush.h new file mode 100644 index 0000000..269f46c --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGContextBrush.h @@ -0,0 +1,16 @@ +/** + * Copyright (c) 2015-present, react-native-community. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGBrush.h" + +@interface RNSVGContextBrush : RNSVGBrush + +- (instancetype)initFill; +- (instancetype)initStroke; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGDefs.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGDefs.h new file mode 100644 index 0000000..9e58b40 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGDefs.h @@ -0,0 +1,17 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGNode.h" + +/** + * RNSVG defination are implemented as abstract UIViews for all elements inside Defs. + */ + +@interface RNSVGDefs : RNSVGNode + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGDefsManager.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGDefsManager.h new file mode 100644 index 0000000..591ba68 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGDefsManager.h @@ -0,0 +1,15 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +@interface RNSVGDefsManager : RCTViewManager + +@end + +#import "RNSVGNode.h" diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGEllipse.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGEllipse.h new file mode 100644 index 0000000..8ca56cc --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGEllipse.h @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +#import "RNSVGPath.h" + +@interface RNSVGEllipse : RNSVGRenderable +@property (nonatomic, strong) RNSVGLength* cx; +@property (nonatomic, strong) RNSVGLength* cy; +@property (nonatomic, strong) RNSVGLength* rx; +@property (nonatomic, strong) RNSVGLength* ry; +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGEllipseManager.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGEllipseManager.h new file mode 100644 index 0000000..3f6c001 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGEllipseManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGRenderableManager.h" + +@interface RNSVGEllipseManager : RNSVGRenderableManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGFontData.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGFontData.h new file mode 100644 index 0000000..a988ca4 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGFontData.h @@ -0,0 +1,36 @@ +#import +#import + +#import "RNSVGTextProperties.h" +#import "RNSVGPropHelper.h" + +@interface RNSVGFontData : NSObject { +@public + CGFloat fontSize; + NSString * fontSize_; + NSString *fontFamily; + enum RNSVGFontStyle fontStyle; + NSDictionary * fontData; + enum RNSVGFontWeight fontWeight; + int absoluteFontWeight; + NSString *fontFeatureSettings; + enum RNSVGFontVariantLigatures fontVariantLigatures; + enum RNSVGTextAnchor textAnchor; + enum RNSVGTextDecoration textDecoration; + CGFloat kerning; + CGFloat wordSpacing; + CGFloat letterSpacing; + bool manualKerning; +} + ++ (instancetype)Defaults; + ++ (CGFloat)toAbsoluteWithNSString:(NSString *)string + fontSize:(CGFloat)fontSize; + ++ (instancetype)initWithNSDictionary:(NSDictionary *)font + parent:(RNSVGFontData *)parent; + +@end + +#define RNSVGFontData_DEFAULT_FONT_SIZE 12.0 diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGForeignObject.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGForeignObject.h new file mode 100644 index 0000000..346b204 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGForeignObject.h @@ -0,0 +1,12 @@ + +#import "RNSVGGroup.h" +#import "RNSVGLength.h" + +@interface RNSVGForeignObject : RNSVGGroup + +@property (nonatomic, strong) RNSVGLength *x; +@property (nonatomic, strong) RNSVGLength *y; +@property (nonatomic, strong) RNSVGLength *foreignObjectwidth; +@property (nonatomic, strong) RNSVGLength *foreignObjectheight; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGForeignObjectManager.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGForeignObjectManager.h new file mode 100644 index 0000000..845a6db --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGForeignObjectManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGGroupManager.h" + +@interface RNSVGForeignObjectManager : RNSVGGroupManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGGlyphContext.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGGlyphContext.h new file mode 100644 index 0000000..de49110 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGGlyphContext.h @@ -0,0 +1,49 @@ +#import +#import +#import "RNSVGFontData.h" + +@class RNSVGText; +@class RNSVGGroup; +@class RNSVGGlyphContext; + +@interface RNSVGGlyphContext : NSObject + +- (CTFontRef)getGlyphFont; + +- (instancetype)initWithWidth:(CGFloat)width + height:(CGFloat)height; + +- (RNSVGFontData *)getFont; + +- (CGFloat)getFontSize; + +- (CGFloat)getHeight; + +- (CGFloat)getWidth; + +- (CGFloat)nextDeltaX; + +- (CGFloat)nextDeltaY; + +- (CGFloat)nextRotation; + +- (CGFloat)nextXWithDouble:(CGFloat)advance; + +- (CGFloat)nextY; + +- (void)popContext; + +- (void)pushContext:(RNSVGText*)node + font:(NSDictionary*)font + x:(NSArray*)x + y:(NSArray*)y + deltaX:(NSArray*)deltaX + deltaY:(NSArray*)deltaY + rotate:(NSArray*)rotate; + +- (void)pushContext:(RNSVGGroup*)node + font:(NSDictionary *)font; + +- (NSArray*)getFontContext; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGGroup.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGGroup.h new file mode 100644 index 0000000..4402014 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGGroup.h @@ -0,0 +1,27 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import +#import +#import "RNSVGContainer.h" +#import "RNSVGCGFCRule.h" +#import "RNSVGSvgView.h" +#import "RNSVGPath.h" +#import "RNSVGGlyphContext.h" + +@interface RNSVGGroup : RNSVGPath + +@property (nonatomic, strong) NSDictionary *font; + +- (void)renderPathTo:(CGContextRef)context rect:(CGRect)rect; +- (void)renderGroupTo:(CGContextRef)context rect:(CGRect)rect; + +- (RNSVGGlyphContext *)getGlyphContext; +- (void)pushGlyphContext; +- (void)popGlyphContext; +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGGroupManager.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGGroupManager.h new file mode 100644 index 0000000..84f7c82 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGGroupManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGRenderableManager.h" + +@interface RNSVGGroupManager : RNSVGRenderableManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGImage.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGImage.h new file mode 100644 index 0000000..dc7e78d --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGImage.h @@ -0,0 +1,27 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +#import +#import "RNSVGRenderable.h" +#import "RNSVGVBMOS.h" +#import "RNSVGLength.h" + +@interface RNSVGImage : RNSVGRenderable + +@property (nonatomic, weak) RCTBridge *bridge; +@property (nonatomic, assign) id src; +@property (nonatomic, strong) RNSVGLength* x; +@property (nonatomic, strong) RNSVGLength* y; +@property (nonatomic, strong) RNSVGLength* imagewidth; +@property (nonatomic, strong) RNSVGLength* imageheight; +@property (nonatomic, strong) NSString *align; +@property (nonatomic, assign) RNSVGVBMOS meetOrSlice; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGImageManager.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGImageManager.h new file mode 100644 index 0000000..c799d3e --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGImageManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGRenderableManager.h" + +@interface RNSVGImageManager : RNSVGRenderableManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGLength.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGLength.h new file mode 100644 index 0000000..ba7fb09 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGLength.h @@ -0,0 +1,32 @@ +#import + +#ifndef RNSVGLength_h +#define RNSVGLength_h + +// https://www.w3.org/TR/SVG/types.html#InterfaceSVGLength +typedef CF_ENUM(unsigned short, RNSVGLengthUnitType) { + SVG_LENGTHTYPE_UNKNOWN, + SVG_LENGTHTYPE_NUMBER, + SVG_LENGTHTYPE_PERCENTAGE, + SVG_LENGTHTYPE_EMS, + SVG_LENGTHTYPE_EXS, + SVG_LENGTHTYPE_PX, + SVG_LENGTHTYPE_CM, + SVG_LENGTHTYPE_MM, + SVG_LENGTHTYPE_IN, + SVG_LENGTHTYPE_PT, + SVG_LENGTHTYPE_PC, +}; + +@interface RNSVGLength : NSObject + +@property (nonatomic, assign) CGFloat value; +@property (nonatomic, assign) RNSVGLengthUnitType unit; + ++ (instancetype) lengthWithNumber: (CGFloat) number; ++ (instancetype) lengthWithString: (NSString *) lengthString; +- (BOOL) isEqualTo: (RNSVGLength *)other; + +@end + +#endif /* RNSVGLength_h */ diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGLine.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGLine.h new file mode 100644 index 0000000..1183902 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGLine.h @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +#import "RNSVGPath.h" + +@interface RNSVGLine : RNSVGRenderable +@property (nonatomic, strong) RNSVGLength* x1; +@property (nonatomic, strong) RNSVGLength* y1; +@property (nonatomic, strong) RNSVGLength* x2; +@property (nonatomic, strong) RNSVGLength* y2; +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGLineManager.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGLineManager.h new file mode 100644 index 0000000..51ed2f2 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGLineManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGRenderableManager.h" + +@interface RNSVGLineManager : RNSVGRenderableManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGLinearGradient.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGLinearGradient.h new file mode 100644 index 0000000..30e577a --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGLinearGradient.h @@ -0,0 +1,22 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGNode.h" +#import "RNSVGLength.h" + +@interface RNSVGLinearGradient : RNSVGNode + +@property (nonatomic, strong) RNSVGLength *x1; +@property (nonatomic, strong) RNSVGLength *y1; +@property (nonatomic, strong) RNSVGLength *x2; +@property (nonatomic, strong) RNSVGLength *y2; +@property (nonatomic, copy) NSArray *gradient; +@property (nonatomic, assign) RNSVGUnits gradientUnits; +@property (nonatomic, assign) CGAffineTransform gradientTransform; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGLinearGradientManager.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGLinearGradientManager.h new file mode 100644 index 0000000..4927884 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGLinearGradientManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGNodeManager.h" + +@interface RNSVGLinearGradientManager : RNSVGNodeManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGMarker.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGMarker.h new file mode 100644 index 0000000..a0744b9 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGMarker.h @@ -0,0 +1,24 @@ + +#import "RNSVGGroup.h" +#import "RNSVGLength.h" +#import "RNSVGMarkerPosition.h" + +@interface RNSVGMarker : RNSVGGroup + +@property (nonatomic, strong) RNSVGLength *refX; +@property (nonatomic, strong) RNSVGLength *refY; +@property (nonatomic, strong) RNSVGLength *markerWidth; +@property (nonatomic, strong) RNSVGLength *markerHeight; +@property (nonatomic, strong) NSString *markerUnits; +@property (nonatomic, strong) NSString *orient; + +@property (nonatomic, assign) CGFloat minX; +@property (nonatomic, assign) CGFloat minY; +@property (nonatomic, assign) CGFloat vbWidth; +@property (nonatomic, assign) CGFloat vbHeight; +@property (nonatomic, strong) NSString *align; +@property (nonatomic, assign) RNSVGVBMOS meetOrSlice; + +- (void)renderMarker:(CGContextRef)context rect:(CGRect)rect position:(RNSVGMarkerPosition*)position strokeWidth:(CGFloat)strokeWidth; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGMarkerManager.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGMarkerManager.h new file mode 100644 index 0000000..da10481 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGMarkerManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGGroupManager.h" + +@interface RNSVGMarkerManager : RNSVGGroupManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGMarkerPosition.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGMarkerPosition.h new file mode 100644 index 0000000..bf7b3c0 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGMarkerPosition.h @@ -0,0 +1,25 @@ + +#import +#import + +typedef enum RNSVGMarkerType { + kStartMarker, + kMidMarker, + kEndMarker +} RNSVGMarkerType; + +#define RNSVGZEROPOINT CGRectZero.origin + +@interface RNSVGMarkerPosition : NSObject + +// Element storage +@property (nonatomic, assign) RNSVGMarkerType type; +@property (nonatomic, assign) CGPoint origin; +@property (nonatomic, assign) float angle; + +// Instance creation ++ (instancetype) markerPosition:(RNSVGMarkerType)type origin:(CGPoint)origin angle:(float)angle; + ++ (NSArray*) fromCGPath:(CGPathRef)path; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGMask.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGMask.h new file mode 100644 index 0000000..a710c76 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGMask.h @@ -0,0 +1,15 @@ + +#import "RNSVGGroup.h" +#import "RNSVGLength.h" + +@interface RNSVGMask : RNSVGGroup + +@property (nonatomic, strong) RNSVGLength *x; +@property (nonatomic, strong) RNSVGLength *y; +@property (nonatomic, strong) RNSVGLength *maskwidth; +@property (nonatomic, strong) RNSVGLength *maskheight; +@property (nonatomic, assign) RNSVGUnits maskUnits; +@property (nonatomic, assign) RNSVGUnits maskContentUnits; +@property (nonatomic, assign) CGAffineTransform maskTransform; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGMaskManager.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGMaskManager.h new file mode 100644 index 0000000..bb5fa53 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGMaskManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGGroupManager.h" + +@interface RNSVGMaskManager : RNSVGGroupManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGNode.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGNode.h new file mode 100644 index 0000000..81513b3 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGNode.h @@ -0,0 +1,141 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import +#import +#import "RNSVGCGFCRule.h" +#import "RNSVGSvgView.h" +@class RNSVGGroup; + +/** + * RNSVG nodes are implemented as base UIViews. They should be implementation for all basic + *interfaces for all non-definition nodes. + */ + +@interface RNSVGNode : UIView + +/* + N[1/Sqrt[2], 36] + The inverse of the square root of 2. + Provide enough digits for the 128-bit IEEE quad (36 significant digits). + */ +extern CGFloat const RNSVG_M_SQRT1_2l; +extern CGFloat const RNSVG_DEFAULT_FONT_SIZE; + +@property (nonatomic, strong) NSString *name; +@property (nonatomic, strong) NSString *display; +@property (nonatomic, assign) CGFloat opacity; +@property (nonatomic, assign) RNSVGCGFCRule clipRule; +@property (nonatomic, strong) NSString *clipPath; +@property (nonatomic, strong) NSString *mask; +@property (nonatomic, strong) NSString *markerStart; +@property (nonatomic, strong) NSString *markerMid; +@property (nonatomic, strong) NSString *markerEnd; + +/** + * Used to control how touch events are processed. + */ +@property (nonatomic, assign) RCTPointerEvents pointerEvents; +@property (nonatomic, assign) BOOL responsible; + +@property (nonatomic, assign) CGAffineTransform ctm; +@property (nonatomic, assign) CGAffineTransform screenCTM; +@property (nonatomic, assign) CGAffineTransform matrix; +@property (nonatomic, assign) CGAffineTransform transforms; +@property (nonatomic, assign) CGAffineTransform invmatrix; +@property (nonatomic, assign) CGAffineTransform invTransform; +@property (nonatomic, assign) BOOL active; +@property (nonatomic, assign) BOOL dirty; +@property (nonatomic, assign) BOOL merging; +@property (nonatomic, assign) BOOL skip; +@property (nonatomic, assign) CGPathRef path; +@property (nonatomic, assign) CGPathRef strokePath; +@property (nonatomic, assign) CGPathRef markerPath; +@property (nonatomic, assign) CGRect clientRect; +@property (nonatomic, assign) CGRect pathBounds; +@property (nonatomic, assign) CGRect fillBounds; +@property (nonatomic, assign) CGRect strokeBounds; +@property (nonatomic, assign) CGRect markerBounds; +@property (nonatomic, copy) RCTDirectEventBlock onLayout; + + +/** + * RNSVGSvgView which ownes current RNSVGNode + */ +@property (nonatomic, readonly, weak) RNSVGSvgView *svgView; +@property (nonatomic, readonly, weak) RNSVGGroup *textRoot; + +- (void)invalidate; + +- (RNSVGGroup *)getParentTextRoot; + +- (void)renderTo:(CGContextRef)context rect:(CGRect)rect; + +/** + * @abstract + * renderTo will take opacity into account and draw renderLayerTo off-screen if there is opacity + * specified, then composite that onto the context. renderLayerTo always draws at opacity=1. + */ +- (void)renderLayerTo:(CGContextRef)context rect:(CGRect)rect; + +/** + * get clipPath from cache + */ +- (CGPathRef)getClipPath; + +/** + * get clipPath through context + */ +- (CGPathRef)getClipPath:(CGContextRef)context; + +/** + * clip node by clipPath + */ +- (void)clip:(CGContextRef)context; + +/** + * getPath will return the path inside node as a ClipPath. + */ +- (CGPathRef)getPath:(CGContextRef) context; + +- (CGFloat)relativeOnWidthString:(NSString *)length; + +- (CGFloat)relativeOnHeightString:(NSString *)length; + +- (CGFloat)relativeOnOtherString:(NSString *)length; + +- (CGFloat)relativeOn:(RNSVGLength *)length relative:(CGFloat)relative; + +- (CGFloat)relativeOnWidth:(RNSVGLength *)length; + +- (CGFloat)relativeOnHeight:(RNSVGLength *)length; + +- (CGFloat)relativeOnOther:(RNSVGLength *)length; + +- (CGFloat)getFontSizeFromContext; + +- (CGFloat)getContextWidth; + +- (CGFloat)getContextHeight; + +/** + * save element`s reference into svg element. + */ +- (void)parseReference; + +- (void)beginTransparencyLayer:(CGContextRef)context; + +- (void)endTransparencyLayer:(CGContextRef)context; + +- (void)traverseSubviews:(BOOL (^)(__kindof UIView *node))block; + +- (void)clearChildCache; + +- (void)clearPath; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGNodeManager.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGNodeManager.h new file mode 100644 index 0000000..2075bf6 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGNodeManager.h @@ -0,0 +1,16 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGNode.h" +#import + +@interface RNSVGNodeManager : RCTViewManager + +- (RNSVGNode *)node; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGPainter.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGPainter.h new file mode 100644 index 0000000..f7e7385 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGPainter.h @@ -0,0 +1,39 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RCTConvert+RNSVG.h" +#import "RNSVGBrushType.h" +#import "RNSVGUnits.h" +#import "RNSVGLength.h" + +@class RNSVGPattern; + +@interface RNSVGPainter : NSObject + +@property (nonatomic, assign) RNSVGPattern* pattern; +@property (nonatomic, assign) CGRect paintBounds; +@property (nonatomic, assign) bool useObjectBoundingBoxForContentUnits; +@property (nonatomic, assign) CGRect bounds; + +- (instancetype)initWithPointsArray:(NSArray *)pointsArray NS_DESIGNATED_INITIALIZER; + +- (void)paint:(CGContextRef)context bounds:(CGRect)bounds; + +- (void)setUnits:(RNSVGUnits)unit; + +- (void)setContentUnits:(RNSVGUnits)unit; + +- (void)setUserSpaceBoundingBox:(CGRect)userSpaceBoundingBox; + +- (void)setTransform:(CGAffineTransform)transform; + +- (void)setLinearGradientColors:(NSArray *)colors; + +- (void)setRadialGradientColors:(NSArray *)colors; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGPainterBrush.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGPainterBrush.h new file mode 100644 index 0000000..e075d58 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGPainterBrush.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGBrush.h" + +@interface RNSVGPainterBrush : RNSVGBrush + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGPath.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGPath.h new file mode 100644 index 0000000..2caf060 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGPath.h @@ -0,0 +1,17 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import +#import "RNSVGPathParser.h" +#import "RNSVGRenderable.h" + +@interface RNSVGPath : RNSVGRenderable + +@property (nonatomic, strong) RNSVGPathParser *d; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGPathManager.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGPathManager.h new file mode 100644 index 0000000..4b13dff --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGPathManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGRenderableManager.h" + +@interface RNSVGPathManager : RNSVGRenderableManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGPathMeasure.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGPathMeasure.h new file mode 100644 index 0000000..42b16fd --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGPathMeasure.h @@ -0,0 +1,24 @@ +/** + * Copyright (c) 2015-present, react-native-community. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +@interface RNSVGPathMeasure : NSObject + +@property CGFloat pathLength; +@property CGPathRef path; +@property NSMutableArray *lengths; +@property NSMutableArray *lines; +@property NSUInteger lineCount; +@property BOOL isClosed; + +- (void)reset; +- (void)extractPathData:(CGPathRef)path; +- (void)getPosAndTan:(CGFloat *)angle midPoint:(CGFloat)midPoint x:(CGFloat *)x y:(CGFloat *)y; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGPathParser.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGPathParser.h new file mode 100644 index 0000000..5ea68b8 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGPathParser.h @@ -0,0 +1,17 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + + +#import + +@interface RNSVGPathParser : NSObject + +- (instancetype) initWithPathString:(NSString *)d; +- (CGPathRef)getPath; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGPattern.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGPattern.h new file mode 100644 index 0000000..87f5290 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGPattern.h @@ -0,0 +1,22 @@ + +#import "RNSVGGroup.h" +#import "RNSVGLength.h" + +@interface RNSVGPattern : RNSVGGroup + +@property (nonatomic, strong) RNSVGLength *x; +@property (nonatomic, strong) RNSVGLength *y; +@property (nonatomic, strong) RNSVGLength *patternwidth; +@property (nonatomic, strong) RNSVGLength *patternheight; +@property (nonatomic, assign) RNSVGUnits patternUnits; +@property (nonatomic, assign) RNSVGUnits patternContentUnits; +@property (nonatomic, assign) CGAffineTransform patternTransform; + +@property (nonatomic, assign) CGFloat minX; +@property (nonatomic, assign) CGFloat minY; +@property (nonatomic, assign) CGFloat vbWidth; +@property (nonatomic, assign) CGFloat vbHeight; +@property (nonatomic, strong) NSString *align; +@property (nonatomic, assign) RNSVGVBMOS meetOrSlice; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGPatternManager.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGPatternManager.h new file mode 100644 index 0000000..05d546b --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGPatternManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGGroupManager.h" + +@interface RNSVGPatternManager : RNSVGGroupManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGPropHelper.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGPropHelper.h new file mode 100644 index 0000000..ce89239 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGPropHelper.h @@ -0,0 +1,22 @@ +#import +#import +#import "RNSVGLength.h" + +#ifndef RNSVGPropHelper_h +#define RNSVGPropHelper_h + +@interface RNSVGPropHelper : NSObject + ++ (CGFloat) fromRelativeWithNSString:(NSString *)length + relative:(CGFloat)relative + fontSize:(CGFloat)fontSize; + ++ (CGFloat) fromRelative:(RNSVGLength*)length + relative:(CGFloat)relative + fontSize:(CGFloat)fontSize; + ++ (CGFloat)fromRelative:(RNSVGLength*)length + relative:(CGFloat)relative; +@end + +#endif diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGRadialGradient.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGRadialGradient.h new file mode 100644 index 0000000..deb8e03 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGRadialGradient.h @@ -0,0 +1,24 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGNode.h" +#import "RNSVGLength.h" + +@interface RNSVGRadialGradient : RNSVGNode + +@property (nonatomic, strong) RNSVGLength *fx; +@property (nonatomic, strong) RNSVGLength *fy; +@property (nonatomic, strong) RNSVGLength *rx; +@property (nonatomic, strong) RNSVGLength *ry; +@property (nonatomic, strong) RNSVGLength *cx; +@property (nonatomic, strong) RNSVGLength *cy; +@property (nonatomic, copy) NSArray *gradient; +@property (nonatomic, assign) RNSVGUnits gradientUnits; +@property (nonatomic, assign) CGAffineTransform gradientTransform; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGRadialGradientManager.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGRadialGradientManager.h new file mode 100644 index 0000000..60c6055 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGRadialGradientManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGNodeManager.h" + +@interface RNSVGRadialGradientManager : RNSVGNodeManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGRect.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGRect.h new file mode 100644 index 0000000..04eea2c --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGRect.h @@ -0,0 +1,22 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +#import "RNSVGPath.h" + +@interface RNSVGRect : RNSVGRenderable + +@property (nonatomic, strong) RNSVGLength* x; +@property (nonatomic, strong) RNSVGLength* y; +@property (nonatomic, strong) RNSVGLength* rectwidth; +@property (nonatomic, strong) RNSVGLength* rectheight; +@property (nonatomic, strong) RNSVGLength* rx; +@property (nonatomic, strong) RNSVGLength* ry; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGRectManager.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGRectManager.h new file mode 100644 index 0000000..fd16811 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGRectManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGRenderableManager.h" + +@interface RNSVGRectManager : RNSVGRenderableManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGRenderable.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGRenderable.h new file mode 100644 index 0000000..7ae0489 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGRenderable.h @@ -0,0 +1,43 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +#import "RNSVGBrush.h" +#import "RNSVGCGFCRule.h" +#import "RNSVGNode.h" +#import "RNSVGLength.h" +#import "RNSVGVectorEffect.h" + +@interface RNSVGRenderable : RNSVGNode + +@property (class) RNSVGRenderable *contextElement; +@property (nonatomic, strong) RNSVGBrush *fill; +@property (nonatomic, assign) CGFloat fillOpacity; +@property (nonatomic, assign) RNSVGCGFCRule fillRule; +@property (nonatomic, strong) RNSVGBrush *stroke; +@property (nonatomic, assign) CGFloat strokeOpacity; +@property (nonatomic, strong) RNSVGLength *strokeWidth; +@property (nonatomic, assign) CGLineCap strokeLinecap; +@property (nonatomic, assign) CGLineJoin strokeLinejoin; +@property (nonatomic, assign) CGFloat strokeMiterlimit; +@property (nonatomic, strong) NSArray *strokeDasharray; +@property (nonatomic, assign) CGFloat strokeDashoffset; +@property (nonatomic, assign) RNSVGVectorEffect vectorEffect; +@property (nonatomic, copy) NSArray *propList; +@property (nonatomic, assign) CGPathRef hitArea; + +- (void)setHitArea:(CGPathRef)path; + +- (NSArray *)getAttributeList; + +- (void)mergeProperties:(__kindof RNSVGRenderable *)target; + +- (void)resetProperties; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGRenderableManager.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGRenderableManager.h new file mode 100644 index 0000000..1a9eea7 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGRenderableManager.h @@ -0,0 +1,16 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGNodeManager.h" +#import "RNSVGRenderable.h" + +@interface RNSVGRenderableManager : RNSVGNodeManager + +- (RNSVGRenderable *)node; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGSolidColorBrush.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGSolidColorBrush.h new file mode 100644 index 0000000..6e12929 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGSolidColorBrush.h @@ -0,0 +1,15 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGBrush.h" + +@interface RNSVGSolidColorBrush : RNSVGBrush + +- (instancetype)initWithNumber:(NSNumber *)number; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGSvgView.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGSvgView.h new file mode 100644 index 0000000..6510e1b --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGSvgView.h @@ -0,0 +1,70 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import +#import "RNSVGPainter.h" +#import "RNSVGContainer.h" +#import "RNSVGVBMOS.h" + +@class RNSVGNode; + +@interface RNSVGSvgView : UIView + +@property (nonatomic, strong) RNSVGLength *bbWidth; +@property (nonatomic, strong) RNSVGLength *bbHeight; +@property (nonatomic, assign) CGFloat minX; +@property (nonatomic, assign) CGFloat minY; +@property (nonatomic, assign) CGFloat vbWidth; +@property (nonatomic, assign) CGFloat vbHeight; +@property (nonatomic, strong) NSString *align; +@property (nonatomic, assign) RNSVGVBMOS meetOrSlice; +@property (nonatomic, assign) BOOL responsible; +@property (nonatomic, assign) BOOL active; +@property (nonatomic, assign) CGRect boundingBox; +@property (nonatomic, assign) CGAffineTransform initialCTM; +@property (nonatomic, assign) CGAffineTransform invInitialCTM; +@property (nonatomic, assign) CGAffineTransform viewBoxTransform; + + + +/** + * define content as clipPath template. + */ +- (void)defineClipPath:(__kindof RNSVGNode *)clipPath clipPathName:(NSString *)clipPathName; + +- (RNSVGNode *)getDefinedClipPath:(NSString *)clipPathName; + +- (void)defineTemplate:(__kindof RNSVGNode *)template templateName:(NSString *)templateName; + +- (RNSVGNode *)getDefinedTemplate:(NSString *)templateName; + +- (void)definePainter:(RNSVGPainter *)painter painterName:(NSString *)painterName; + +- (RNSVGPainter *)getDefinedPainter:(NSString *)painterName; + +- (void)defineMarker:(RNSVGNode *)marker markerName:(NSString *)markerName; + +- (RNSVGNode *)getDefinedMarker:(NSString *)markerName; + +- (void)defineMask:(RNSVGNode *)mask maskName:(NSString *)maskName; + +- (RNSVGNode *)getDefinedMask:(NSString *)maskName; + +- (NSString *)getDataURL; + +- (NSString *)getDataURLwithBounds:(CGRect)bounds; + +- (CGRect)getContextBounds; + +- (void)drawRect:(CGRect)rect; + +- (void)drawToContext:(CGContextRef)context withRect:(CGRect)rect; + +- (CGAffineTransform)getViewBoxTransform; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGSvgViewManager.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGSvgViewManager.h new file mode 100644 index 0000000..adbb664 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGSvgViewManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +@interface RNSVGSvgViewManager : RCTViewManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGSymbol.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGSymbol.h new file mode 100644 index 0000000..b9297b2 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGSymbol.h @@ -0,0 +1,26 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGGroup.h" + +/** + * RNSVG defination are implemented as abstract UIViews for all elements inside Defs. + */ + +@interface RNSVGSymbol : RNSVGGroup + +@property (nonatomic, assign) CGFloat minX; +@property (nonatomic, assign) CGFloat minY; +@property (nonatomic, assign) CGFloat vbWidth; +@property (nonatomic, assign) CGFloat vbHeight; +@property (nonatomic, strong) NSString *align; +@property (nonatomic, assign) RNSVGVBMOS meetOrSlice; + +- (void)renderSymbolTo:(CGContextRef)context width:(CGFloat)width height:(CGFloat)height; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGSymbolManager.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGSymbolManager.h new file mode 100644 index 0000000..6001344 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGSymbolManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGNodeManager.h" + +@interface RNSVGSymbolManager : RNSVGNodeManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGTSpan.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGTSpan.h new file mode 100644 index 0000000..9b7509f --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGTSpan.h @@ -0,0 +1,17 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ +#import +#import +#import +#import "RNSVGText.h" + +@interface RNSVGTSpan : RNSVGText + +@property (nonatomic, strong) NSString *content; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGTSpanManager.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGTSpanManager.h new file mode 100644 index 0000000..fa4c5f0 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGTSpanManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGTextManager.h" + +@interface RNSVGTSpanManager : RNSVGTextManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGText.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGText.h new file mode 100644 index 0000000..71ec946 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGText.h @@ -0,0 +1,30 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import +#import "RNSVGGroup.h" + +@interface RNSVGText : RNSVGGroup + +@property (nonatomic, strong) RNSVGLength *inlineSize; +@property (nonatomic, strong) RNSVGLength *textLength; +@property (nonatomic, strong) NSString *baselineShift; +@property (nonatomic, strong) NSString *lengthAdjust; +@property (nonatomic, strong) NSString *alignmentBaseline; +@property (nonatomic, strong) NSArray *deltaX; +@property (nonatomic, strong) NSArray *deltaY; +@property (nonatomic, strong) NSArray *positionX; +@property (nonatomic, strong) NSArray *positionY; +@property (nonatomic, strong) NSArray *rotate; + +- (CGPathRef)getGroupPath:(CGContextRef)context; +- (CTFontRef)getFontFromContext; +- (CGFloat)getSubtreeTextChunksTotalAdvance; +- (RNSVGText*)getTextAnchorRoot; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGTextManager.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGTextManager.h new file mode 100644 index 0000000..1885846 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGTextManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGRenderableManager.h" + +@interface RNSVGTextManager : RNSVGRenderableManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGTextPath.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGTextPath.h new file mode 100644 index 0000000..820f575 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGTextPath.h @@ -0,0 +1,23 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import +#import +#import "RNSVGText.h" +#import "RNSVGLength.h" + +@interface RNSVGTextPath : RNSVGText + +@property (nonatomic, strong) NSString *href; +@property (nonatomic, strong) NSString *side; +@property (nonatomic, strong) NSString *method; +@property (nonatomic, strong) NSString *midLine; +@property (nonatomic, strong) NSString *spacing; +@property (nonatomic, strong) RNSVGLength *startOffset; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGTextPathManager.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGTextPathManager.h new file mode 100644 index 0000000..165db27 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGTextPathManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGTextManager.h" + +@interface RNSVGTextPathManager : RNSVGRenderableManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGTextProperties.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGTextProperties.h new file mode 100644 index 0000000..527ce3f --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGTextProperties.h @@ -0,0 +1,217 @@ +#import + +#ifndef RNTextProperties_h +#define RNTextProperties_h + +typedef NS_ENUM(NSInteger, RNSVGAlignmentBaseline) { + RNSVGAlignmentBaselineBaseline, + RNSVGAlignmentBaselineTextBottom, + RNSVGAlignmentBaselineAlphabetic, + RNSVGAlignmentBaselineIdeographic, + RNSVGAlignmentBaselineMiddle, + RNSVGAlignmentBaselineCentral, + RNSVGAlignmentBaselineMathematical, + RNSVGAlignmentBaselineTextTop, + RNSVGAlignmentBaselineBottom, + RNSVGAlignmentBaselineCenter, + RNSVGAlignmentBaselineTop, + /* + SVG implementations may support the following aliases in order to support legacy content: + + text-before-edge = text-top + text-after-edge = text-bottom + */ + RNSVGAlignmentBaselineTextBeforeEdge, + RNSVGAlignmentBaselineTextAfterEdge, + // SVG 1.1 + RNSVGAlignmentBaselineBeforeEdge, + RNSVGAlignmentBaselineAfterEdge, + RNSVGAlignmentBaselineHanging, + RNSVGAlignmentBaselineDEFAULT = RNSVGAlignmentBaselineBaseline +}; + +static NSString* const RNSVGAlignmentBaselineStrings[] = { + @"baseline", + @"text-bottom", + @"alphabetic", + @"ideographic", + @"middle", + @"central", + @"mathematical", + @"text-top", + @"bottom", + @"center", + @"top", + @"text-before-edge", + @"text-after-edge", + @"before-edge", + @"after-edge", + @"hanging", + @"central", + @"mathematical", + @"text-top", + @"bottom", + @"center", + @"top", + nil +}; + +NSString* RNSVGAlignmentBaselineToString( enum RNSVGAlignmentBaseline fw ); + +enum RNSVGAlignmentBaseline RNSVGAlignmentBaselineFromString( NSString* s ); + +typedef NS_ENUM(NSInteger, RNSVGFontStyle) { + RNSVGFontStyleNormal, + RNSVGFontStyleItalic, + RNSVGFontStyleOblique, + RNSVGFontStyleDEFAULT = RNSVGFontStyleNormal, +}; + +static NSString* const RNSVGFontStyleStrings[] = {@"normal", @"italic", @"oblique", nil}; + +NSString* RNSVGFontStyleToString( enum RNSVGFontStyle fw ); + +enum RNSVGFontStyle RNSVGFontStyleFromString( NSString* s ); + +typedef NS_ENUM(NSInteger, RNSVGFontVariantLigatures) { + RNSVGFontVariantLigaturesNormal, + RNSVGFontVariantLigaturesNone, + RNSVGFontVariantLigaturesDEFAULT = RNSVGFontVariantLigaturesNormal, +}; + +static NSString* const RNSVGFontVariantLigaturesStrings[] = {@"normal", @"none", nil}; + +NSString* RNSVGFontVariantLigaturesToString( enum RNSVGFontVariantLigatures fw ); + +enum RNSVGFontVariantLigatures RNSVGFontVariantLigaturesFromString( NSString* s ); + +typedef NS_ENUM(NSInteger, RNSVGFontWeight) { + // Absolute + RNSVGFontWeightNormal, + RNSVGFontWeightBold, + RNSVGFontWeight100, + RNSVGFontWeight200, + RNSVGFontWeight300, + RNSVGFontWeight400, + RNSVGFontWeight500, + RNSVGFontWeight600, + RNSVGFontWeight700, + RNSVGFontWeight800, + RNSVGFontWeight900, + // Relative + RNSVGFontWeightBolder, + RNSVGFontWeightLighter, + RNSVGFontWeightDEFAULT = RNSVGFontWeightNormal, +}; + +static NSString* const RNSVGFontWeightStrings[] = {@"normal", @"bold", @"100", @"200", @"300", @"400", @"500", @"600", @"700", @"800", @"900", @"bolder", @"lighter", nil}; + +static int const RNSVGAbsoluteFontWeights[] = {400, 700, 100, 200, 300, 400, 500, 600, 700, 800, 900}; + +static RNSVGFontWeight const RNSVGFontWeights[] = { + RNSVGFontWeight100, + RNSVGFontWeight100, + RNSVGFontWeight200, + RNSVGFontWeight300, + RNSVGFontWeightNormal, + RNSVGFontWeight500, + RNSVGFontWeight600, + RNSVGFontWeightBold, + RNSVGFontWeight800, + RNSVGFontWeight900, + RNSVGFontWeight900 +}; + +NSString* RNSVGFontWeightToString( enum RNSVGFontWeight fw ); + +enum RNSVGFontWeight RNSVGFontWeightFromString( NSString* s ); + +typedef NS_ENUM(NSInteger, RNSVGTextAnchor) { + RNSVGTextAnchorStart, + RNSVGTextAnchorMiddle, + RNSVGTextAnchorEnd, + RNSVGTextAnchorDEFAULT = RNSVGTextAnchorStart, +}; + +static NSString* const RNSVGTextAnchorStrings[] = {@"start", @"middle", @"end", nil}; + +NSString* RNSVGTextAnchorToString( enum RNSVGTextAnchor fw ); + +enum RNSVGTextAnchor RNSVGTextAnchorFromString( NSString* s ); + +typedef NS_ENUM(NSInteger, RNSVGTextDecoration) { + RNSVGTextDecorationNone, + RNSVGTextDecorationUnderline, + RNSVGTextDecorationOverline, + RNSVGTextDecorationLineThrough, + RNSVGTextDecorationBlink, + RNSVGTextDecorationDEFAULT = RNSVGTextDecorationNone, +}; + +static NSString* const RNSVGTextDecorationStrings[] = {@"None", @"Underline", @"Overline", @"LineThrough", @"Blink", nil}; + +NSString* RNSVGTextDecorationToString( enum RNSVGTextDecoration fw ); + +enum RNSVGTextDecoration RNSVGTextDecorationFromString( NSString* s ); + +typedef NS_ENUM(NSInteger, RNSVGTextLengthAdjust) { + RNSVGTextLengthAdjustSpacing, + RNSVGTextLengthAdjustSpacingAndGlyphs, + RNSVGTextLengthAdjustDEFAULT = RNSVGTextLengthAdjustSpacing, +}; + +static NSString* const RNSVGTextLengthAdjustStrings[] = {@"spacing", @"spacingAndGlyphs", nil}; + +NSString* RNSVGTextLengthAdjustToString( enum RNSVGTextLengthAdjust fw ); + +enum RNSVGTextLengthAdjust RNSVGTextLengthAdjustFromString( NSString* s ); + +typedef NS_ENUM(NSInteger, RNSVGTextPathMethod) { + RNSVGTextPathMethodAlign, + RNSVGTextPathMethodStretch, + RNSVGTextPathMethodDEFAULT = RNSVGTextPathMethodAlign, +}; + +static NSString* const RNSVGTextPathMethodStrings[] = {@"align", @"stretch", nil}; + +NSString* RNSVGTextPathMethodToString( enum RNSVGTextPathMethod fw ); + +enum RNSVGTextPathMethod RNSVGTextPathMethodFromString( NSString* s ); + +typedef NS_ENUM(NSInteger, RNSVGTextPathMidLine) { + RNSVGTextPathMidLineSharp, + RNSVGTextPathMidLineSmooth, + RNSVGTextPathMidLineDEFAULT = RNSVGTextPathMidLineSharp, +}; + +static NSString* const RNSVGTextPathMidLineStrings[] = {@"sharp", @"smooth", nil}; + +NSString* RNSVGTextPathMidLineToString( enum RNSVGTextPathMidLine fw ); + +enum RNSVGTextPathMidLine RNSVGTextPathMidLineFromString( NSString* s ); + +typedef NS_ENUM(NSInteger, RNSVGTextPathSide) { + RNSVGTextPathSideLeft, + RNSVGTextPathSideRight, + RNSVGTextPathSideDEFAULT = RNSVGTextPathSideLeft, +}; + +static NSString* const RNSVGTextPathSideStrings[] = {@"left", @"right", nil}; + +NSString* RNSVGTextPathSideToString( enum RNSVGTextPathSide fw ); + +enum RNSVGTextPathSide RNSVGTextPathSideFromString( NSString* s ); + +typedef NS_ENUM(NSInteger, RNSVGTextPathSpacing) { + RNSVGTextPathSpacingAutoSpacing, + RNSVGTextPathSpacingExact, + RNSVGTextPathSpacingDEFAULT = RNSVGTextPathSpacingAutoSpacing, +}; + +static NSString* const RNSVGTextPathSpacingStrings[] = {@"auto", @"exact", nil}; + +NSString* RNSVGTextPathSpacingToString( enum RNSVGTextPathSpacing fw ); + +enum RNSVGTextPathSpacing RNSVGTextPathSpacingFromString( NSString* s ); + +#endif diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGUnits.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGUnits.h new file mode 100644 index 0000000..0592bc5 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGUnits.h @@ -0,0 +1,12 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +typedef CF_ENUM(int32_t, RNSVGUnits) { + kRNSVGUnitsObjectBoundingBox, + kRNSVGUnitsUserSpaceOnUse +}; diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGUse.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGUse.h new file mode 100644 index 0000000..6d0f3dd --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGUse.h @@ -0,0 +1,23 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGRenderable.h" +#import "RNSVGLength.h" + +/** + * RNSVG defination are implemented as abstract UIViews for all elements inside Defs. + */ + +@interface RNSVGUse : RNSVGRenderable + +@property (nonatomic, strong) NSString *href; +@property (nonatomic, strong) RNSVGLength *x; +@property (nonatomic, strong) RNSVGLength *y; +@property (nonatomic, strong) RNSVGLength *usewidth; +@property (nonatomic, strong) RNSVGLength *useheight; +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGUseManager.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGUseManager.h new file mode 100644 index 0000000..aa6bc34 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGUseManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "RNSVGRenderableManager.h" + +@interface RNSVGUseManager : RNSVGRenderableManager + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGVBMOS.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGVBMOS.h new file mode 100644 index 0000000..24c404a --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGVBMOS.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +typedef CF_ENUM(int32_t, RNSVGVBMOS) { + kRNSVGVBMOSMeet, + kRNSVGVBMOSSlice, + kRNSVGVBMOSNone +}; diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGVectorEffect.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGVectorEffect.h new file mode 100644 index 0000000..0ab1703 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGVectorEffect.h @@ -0,0 +1,14 @@ +/** + * Copyright (c) 2015-present, react-native-community. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +typedef CF_ENUM(int32_t, RNSVGVectorEffect) { + kRNSVGVectorEffectDefault, + kRNSVGVectorEffectNonScalingStroke, + kRNSVGVectorEffectInherit, + kRNSVGVectorEffectUri +}; diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGViewBox.h b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGViewBox.h new file mode 100644 index 0000000..746ae79 --- /dev/null +++ b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/Headers/RNSVGViewBox.h @@ -0,0 +1,16 @@ +/** + * Copyright (c) 2015-present, Horcrux. + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import +#import "RNSVGVBMOS.h" + +@interface RNSVGViewBox : NSObject + ++ (CGAffineTransform)getTransform:(CGRect)vbRect eRect:(CGRect)eRect align:(NSString *)align meetOrSlice:(RNSVGVBMOS)meetOrSlice; + +@end diff --git a/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/libRNSVG.a b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/libRNSVG.a new file mode 100644 index 0000000..717ade1 Binary files /dev/null and b/Frameworks/RNSVG.xcframework/ios-arm64_x86_64-simulator/libRNSVG.a differ diff --git a/Frameworks/RNScreens.xcframework/Info.plist b/Frameworks/RNScreens.xcframework/Info.plist new file mode 100644 index 0000000..6b3b062 --- /dev/null +++ b/Frameworks/RNScreens.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libRNScreens.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libRNScreens.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libRNScreens.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libRNScreens.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSFullWindowOverlay.h b/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSFullWindowOverlay.h new file mode 100644 index 0000000..3ed1743 --- /dev/null +++ b/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSFullWindowOverlay.h @@ -0,0 +1,15 @@ +#import +#import +#import + +@interface RNSFullWindowOverlayManager : RCTViewManager + +@end + +@interface RNSFullWindowOverlayContainer : UIView + +@end + +@interface RNSFullWindowOverlay : RCTView + +@end diff --git a/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreen.h b/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreen.h new file mode 100644 index 0000000..95353c0 --- /dev/null +++ b/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreen.h @@ -0,0 +1,126 @@ +#import +#import +#import + +#import "RNSScreenContainer.h" + +typedef NS_ENUM(NSInteger, RNSScreenStackPresentation) { + RNSScreenStackPresentationPush, + RNSScreenStackPresentationModal, + RNSScreenStackPresentationTransparentModal, + RNSScreenStackPresentationContainedModal, + RNSScreenStackPresentationContainedTransparentModal, + RNSScreenStackPresentationFullScreenModal, + RNSScreenStackPresentationFormSheet +}; + +typedef NS_ENUM(NSInteger, RNSScreenStackAnimation) { + RNSScreenStackAnimationDefault, + RNSScreenStackAnimationNone, + RNSScreenStackAnimationFade, + RNSScreenStackAnimationFadeFromBottom, + RNSScreenStackAnimationFlip, + RNSScreenStackAnimationSlideFromBottom, + RNSScreenStackAnimationSimplePush, +}; + +typedef NS_ENUM(NSInteger, RNSScreenReplaceAnimation) { + RNSScreenReplaceAnimationPop, + RNSScreenReplaceAnimationPush, +}; + +typedef NS_ENUM(NSInteger, RNSScreenSwipeDirection) { + RNSScreenSwipeDirectionHorizontal, + RNSScreenSwipeDirectionVertical, +}; + +typedef NS_ENUM(NSInteger, RNSActivityState) { + RNSActivityStateInactive = 0, + RNSActivityStateTransitioningOrBelowTop = 1, + RNSActivityStateOnTop = 2 +}; + +typedef NS_ENUM(NSInteger, RNSStatusBarStyle) { + RNSStatusBarStyleAuto, + RNSStatusBarStyleInverted, + RNSStatusBarStyleLight, + RNSStatusBarStyleDark, +}; + +typedef NS_ENUM(NSInteger, RNSWindowTrait) { + RNSWindowTraitStyle, + RNSWindowTraitAnimation, + RNSWindowTraitHidden, + RNSWindowTraitOrientation, + RNSWindowTraitHomeIndicatorHidden, +}; + +@interface RCTConvert (RNSScreen) + ++ (RNSScreenStackPresentation)RNSScreenStackPresentation:(id)json; ++ (RNSScreenStackAnimation)RNSScreenStackAnimation:(id)json; + +#if !TARGET_OS_TV ++ (RNSStatusBarStyle)RNSStatusBarStyle:(id)json; ++ (UIInterfaceOrientationMask)UIInterfaceOrientationMask:(id)json; +#endif + +@end + +@interface RNSScreen : UIViewController + +- (instancetype)initWithView:(UIView *)view; +- (void)notifyFinishTransitioning; +- (UIViewController *)findChildVCForConfigAndTrait:(RNSWindowTrait)trait includingModals:(BOOL)includingModals; + +@end + +@interface RNSScreenManager : RCTViewManager + +@end + +@interface RNSScreenView : RCTView + +@property (nonatomic, copy) RCTDirectEventBlock onAppear; +@property (nonatomic, copy) RCTDirectEventBlock onDisappear; +@property (nonatomic, copy) RCTDirectEventBlock onDismissed; +@property (nonatomic, copy) RCTDirectEventBlock onWillAppear; +@property (nonatomic, copy) RCTDirectEventBlock onWillDisappear; +@property (nonatomic, copy) RCTDirectEventBlock onNativeDismissCancelled; +@property (nonatomic, copy) RCTDirectEventBlock onTransitionProgress; + +@property (weak, nonatomic) UIView *reactSuperview; +@property (nonatomic, retain) UIViewController *controller; +@property (nonatomic, readonly) BOOL dismissed; +@property (nonatomic) int activityState; +@property (nonatomic) BOOL gestureEnabled; +@property (nonatomic) RNSScreenStackAnimation stackAnimation; +@property (nonatomic) RNSScreenStackPresentation stackPresentation; +@property (nonatomic) RNSScreenReplaceAnimation replaceAnimation; +@property (nonatomic) RNSScreenSwipeDirection swipeDirection; +@property (nonatomic) BOOL preventNativeDismiss; +@property (nonatomic) BOOL hasOrientationSet; +@property (nonatomic) BOOL hasStatusBarStyleSet; +@property (nonatomic) BOOL hasStatusBarAnimationSet; +@property (nonatomic) BOOL hasStatusBarHiddenSet; +@property (nonatomic) BOOL hasHomeIndicatorHiddenSet; +@property (nonatomic) BOOL customAnimationOnSwipe; +@property (nonatomic) BOOL fullScreenSwipeEnabled; +@property (nonatomic, retain) NSNumber *transitionDuration; + +#if !TARGET_OS_TV +@property (nonatomic) RNSStatusBarStyle statusBarStyle; +@property (nonatomic) UIStatusBarAnimation statusBarAnimation; +@property (nonatomic) BOOL statusBarHidden; +@property (nonatomic) UIInterfaceOrientationMask screenOrientation; +@property (nonatomic) BOOL homeIndicatorHidden; +#endif + +- (void)notifyFinishTransitioning; +- (void)notifyTransitionProgress:(double)progress closing:(BOOL)closing goingForward:(BOOL)goingForward; + +@end + +@interface UIView (RNSScreen) +- (UIViewController *)parentViewController; +@end diff --git a/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreenComponentView.h b/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreenComponentView.h new file mode 100644 index 0000000..4fd3044 --- /dev/null +++ b/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreenComponentView.h @@ -0,0 +1,23 @@ +#import + +#import +#import "RNSScreenController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RNSScreenComponentView : RCTViewComponentView + +@property (weak, nonatomic) UIView *reactSuperview; +@property (weak, nonatomic) UIView *config; +@property (nonatomic, retain) RNSScreenController *controller; + +- (void)notifyWillAppear; +- (void)notifyWillDisappear; +- (void)notifyAppear; +- (void)notifyDisappear; +- (void)updateBounds; +- (void)notifyDismissedWithCount:(int)dismissCount; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreenContainer.h b/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreenContainer.h new file mode 100644 index 0000000..0493e81 --- /dev/null +++ b/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreenContainer.h @@ -0,0 +1,31 @@ +#import + +@protocol RNSScreenContainerDelegate + +- (void)markChildUpdated; +- (void)updateContainer; + +@end + +@protocol RNScreensViewControllerDelegate + +@end + +@interface RNScreensViewController : UIViewController + +- (UIViewController *)findActiveChildVC; + +@end + +@interface RNSScreenContainerManager : RCTViewManager + +@end + +@interface RNSScreenContainerView : UIView + +@property (nonatomic, retain) UIViewController *controller; +@property (nonatomic, retain) NSMutableArray *reactSubviews; + +- (void)maybeDismissVC; + +@end diff --git a/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreenController.h b/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreenController.h new file mode 100644 index 0000000..889a493 --- /dev/null +++ b/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreenController.h @@ -0,0 +1,10 @@ +#import + +@interface RNSScreenController : UIViewController + +- (instancetype)initWithView:(UIView *)view; +- (void)takeSnapshot; +- (void)setViewToSnapshot; +- (void)resetViewToScreen; + +@end diff --git a/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreenNavigationContainer.h b/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreenNavigationContainer.h new file mode 100644 index 0000000..bec5abe --- /dev/null +++ b/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreenNavigationContainer.h @@ -0,0 +1,16 @@ +#import + +#import "RNSScreenContainer.h" +#import "RNSScreenStack.h" + +@interface RNScreensContainerNavigationController : RNScreensNavigationController + +@end + +@interface RNSScreenNavigationContainerView : RNSScreenContainerView + +@end + +@interface RNSScreenNavigationContainerManager : RNSScreenContainerManager + +@end diff --git a/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreenStack.h b/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreenStack.h new file mode 100644 index 0000000..a383cd2 --- /dev/null +++ b/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreenStack.h @@ -0,0 +1,21 @@ +#import +#import + +#import "RNSScreenContainer.h" + +@interface RNScreensNavigationController : UINavigationController + +@end + +@interface RNSScreenStackView : UIView + +@property (nonatomic, copy) RCTDirectEventBlock onFinishTransitioning; + +- (void)markChildUpdated; +- (void)didUpdateChildren; + +@end + +@interface RNSScreenStackManager : RCTViewManager + +@end diff --git a/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreenStackAnimator.h b/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreenStackAnimator.h new file mode 100644 index 0000000..f96eae7 --- /dev/null +++ b/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreenStackAnimator.h @@ -0,0 +1,8 @@ +#import "RNSScreen.h" + +@interface RNSScreenStackAnimator : NSObject + +- (instancetype)initWithOperation:(UINavigationControllerOperation)operation; ++ (BOOL)isCustomAnimation:(RNSScreenStackAnimation)animation; + +@end diff --git a/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreenStackComponentView.h b/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreenStackComponentView.h new file mode 100644 index 0000000..e7b0f1a --- /dev/null +++ b/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreenStackComponentView.h @@ -0,0 +1,15 @@ +#import + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RNSScreenStackComponentView : RCTViewComponentView + +@end + +@interface RNSScreenStackView : UIView +- (instancetype)initWithComponentView:(RNSScreenStackComponentView *)component; +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreenStackHeaderConfig.h b/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreenStackHeaderConfig.h new file mode 100644 index 0000000..d3d9832 --- /dev/null +++ b/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreenStackHeaderConfig.h @@ -0,0 +1,68 @@ +#import +#import + +#import "RNSScreen.h" +#import "RNSSearchBar.h" + +@interface RNSScreenStackHeaderConfig : UIView + +@property (nonatomic, weak) RNSScreenView *screenView; + +@property (nonatomic, retain) NSString *title; +@property (nonatomic, retain) NSString *titleFontFamily; +@property (nonatomic, retain) NSNumber *titleFontSize; +@property (nonatomic, retain) NSString *titleFontWeight; +@property (nonatomic, retain) UIColor *titleColor; +@property (nonatomic, retain) NSString *backTitle; +@property (nonatomic, retain) NSString *backTitleFontFamily; +@property (nonatomic, retain) NSNumber *backTitleFontSize; +@property (nonatomic, retain) UIColor *backgroundColor; +@property (nonatomic) UIBlurEffectStyle blurEffect; +@property (nonatomic, retain) UIColor *color; +@property (nonatomic) BOOL hide; +@property (nonatomic) BOOL largeTitle; +@property (nonatomic, retain) NSString *largeTitleFontFamily; +@property (nonatomic, retain) NSNumber *largeTitleFontSize; +@property (nonatomic, retain) NSString *largeTitleFontWeight; +@property (nonatomic, retain) UIColor *largeTitleBackgroundColor; +@property (nonatomic) BOOL largeTitleHideShadow; +@property (nonatomic, retain) UIColor *largeTitleColor; +@property (nonatomic) BOOL hideBackButton; +@property (nonatomic) BOOL backButtonInCustomView; +@property (nonatomic) BOOL disableBackButtonMenu; +@property (nonatomic) BOOL hideShadow; +@property (nonatomic) BOOL translucent; +@property (nonatomic) UISemanticContentAttribute direction; + ++ (void)willShowViewController:(UIViewController *)vc + animated:(BOOL)animated + withConfig:(RNSScreenStackHeaderConfig *)config; + +@end + +@interface RNSScreenStackHeaderConfigManager : RCTViewManager + +@end + +typedef NS_ENUM(NSInteger, RNSScreenStackHeaderSubviewType) { + RNSScreenStackHeaderSubviewTypeBackButton, + RNSScreenStackHeaderSubviewTypeLeft, + RNSScreenStackHeaderSubviewTypeRight, + RNSScreenStackHeaderSubviewTypeTitle, + RNSScreenStackHeaderSubviewTypeCenter, + RNSScreenStackHeaderSubviewTypeSearchBar, +}; + +@interface RCTConvert (RNSScreenStackHeader) + ++ (RNSScreenStackHeaderSubviewType)RNSScreenStackHeaderSubviewType:(id)json; ++ (UIBlurEffectStyle)UIBlurEffectStyle:(id)json; ++ (UISemanticContentAttribute)UISemanticContentAttribute:(id)json; + +@end + +@interface RNSScreenStackHeaderSubviewManager : RCTViewManager + +@property (nonatomic) RNSScreenStackHeaderSubviewType type; + +@end diff --git a/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreenStackHeaderConfigComponentView.h b/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreenStackHeaderConfigComponentView.h new file mode 100644 index 0000000..7fd944f --- /dev/null +++ b/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreenStackHeaderConfigComponentView.h @@ -0,0 +1,42 @@ +#import + +#import + +#import "RNSScreenComponentView.h" +#import "RNSScreenStackHeaderSubviewComponentView.h" + +@interface RNSScreenStackHeaderConfigComponentView : RCTViewComponentView + +@property (nonatomic, weak) RNSScreenComponentView *screenView; +@property (nonatomic) NSMutableArray *reactSubviews; + +// Properties from props +@property (nonatomic) BOOL show; +@property (nonatomic) BOOL translucent; +@property (nonatomic) BOOL hideShadow; +@property (nonatomic, retain) NSString *title; +@property (nonatomic, retain) NSString *titleFontFamily; +@property (nonatomic, retain) NSNumber *titleFontSize; +@property (nonatomic, retain) NSString *titleFontWeight; +@property (nonatomic, retain) UIColor *titleColor; +@property (nonatomic) BOOL largeTitle; +@property (nonatomic, retain) NSString *largeTitleFontFamily; +@property (nonatomic, retain) NSNumber *largeTitleFontSize; +@property (nonatomic, retain) NSString *largeTitleFontWeight; +@property (nonatomic, retain) UIColor *largeTitleBackgroundColor; +@property (nonatomic) BOOL largeTitleHideShadow; +@property (nonatomic, retain) UIColor *largeTitleColor; +@property (nonatomic, retain) UIColor *backgroundColor; +@property (nonatomic, retain) UIColor *color; +@property (nonatomic) UISemanticContentAttribute direction; +@property (nonatomic, retain) NSString *backTitle; +@property (nonatomic, retain) NSString *backTitleFontFamily; +@property (nonatomic, retain) NSNumber *backTitleFontSize; +@property (nonatomic) BOOL disableBackButtonMenu; +@property (nonatomic) BOOL hideBackButton; + ++ (void)willShowViewController:(UIViewController *)vc + animated:(BOOL)animated + withConfig:(RNSScreenStackHeaderConfigComponentView *)config; + +@end diff --git a/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreenStackHeaderSubviewComponentView.h b/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreenStackHeaderSubviewComponentView.h new file mode 100644 index 0000000..eaaa920 --- /dev/null +++ b/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreenStackHeaderSubviewComponentView.h @@ -0,0 +1,14 @@ +#import + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RNSScreenStackHeaderSubviewComponentView : RCTViewComponentView + +@property (nonatomic) facebook::react::RNSScreenStackHeaderSubviewType type; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreenWindowTraits.h b/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreenWindowTraits.h new file mode 100644 index 0000000..1970b9d --- /dev/null +++ b/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSScreenWindowTraits.h @@ -0,0 +1,26 @@ +#import "RNSScreen.h" + +@interface RNSScreenWindowTraits : NSObject + ++ (void)updateWindowTraits; + +#if !TARGET_OS_TV ++ (void)assertViewControllerBasedStatusBarAppearenceSet; +#endif ++ (void)updateStatusBarAppearance; ++ (void)enforceDesiredDeviceOrientation; ++ (void)updateHomeIndicatorAutoHidden; + +#if !TARGET_OS_TV ++ (UIStatusBarStyle)statusBarStyleForRNSStatusBarStyle:(RNSStatusBarStyle)statusBarStyle; ++ (UIInterfaceOrientation)defaultOrientationForOrientationMask:(UIInterfaceOrientationMask)orientationMask; ++ (UIInterfaceOrientation)interfaceOrientationFromDeviceOrientation:(UIDeviceOrientation)deviceOrientation; ++ (UIInterfaceOrientationMask)maskFromOrientation:(UIInterfaceOrientation)orientation; +#endif + ++ (BOOL)shouldAskScreensForTrait:(RNSWindowTrait)trait + includingModals:(BOOL)includingModals + inViewController:(UIViewController *)vc; ++ (BOOL)shouldAskScreensForScreenOrientationInViewController:(UIViewController *)vc; + +@end diff --git a/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSSearchBar.h b/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSSearchBar.h new file mode 100644 index 0000000..bf6476e --- /dev/null +++ b/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSSearchBar.h @@ -0,0 +1,22 @@ +#import + +#import +#import +#import + +@interface RNSSearchBar : UIView + +@property (nonatomic) BOOL hideWhenScrolling; + +@property (nonatomic, retain) UISearchController *controller; +@property (nonatomic, copy) RCTBubblingEventBlock onChangeText; +@property (nonatomic, copy) RCTBubblingEventBlock onCancelButtonPress; +@property (nonatomic, copy) RCTBubblingEventBlock onSearchButtonPress; +@property (nonatomic, copy) RCTBubblingEventBlock onFocus; +@property (nonatomic, copy) RCTBubblingEventBlock onBlur; + +@end + +@interface RNSSearchBarManager : RCTViewManager + +@end diff --git a/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSUIBarButtonItem.h b/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSUIBarButtonItem.h new file mode 100644 index 0000000..e35f290 --- /dev/null +++ b/Frameworks/RNScreens.xcframework/ios-arm64/Headers/RNSUIBarButtonItem.h @@ -0,0 +1,5 @@ +@interface RNSUIBarButtonItem : UIBarButtonItem + +@property (nonatomic) BOOL menuHidden; + +@end diff --git a/Frameworks/RNScreens.xcframework/ios-arm64/Headers/UIViewController+RNScreens.h b/Frameworks/RNScreens.xcframework/ios-arm64/Headers/UIViewController+RNScreens.h new file mode 100644 index 0000000..4c1c2d0 --- /dev/null +++ b/Frameworks/RNScreens.xcframework/ios-arm64/Headers/UIViewController+RNScreens.h @@ -0,0 +1,9 @@ +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface UIViewController (RNScreens) + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/RNScreens.xcframework/ios-arm64/Headers/UIWindow+RNScreens.h b/Frameworks/RNScreens.xcframework/ios-arm64/Headers/UIWindow+RNScreens.h new file mode 100644 index 0000000..77484b7 --- /dev/null +++ b/Frameworks/RNScreens.xcframework/ios-arm64/Headers/UIWindow+RNScreens.h @@ -0,0 +1,9 @@ +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface UIWindow (RNScreens) + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/RNScreens.xcframework/ios-arm64/libRNScreens.a b/Frameworks/RNScreens.xcframework/ios-arm64/libRNScreens.a new file mode 100644 index 0000000..82db589 Binary files /dev/null and b/Frameworks/RNScreens.xcframework/ios-arm64/libRNScreens.a differ diff --git a/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSFullWindowOverlay.h b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSFullWindowOverlay.h new file mode 100644 index 0000000..3ed1743 --- /dev/null +++ b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSFullWindowOverlay.h @@ -0,0 +1,15 @@ +#import +#import +#import + +@interface RNSFullWindowOverlayManager : RCTViewManager + +@end + +@interface RNSFullWindowOverlayContainer : UIView + +@end + +@interface RNSFullWindowOverlay : RCTView + +@end diff --git a/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreen.h b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreen.h new file mode 100644 index 0000000..95353c0 --- /dev/null +++ b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreen.h @@ -0,0 +1,126 @@ +#import +#import +#import + +#import "RNSScreenContainer.h" + +typedef NS_ENUM(NSInteger, RNSScreenStackPresentation) { + RNSScreenStackPresentationPush, + RNSScreenStackPresentationModal, + RNSScreenStackPresentationTransparentModal, + RNSScreenStackPresentationContainedModal, + RNSScreenStackPresentationContainedTransparentModal, + RNSScreenStackPresentationFullScreenModal, + RNSScreenStackPresentationFormSheet +}; + +typedef NS_ENUM(NSInteger, RNSScreenStackAnimation) { + RNSScreenStackAnimationDefault, + RNSScreenStackAnimationNone, + RNSScreenStackAnimationFade, + RNSScreenStackAnimationFadeFromBottom, + RNSScreenStackAnimationFlip, + RNSScreenStackAnimationSlideFromBottom, + RNSScreenStackAnimationSimplePush, +}; + +typedef NS_ENUM(NSInteger, RNSScreenReplaceAnimation) { + RNSScreenReplaceAnimationPop, + RNSScreenReplaceAnimationPush, +}; + +typedef NS_ENUM(NSInteger, RNSScreenSwipeDirection) { + RNSScreenSwipeDirectionHorizontal, + RNSScreenSwipeDirectionVertical, +}; + +typedef NS_ENUM(NSInteger, RNSActivityState) { + RNSActivityStateInactive = 0, + RNSActivityStateTransitioningOrBelowTop = 1, + RNSActivityStateOnTop = 2 +}; + +typedef NS_ENUM(NSInteger, RNSStatusBarStyle) { + RNSStatusBarStyleAuto, + RNSStatusBarStyleInverted, + RNSStatusBarStyleLight, + RNSStatusBarStyleDark, +}; + +typedef NS_ENUM(NSInteger, RNSWindowTrait) { + RNSWindowTraitStyle, + RNSWindowTraitAnimation, + RNSWindowTraitHidden, + RNSWindowTraitOrientation, + RNSWindowTraitHomeIndicatorHidden, +}; + +@interface RCTConvert (RNSScreen) + ++ (RNSScreenStackPresentation)RNSScreenStackPresentation:(id)json; ++ (RNSScreenStackAnimation)RNSScreenStackAnimation:(id)json; + +#if !TARGET_OS_TV ++ (RNSStatusBarStyle)RNSStatusBarStyle:(id)json; ++ (UIInterfaceOrientationMask)UIInterfaceOrientationMask:(id)json; +#endif + +@end + +@interface RNSScreen : UIViewController + +- (instancetype)initWithView:(UIView *)view; +- (void)notifyFinishTransitioning; +- (UIViewController *)findChildVCForConfigAndTrait:(RNSWindowTrait)trait includingModals:(BOOL)includingModals; + +@end + +@interface RNSScreenManager : RCTViewManager + +@end + +@interface RNSScreenView : RCTView + +@property (nonatomic, copy) RCTDirectEventBlock onAppear; +@property (nonatomic, copy) RCTDirectEventBlock onDisappear; +@property (nonatomic, copy) RCTDirectEventBlock onDismissed; +@property (nonatomic, copy) RCTDirectEventBlock onWillAppear; +@property (nonatomic, copy) RCTDirectEventBlock onWillDisappear; +@property (nonatomic, copy) RCTDirectEventBlock onNativeDismissCancelled; +@property (nonatomic, copy) RCTDirectEventBlock onTransitionProgress; + +@property (weak, nonatomic) UIView *reactSuperview; +@property (nonatomic, retain) UIViewController *controller; +@property (nonatomic, readonly) BOOL dismissed; +@property (nonatomic) int activityState; +@property (nonatomic) BOOL gestureEnabled; +@property (nonatomic) RNSScreenStackAnimation stackAnimation; +@property (nonatomic) RNSScreenStackPresentation stackPresentation; +@property (nonatomic) RNSScreenReplaceAnimation replaceAnimation; +@property (nonatomic) RNSScreenSwipeDirection swipeDirection; +@property (nonatomic) BOOL preventNativeDismiss; +@property (nonatomic) BOOL hasOrientationSet; +@property (nonatomic) BOOL hasStatusBarStyleSet; +@property (nonatomic) BOOL hasStatusBarAnimationSet; +@property (nonatomic) BOOL hasStatusBarHiddenSet; +@property (nonatomic) BOOL hasHomeIndicatorHiddenSet; +@property (nonatomic) BOOL customAnimationOnSwipe; +@property (nonatomic) BOOL fullScreenSwipeEnabled; +@property (nonatomic, retain) NSNumber *transitionDuration; + +#if !TARGET_OS_TV +@property (nonatomic) RNSStatusBarStyle statusBarStyle; +@property (nonatomic) UIStatusBarAnimation statusBarAnimation; +@property (nonatomic) BOOL statusBarHidden; +@property (nonatomic) UIInterfaceOrientationMask screenOrientation; +@property (nonatomic) BOOL homeIndicatorHidden; +#endif + +- (void)notifyFinishTransitioning; +- (void)notifyTransitionProgress:(double)progress closing:(BOOL)closing goingForward:(BOOL)goingForward; + +@end + +@interface UIView (RNSScreen) +- (UIViewController *)parentViewController; +@end diff --git a/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreenComponentView.h b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreenComponentView.h new file mode 100644 index 0000000..4fd3044 --- /dev/null +++ b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreenComponentView.h @@ -0,0 +1,23 @@ +#import + +#import +#import "RNSScreenController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RNSScreenComponentView : RCTViewComponentView + +@property (weak, nonatomic) UIView *reactSuperview; +@property (weak, nonatomic) UIView *config; +@property (nonatomic, retain) RNSScreenController *controller; + +- (void)notifyWillAppear; +- (void)notifyWillDisappear; +- (void)notifyAppear; +- (void)notifyDisappear; +- (void)updateBounds; +- (void)notifyDismissedWithCount:(int)dismissCount; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreenContainer.h b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreenContainer.h new file mode 100644 index 0000000..0493e81 --- /dev/null +++ b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreenContainer.h @@ -0,0 +1,31 @@ +#import + +@protocol RNSScreenContainerDelegate + +- (void)markChildUpdated; +- (void)updateContainer; + +@end + +@protocol RNScreensViewControllerDelegate + +@end + +@interface RNScreensViewController : UIViewController + +- (UIViewController *)findActiveChildVC; + +@end + +@interface RNSScreenContainerManager : RCTViewManager + +@end + +@interface RNSScreenContainerView : UIView + +@property (nonatomic, retain) UIViewController *controller; +@property (nonatomic, retain) NSMutableArray *reactSubviews; + +- (void)maybeDismissVC; + +@end diff --git a/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreenController.h b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreenController.h new file mode 100644 index 0000000..889a493 --- /dev/null +++ b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreenController.h @@ -0,0 +1,10 @@ +#import + +@interface RNSScreenController : UIViewController + +- (instancetype)initWithView:(UIView *)view; +- (void)takeSnapshot; +- (void)setViewToSnapshot; +- (void)resetViewToScreen; + +@end diff --git a/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreenNavigationContainer.h b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreenNavigationContainer.h new file mode 100644 index 0000000..bec5abe --- /dev/null +++ b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreenNavigationContainer.h @@ -0,0 +1,16 @@ +#import + +#import "RNSScreenContainer.h" +#import "RNSScreenStack.h" + +@interface RNScreensContainerNavigationController : RNScreensNavigationController + +@end + +@interface RNSScreenNavigationContainerView : RNSScreenContainerView + +@end + +@interface RNSScreenNavigationContainerManager : RNSScreenContainerManager + +@end diff --git a/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreenStack.h b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreenStack.h new file mode 100644 index 0000000..a383cd2 --- /dev/null +++ b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreenStack.h @@ -0,0 +1,21 @@ +#import +#import + +#import "RNSScreenContainer.h" + +@interface RNScreensNavigationController : UINavigationController + +@end + +@interface RNSScreenStackView : UIView + +@property (nonatomic, copy) RCTDirectEventBlock onFinishTransitioning; + +- (void)markChildUpdated; +- (void)didUpdateChildren; + +@end + +@interface RNSScreenStackManager : RCTViewManager + +@end diff --git a/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreenStackAnimator.h b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreenStackAnimator.h new file mode 100644 index 0000000..f96eae7 --- /dev/null +++ b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreenStackAnimator.h @@ -0,0 +1,8 @@ +#import "RNSScreen.h" + +@interface RNSScreenStackAnimator : NSObject + +- (instancetype)initWithOperation:(UINavigationControllerOperation)operation; ++ (BOOL)isCustomAnimation:(RNSScreenStackAnimation)animation; + +@end diff --git a/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreenStackComponentView.h b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreenStackComponentView.h new file mode 100644 index 0000000..e7b0f1a --- /dev/null +++ b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreenStackComponentView.h @@ -0,0 +1,15 @@ +#import + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RNSScreenStackComponentView : RCTViewComponentView + +@end + +@interface RNSScreenStackView : UIView +- (instancetype)initWithComponentView:(RNSScreenStackComponentView *)component; +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreenStackHeaderConfig.h b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreenStackHeaderConfig.h new file mode 100644 index 0000000..d3d9832 --- /dev/null +++ b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreenStackHeaderConfig.h @@ -0,0 +1,68 @@ +#import +#import + +#import "RNSScreen.h" +#import "RNSSearchBar.h" + +@interface RNSScreenStackHeaderConfig : UIView + +@property (nonatomic, weak) RNSScreenView *screenView; + +@property (nonatomic, retain) NSString *title; +@property (nonatomic, retain) NSString *titleFontFamily; +@property (nonatomic, retain) NSNumber *titleFontSize; +@property (nonatomic, retain) NSString *titleFontWeight; +@property (nonatomic, retain) UIColor *titleColor; +@property (nonatomic, retain) NSString *backTitle; +@property (nonatomic, retain) NSString *backTitleFontFamily; +@property (nonatomic, retain) NSNumber *backTitleFontSize; +@property (nonatomic, retain) UIColor *backgroundColor; +@property (nonatomic) UIBlurEffectStyle blurEffect; +@property (nonatomic, retain) UIColor *color; +@property (nonatomic) BOOL hide; +@property (nonatomic) BOOL largeTitle; +@property (nonatomic, retain) NSString *largeTitleFontFamily; +@property (nonatomic, retain) NSNumber *largeTitleFontSize; +@property (nonatomic, retain) NSString *largeTitleFontWeight; +@property (nonatomic, retain) UIColor *largeTitleBackgroundColor; +@property (nonatomic) BOOL largeTitleHideShadow; +@property (nonatomic, retain) UIColor *largeTitleColor; +@property (nonatomic) BOOL hideBackButton; +@property (nonatomic) BOOL backButtonInCustomView; +@property (nonatomic) BOOL disableBackButtonMenu; +@property (nonatomic) BOOL hideShadow; +@property (nonatomic) BOOL translucent; +@property (nonatomic) UISemanticContentAttribute direction; + ++ (void)willShowViewController:(UIViewController *)vc + animated:(BOOL)animated + withConfig:(RNSScreenStackHeaderConfig *)config; + +@end + +@interface RNSScreenStackHeaderConfigManager : RCTViewManager + +@end + +typedef NS_ENUM(NSInteger, RNSScreenStackHeaderSubviewType) { + RNSScreenStackHeaderSubviewTypeBackButton, + RNSScreenStackHeaderSubviewTypeLeft, + RNSScreenStackHeaderSubviewTypeRight, + RNSScreenStackHeaderSubviewTypeTitle, + RNSScreenStackHeaderSubviewTypeCenter, + RNSScreenStackHeaderSubviewTypeSearchBar, +}; + +@interface RCTConvert (RNSScreenStackHeader) + ++ (RNSScreenStackHeaderSubviewType)RNSScreenStackHeaderSubviewType:(id)json; ++ (UIBlurEffectStyle)UIBlurEffectStyle:(id)json; ++ (UISemanticContentAttribute)UISemanticContentAttribute:(id)json; + +@end + +@interface RNSScreenStackHeaderSubviewManager : RCTViewManager + +@property (nonatomic) RNSScreenStackHeaderSubviewType type; + +@end diff --git a/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreenStackHeaderConfigComponentView.h b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreenStackHeaderConfigComponentView.h new file mode 100644 index 0000000..7fd944f --- /dev/null +++ b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreenStackHeaderConfigComponentView.h @@ -0,0 +1,42 @@ +#import + +#import + +#import "RNSScreenComponentView.h" +#import "RNSScreenStackHeaderSubviewComponentView.h" + +@interface RNSScreenStackHeaderConfigComponentView : RCTViewComponentView + +@property (nonatomic, weak) RNSScreenComponentView *screenView; +@property (nonatomic) NSMutableArray *reactSubviews; + +// Properties from props +@property (nonatomic) BOOL show; +@property (nonatomic) BOOL translucent; +@property (nonatomic) BOOL hideShadow; +@property (nonatomic, retain) NSString *title; +@property (nonatomic, retain) NSString *titleFontFamily; +@property (nonatomic, retain) NSNumber *titleFontSize; +@property (nonatomic, retain) NSString *titleFontWeight; +@property (nonatomic, retain) UIColor *titleColor; +@property (nonatomic) BOOL largeTitle; +@property (nonatomic, retain) NSString *largeTitleFontFamily; +@property (nonatomic, retain) NSNumber *largeTitleFontSize; +@property (nonatomic, retain) NSString *largeTitleFontWeight; +@property (nonatomic, retain) UIColor *largeTitleBackgroundColor; +@property (nonatomic) BOOL largeTitleHideShadow; +@property (nonatomic, retain) UIColor *largeTitleColor; +@property (nonatomic, retain) UIColor *backgroundColor; +@property (nonatomic, retain) UIColor *color; +@property (nonatomic) UISemanticContentAttribute direction; +@property (nonatomic, retain) NSString *backTitle; +@property (nonatomic, retain) NSString *backTitleFontFamily; +@property (nonatomic, retain) NSNumber *backTitleFontSize; +@property (nonatomic) BOOL disableBackButtonMenu; +@property (nonatomic) BOOL hideBackButton; + ++ (void)willShowViewController:(UIViewController *)vc + animated:(BOOL)animated + withConfig:(RNSScreenStackHeaderConfigComponentView *)config; + +@end diff --git a/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreenStackHeaderSubviewComponentView.h b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreenStackHeaderSubviewComponentView.h new file mode 100644 index 0000000..eaaa920 --- /dev/null +++ b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreenStackHeaderSubviewComponentView.h @@ -0,0 +1,14 @@ +#import + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RNSScreenStackHeaderSubviewComponentView : RCTViewComponentView + +@property (nonatomic) facebook::react::RNSScreenStackHeaderSubviewType type; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreenWindowTraits.h b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreenWindowTraits.h new file mode 100644 index 0000000..1970b9d --- /dev/null +++ b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSScreenWindowTraits.h @@ -0,0 +1,26 @@ +#import "RNSScreen.h" + +@interface RNSScreenWindowTraits : NSObject + ++ (void)updateWindowTraits; + +#if !TARGET_OS_TV ++ (void)assertViewControllerBasedStatusBarAppearenceSet; +#endif ++ (void)updateStatusBarAppearance; ++ (void)enforceDesiredDeviceOrientation; ++ (void)updateHomeIndicatorAutoHidden; + +#if !TARGET_OS_TV ++ (UIStatusBarStyle)statusBarStyleForRNSStatusBarStyle:(RNSStatusBarStyle)statusBarStyle; ++ (UIInterfaceOrientation)defaultOrientationForOrientationMask:(UIInterfaceOrientationMask)orientationMask; ++ (UIInterfaceOrientation)interfaceOrientationFromDeviceOrientation:(UIDeviceOrientation)deviceOrientation; ++ (UIInterfaceOrientationMask)maskFromOrientation:(UIInterfaceOrientation)orientation; +#endif + ++ (BOOL)shouldAskScreensForTrait:(RNSWindowTrait)trait + includingModals:(BOOL)includingModals + inViewController:(UIViewController *)vc; ++ (BOOL)shouldAskScreensForScreenOrientationInViewController:(UIViewController *)vc; + +@end diff --git a/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSSearchBar.h b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSSearchBar.h new file mode 100644 index 0000000..bf6476e --- /dev/null +++ b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSSearchBar.h @@ -0,0 +1,22 @@ +#import + +#import +#import +#import + +@interface RNSSearchBar : UIView + +@property (nonatomic) BOOL hideWhenScrolling; + +@property (nonatomic, retain) UISearchController *controller; +@property (nonatomic, copy) RCTBubblingEventBlock onChangeText; +@property (nonatomic, copy) RCTBubblingEventBlock onCancelButtonPress; +@property (nonatomic, copy) RCTBubblingEventBlock onSearchButtonPress; +@property (nonatomic, copy) RCTBubblingEventBlock onFocus; +@property (nonatomic, copy) RCTBubblingEventBlock onBlur; + +@end + +@interface RNSSearchBarManager : RCTViewManager + +@end diff --git a/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSUIBarButtonItem.h b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSUIBarButtonItem.h new file mode 100644 index 0000000..e35f290 --- /dev/null +++ b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/RNSUIBarButtonItem.h @@ -0,0 +1,5 @@ +@interface RNSUIBarButtonItem : UIBarButtonItem + +@property (nonatomic) BOOL menuHidden; + +@end diff --git a/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/UIViewController+RNScreens.h b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/UIViewController+RNScreens.h new file mode 100644 index 0000000..4c1c2d0 --- /dev/null +++ b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/UIViewController+RNScreens.h @@ -0,0 +1,9 @@ +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface UIViewController (RNScreens) + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/UIWindow+RNScreens.h b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/UIWindow+RNScreens.h new file mode 100644 index 0000000..77484b7 --- /dev/null +++ b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/Headers/UIWindow+RNScreens.h @@ -0,0 +1,9 @@ +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface UIWindow (RNScreens) + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/libRNScreens.a b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/libRNScreens.a new file mode 100644 index 0000000..05b6a33 Binary files /dev/null and b/Frameworks/RNScreens.xcframework/ios-arm64_x86_64-simulator/libRNScreens.a differ diff --git a/Frameworks/RNShare.xcframework/Info.plist b/Frameworks/RNShare.xcframework/Info.plist new file mode 100644 index 0000000..278a0fc --- /dev/null +++ b/Frameworks/RNShare.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libRNShare.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libRNShare.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + libRNShare.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libRNShare.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/RNShare.xcframework/ios-arm64/Headers/EmailShare.h b/Frameworks/RNShare.xcframework/ios-arm64/Headers/EmailShare.h new file mode 100644 index 0000000..5b54c08 --- /dev/null +++ b/Frameworks/RNShare.xcframework/ios-arm64/Headers/EmailShare.h @@ -0,0 +1,25 @@ +// +// EmailShare.h +// RNShare +// +// Created by Diseño Uno BBCL on 23-07-16. +// Copyright © 2016 Facebook. All rights reserved. +// + + +#import +// import RCTConvertttt +#import +// import RCTBridge +#import +// import RCTUIManager +#import +// import RCTLog +#import +// import RCTUtils +#import +#import +@interface EmailShare : NSObject + +- (void) shareSingle:(NSDictionary *)options failureCallback:(RCTResponseErrorBlock)failureCallback successCallback:(RCTResponseSenderBlock)successCallback; +@end diff --git a/Frameworks/RNShare.xcframework/ios-arm64/Headers/FacebookStories.h b/Frameworks/RNShare.xcframework/ios-arm64/Headers/FacebookStories.h new file mode 100644 index 0000000..0e7dfc7 --- /dev/null +++ b/Frameworks/RNShare.xcframework/ios-arm64/Headers/FacebookStories.h @@ -0,0 +1,24 @@ +// +// FacebookStories.h +// RNShare +// +// Created by Quynh Nguyen on 4/13/20. +// Link: https://github.com/Quynh-Nguyen +// Copyright © 2020 Facebook. All rights reserved. +// + +#import +// import RCTConvert +#import +// import RCTBridge +#import +// import RCTUIManager +#import +// import RCTLog +#import +// import RCTUtils +#import +@interface FacebookStories : NSObject + +- (void *) shareSingle:(NSDictionary *)options failureCallback:(RCTResponseErrorBlock)failureCallback successCallback:(RCTResponseSenderBlock)successCallback; +@end diff --git a/Frameworks/RNShare.xcframework/ios-arm64/Headers/GenericShare.h b/Frameworks/RNShare.xcframework/ios-arm64/Headers/GenericShare.h new file mode 100644 index 0000000..98fa989 --- /dev/null +++ b/Frameworks/RNShare.xcframework/ios-arm64/Headers/GenericShare.h @@ -0,0 +1,26 @@ +// +// GenericShare.h +// RNShare +// +// Created by Diseño Uno BBCL on 23-07-16. +// Copyright © 2016 Facebook. All rights reserved. +// + + +#import +#import +// import RCTConvert +#import +// import RCTBridge +#import +// import RCTUIManager +#import +// import RCTLog +#import +// import RCTUtils +#import +@interface GenericShare : NSObject + +- (void) shareSingle:(NSDictionary *)options failureCallback:(RCTResponseErrorBlock)failureCallback successCallback:(RCTResponseSenderBlock)successCallback serviceType:(NSString*)serviceType + inAppBaseUrl:(NSString *)inAppBaseUrl; +@end diff --git a/Frameworks/RNShare.xcframework/ios-arm64/Headers/GooglePlusShare.h b/Frameworks/RNShare.xcframework/ios-arm64/Headers/GooglePlusShare.h new file mode 100644 index 0000000..ffae815 --- /dev/null +++ b/Frameworks/RNShare.xcframework/ios-arm64/Headers/GooglePlusShare.h @@ -0,0 +1,22 @@ +// +// GooglePlusShare.h +// RNShare +// +// Created by Diseño Uno BBCL on 23-07-16. +// Copyright © 2016 Facebook. All rights reserved. +// +#import +// import RCTConvert +#import +// import RCTBridge +#import +// import RCTUIManager +#import +// import RCTLog +#import +// import RCTUtils +#import +@interface GooglePlusShare : NSObject + +- (void) shareSingle:(NSDictionary *)options failureCallback:(RCTResponseErrorBlock)failureCallback successCallback:(RCTResponseSenderBlock)successCallback; +@end diff --git a/Frameworks/RNShare.xcframework/ios-arm64/Headers/InstagramShare.h b/Frameworks/RNShare.xcframework/ios-arm64/Headers/InstagramShare.h new file mode 100644 index 0000000..6ee51cb --- /dev/null +++ b/Frameworks/RNShare.xcframework/ios-arm64/Headers/InstagramShare.h @@ -0,0 +1,25 @@ +// +// InstagramShare.h +// RNShare +// +// Created by Ralf Nieuwenhuizen on 12-04-17. +// + +#import +// import RCTConvert +#import +// import RCTBridge +#import +// import RCTUIManager +#import +// import RCTLog +#import +// import RCTUtils +#import +@interface InstagramShare : NSObject + +- (void) shareSingle:(NSDictionary *)options failureCallback:(RCTResponseErrorBlock)failureCallback successCallback:(RCTResponseSenderBlock)successCallback; +- (void)shareSingleImage:(NSDictionary *)options + failureCallback:(RCTResponseErrorBlock)failureCallback + successCallback:(RCTResponseSenderBlock)successCallback; +@end diff --git a/Frameworks/RNShare.xcframework/ios-arm64/Headers/InstagramStories.h b/Frameworks/RNShare.xcframework/ios-arm64/Headers/InstagramStories.h new file mode 100644 index 0000000..56757da --- /dev/null +++ b/Frameworks/RNShare.xcframework/ios-arm64/Headers/InstagramStories.h @@ -0,0 +1,23 @@ +// +// InstagramStories.h +// RNShare +// +// Created by Nikita Logachev on 13.02.2019. +// link: https://github.com/loga4 +// + +#import +// import RCTConvert +#import +// import RCTBridge +#import +// import RCTUIManager +#import +// import RCTLog +#import +// import RCTUtils +#import +@interface InstagramStories : NSObject + +- (void *) shareSingle:(NSDictionary *)options failureCallback:(RCTResponseErrorBlock)failureCallback successCallback:(RCTResponseSenderBlock)successCallback; +@end diff --git a/Frameworks/RNShare.xcframework/ios-arm64/Headers/MessengerShare.h b/Frameworks/RNShare.xcframework/ios-arm64/Headers/MessengerShare.h new file mode 100644 index 0000000..01aa7c0 --- /dev/null +++ b/Frameworks/RNShare.xcframework/ios-arm64/Headers/MessengerShare.h @@ -0,0 +1,8 @@ +#import + +#import + +@interface MessengerShare : NSObject + +- (void)shareSingle:(NSDictionary *)options failureCallback:(RCTResponseErrorBlock)failureCallback successCallback:(RCTResponseSenderBlock)successCallback; +@end diff --git a/Frameworks/RNShare.xcframework/ios-arm64/Headers/RNShare.h b/Frameworks/RNShare.xcframework/ios-arm64/Headers/RNShare.h new file mode 100644 index 0000000..1b0ef16 --- /dev/null +++ b/Frameworks/RNShare.xcframework/ios-arm64/Headers/RNShare.h @@ -0,0 +1,7 @@ +@import UIKit; +// import RCTBridgeModule +#import + +@interface RNShare : NSObject + +@end diff --git a/Frameworks/RNShare.xcframework/ios-arm64/Headers/RNShareActivityItemSource.h b/Frameworks/RNShare.xcframework/ios-arm64/Headers/RNShareActivityItemSource.h new file mode 100644 index 0000000..43c6c1c --- /dev/null +++ b/Frameworks/RNShare.xcframework/ios-arm64/Headers/RNShareActivityItemSource.h @@ -0,0 +1,12 @@ +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RNShareActivityItemSource : NSObject + +- (instancetype)initWithOptions:(NSDictionary *)options; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/RNShare.xcframework/ios-arm64/Headers/RNShareUtils.h b/Frameworks/RNShare.xcframework/ios-arm64/Headers/RNShareUtils.h new file mode 100644 index 0000000..6475423 --- /dev/null +++ b/Frameworks/RNShare.xcframework/ios-arm64/Headers/RNShareUtils.h @@ -0,0 +1,6 @@ +#import + +@interface RNShareUtils : NSObject ++(NSString*)getExtensionFromBase64:(NSString*)base64String; ++(NSURL*)getPathFromBase64:(NSString*)base64String with:(NSData*)data; +@end diff --git a/Frameworks/RNShare.xcframework/ios-arm64/Headers/TelegramShare.h b/Frameworks/RNShare.xcframework/ios-arm64/Headers/TelegramShare.h new file mode 100644 index 0000000..5533ad3 --- /dev/null +++ b/Frameworks/RNShare.xcframework/ios-arm64/Headers/TelegramShare.h @@ -0,0 +1,23 @@ +// +// TelegranShare.h +// RNShare +// +// Created by Akinn Rosa on 07-27-21. +// + +#import +// import RCTConvert +#import +// import RCTBridge +#import +// import RCTUIManager +#import +// import RCTLog +#import +// import RCTUtils +#import +@interface TelegramShare : NSObject + +- (void) shareSingle:(NSDictionary *)options failureCallback:(RCTResponseErrorBlock)failureCallback successCallback:(RCTResponseSenderBlock)successCallback; + +@end diff --git a/Frameworks/RNShare.xcframework/ios-arm64/Headers/ViberShare.h b/Frameworks/RNShare.xcframework/ios-arm64/Headers/ViberShare.h new file mode 100644 index 0000000..c3bbcf3 --- /dev/null +++ b/Frameworks/RNShare.xcframework/ios-arm64/Headers/ViberShare.h @@ -0,0 +1,21 @@ +// +// TelegranShare.h +// RNShare +// + +#import +// import RCTConvert +#import +// import RCTBridge +#import +// import RCTUIManager +#import +// import RCTLog +#import +// import RCTUtils +#import +@interface ViberShare : NSObject + +- (void) shareSingle:(NSDictionary *)options failureCallback:(RCTResponseErrorBlock)failureCallback successCallback:(RCTResponseSenderBlock)successCallback; + +@end diff --git a/Frameworks/RNShare.xcframework/ios-arm64/Headers/WhatsAppShare.h b/Frameworks/RNShare.xcframework/ios-arm64/Headers/WhatsAppShare.h new file mode 100644 index 0000000..9c338f2 --- /dev/null +++ b/Frameworks/RNShare.xcframework/ios-arm64/Headers/WhatsAppShare.h @@ -0,0 +1,23 @@ +// +// WhatsAppShare.h +// RNShare +// +// Created by Diseño Uno BBCL on 23-07-16. +// Copyright © 2016 Facebook. All rights reserved. +// + +#import +// import RCTConvert +#import +// import RCTBridge +#import +// import RCTUIManager +#import +// import RCTLog +#import +// import RCTUtils +#import +@interface WhatsAppShare : NSObject + +- (void) shareSingle:(NSDictionary *)options failureCallback:(RCTResponseErrorBlock)failureCallback successCallback:(RCTResponseSenderBlock)successCallback; +@end diff --git a/Frameworks/RNShare.xcframework/ios-arm64/libRNShare.a b/Frameworks/RNShare.xcframework/ios-arm64/libRNShare.a new file mode 100644 index 0000000..47e89cb Binary files /dev/null and b/Frameworks/RNShare.xcframework/ios-arm64/libRNShare.a differ diff --git a/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/EmailShare.h b/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/EmailShare.h new file mode 100644 index 0000000..5b54c08 --- /dev/null +++ b/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/EmailShare.h @@ -0,0 +1,25 @@ +// +// EmailShare.h +// RNShare +// +// Created by Diseño Uno BBCL on 23-07-16. +// Copyright © 2016 Facebook. All rights reserved. +// + + +#import +// import RCTConvertttt +#import +// import RCTBridge +#import +// import RCTUIManager +#import +// import RCTLog +#import +// import RCTUtils +#import +#import +@interface EmailShare : NSObject + +- (void) shareSingle:(NSDictionary *)options failureCallback:(RCTResponseErrorBlock)failureCallback successCallback:(RCTResponseSenderBlock)successCallback; +@end diff --git a/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/FacebookStories.h b/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/FacebookStories.h new file mode 100644 index 0000000..0e7dfc7 --- /dev/null +++ b/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/FacebookStories.h @@ -0,0 +1,24 @@ +// +// FacebookStories.h +// RNShare +// +// Created by Quynh Nguyen on 4/13/20. +// Link: https://github.com/Quynh-Nguyen +// Copyright © 2020 Facebook. All rights reserved. +// + +#import +// import RCTConvert +#import +// import RCTBridge +#import +// import RCTUIManager +#import +// import RCTLog +#import +// import RCTUtils +#import +@interface FacebookStories : NSObject + +- (void *) shareSingle:(NSDictionary *)options failureCallback:(RCTResponseErrorBlock)failureCallback successCallback:(RCTResponseSenderBlock)successCallback; +@end diff --git a/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/GenericShare.h b/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/GenericShare.h new file mode 100644 index 0000000..98fa989 --- /dev/null +++ b/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/GenericShare.h @@ -0,0 +1,26 @@ +// +// GenericShare.h +// RNShare +// +// Created by Diseño Uno BBCL on 23-07-16. +// Copyright © 2016 Facebook. All rights reserved. +// + + +#import +#import +// import RCTConvert +#import +// import RCTBridge +#import +// import RCTUIManager +#import +// import RCTLog +#import +// import RCTUtils +#import +@interface GenericShare : NSObject + +- (void) shareSingle:(NSDictionary *)options failureCallback:(RCTResponseErrorBlock)failureCallback successCallback:(RCTResponseSenderBlock)successCallback serviceType:(NSString*)serviceType + inAppBaseUrl:(NSString *)inAppBaseUrl; +@end diff --git a/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/GooglePlusShare.h b/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/GooglePlusShare.h new file mode 100644 index 0000000..ffae815 --- /dev/null +++ b/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/GooglePlusShare.h @@ -0,0 +1,22 @@ +// +// GooglePlusShare.h +// RNShare +// +// Created by Diseño Uno BBCL on 23-07-16. +// Copyright © 2016 Facebook. All rights reserved. +// +#import +// import RCTConvert +#import +// import RCTBridge +#import +// import RCTUIManager +#import +// import RCTLog +#import +// import RCTUtils +#import +@interface GooglePlusShare : NSObject + +- (void) shareSingle:(NSDictionary *)options failureCallback:(RCTResponseErrorBlock)failureCallback successCallback:(RCTResponseSenderBlock)successCallback; +@end diff --git a/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/InstagramShare.h b/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/InstagramShare.h new file mode 100644 index 0000000..6ee51cb --- /dev/null +++ b/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/InstagramShare.h @@ -0,0 +1,25 @@ +// +// InstagramShare.h +// RNShare +// +// Created by Ralf Nieuwenhuizen on 12-04-17. +// + +#import +// import RCTConvert +#import +// import RCTBridge +#import +// import RCTUIManager +#import +// import RCTLog +#import +// import RCTUtils +#import +@interface InstagramShare : NSObject + +- (void) shareSingle:(NSDictionary *)options failureCallback:(RCTResponseErrorBlock)failureCallback successCallback:(RCTResponseSenderBlock)successCallback; +- (void)shareSingleImage:(NSDictionary *)options + failureCallback:(RCTResponseErrorBlock)failureCallback + successCallback:(RCTResponseSenderBlock)successCallback; +@end diff --git a/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/InstagramStories.h b/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/InstagramStories.h new file mode 100644 index 0000000..56757da --- /dev/null +++ b/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/InstagramStories.h @@ -0,0 +1,23 @@ +// +// InstagramStories.h +// RNShare +// +// Created by Nikita Logachev on 13.02.2019. +// link: https://github.com/loga4 +// + +#import +// import RCTConvert +#import +// import RCTBridge +#import +// import RCTUIManager +#import +// import RCTLog +#import +// import RCTUtils +#import +@interface InstagramStories : NSObject + +- (void *) shareSingle:(NSDictionary *)options failureCallback:(RCTResponseErrorBlock)failureCallback successCallback:(RCTResponseSenderBlock)successCallback; +@end diff --git a/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/MessengerShare.h b/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/MessengerShare.h new file mode 100644 index 0000000..01aa7c0 --- /dev/null +++ b/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/MessengerShare.h @@ -0,0 +1,8 @@ +#import + +#import + +@interface MessengerShare : NSObject + +- (void)shareSingle:(NSDictionary *)options failureCallback:(RCTResponseErrorBlock)failureCallback successCallback:(RCTResponseSenderBlock)successCallback; +@end diff --git a/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/RNShare.h b/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/RNShare.h new file mode 100644 index 0000000..1b0ef16 --- /dev/null +++ b/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/RNShare.h @@ -0,0 +1,7 @@ +@import UIKit; +// import RCTBridgeModule +#import + +@interface RNShare : NSObject + +@end diff --git a/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/RNShareActivityItemSource.h b/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/RNShareActivityItemSource.h new file mode 100644 index 0000000..43c6c1c --- /dev/null +++ b/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/RNShareActivityItemSource.h @@ -0,0 +1,12 @@ +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RNShareActivityItemSource : NSObject + +- (instancetype)initWithOptions:(NSDictionary *)options; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/RNShareUtils.h b/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/RNShareUtils.h new file mode 100644 index 0000000..6475423 --- /dev/null +++ b/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/RNShareUtils.h @@ -0,0 +1,6 @@ +#import + +@interface RNShareUtils : NSObject ++(NSString*)getExtensionFromBase64:(NSString*)base64String; ++(NSURL*)getPathFromBase64:(NSString*)base64String with:(NSData*)data; +@end diff --git a/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/TelegramShare.h b/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/TelegramShare.h new file mode 100644 index 0000000..5533ad3 --- /dev/null +++ b/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/TelegramShare.h @@ -0,0 +1,23 @@ +// +// TelegranShare.h +// RNShare +// +// Created by Akinn Rosa on 07-27-21. +// + +#import +// import RCTConvert +#import +// import RCTBridge +#import +// import RCTUIManager +#import +// import RCTLog +#import +// import RCTUtils +#import +@interface TelegramShare : NSObject + +- (void) shareSingle:(NSDictionary *)options failureCallback:(RCTResponseErrorBlock)failureCallback successCallback:(RCTResponseSenderBlock)successCallback; + +@end diff --git a/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/ViberShare.h b/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/ViberShare.h new file mode 100644 index 0000000..c3bbcf3 --- /dev/null +++ b/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/ViberShare.h @@ -0,0 +1,21 @@ +// +// TelegranShare.h +// RNShare +// + +#import +// import RCTConvert +#import +// import RCTBridge +#import +// import RCTUIManager +#import +// import RCTLog +#import +// import RCTUtils +#import +@interface ViberShare : NSObject + +- (void) shareSingle:(NSDictionary *)options failureCallback:(RCTResponseErrorBlock)failureCallback successCallback:(RCTResponseSenderBlock)successCallback; + +@end diff --git a/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/WhatsAppShare.h b/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/WhatsAppShare.h new file mode 100644 index 0000000..9c338f2 --- /dev/null +++ b/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/Headers/WhatsAppShare.h @@ -0,0 +1,23 @@ +// +// WhatsAppShare.h +// RNShare +// +// Created by Diseño Uno BBCL on 23-07-16. +// Copyright © 2016 Facebook. All rights reserved. +// + +#import +// import RCTConvert +#import +// import RCTBridge +#import +// import RCTUIManager +#import +// import RCTLog +#import +// import RCTUtils +#import +@interface WhatsAppShare : NSObject + +- (void) shareSingle:(NSDictionary *)options failureCallback:(RCTResponseErrorBlock)failureCallback successCallback:(RCTResponseSenderBlock)successCallback; +@end diff --git a/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/libRNShare.a b/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/libRNShare.a new file mode 100644 index 0000000..97a6e7f Binary files /dev/null and b/Frameworks/RNShare.xcframework/ios-arm64_x86_64-simulator/libRNShare.a differ diff --git a/Frameworks/RNTextSize.xcframework/Info.plist b/Frameworks/RNTextSize.xcframework/Info.plist new file mode 100644 index 0000000..413fc65 --- /dev/null +++ b/Frameworks/RNTextSize.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libRNTextSize.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libRNTextSize.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + libRNTextSize.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libRNTextSize.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/RNTextSize.xcframework/ios-arm64/Headers/RNTextSize.h b/Frameworks/RNTextSize.xcframework/ios-arm64/Headers/RNTextSize.h new file mode 100644 index 0000000..f07d337 --- /dev/null +++ b/Frameworks/RNTextSize.xcframework/ios-arm64/Headers/RNTextSize.h @@ -0,0 +1,10 @@ +#if __has_include() +#import +#import +#else +#import "React/RCTBridgeModule.h" +#import "React/RCTAccessibilityManager.h" +#endif + +@interface RNTextSize : NSObject +@end diff --git a/Frameworks/RNTextSize.xcframework/ios-arm64/libRNTextSize.a b/Frameworks/RNTextSize.xcframework/ios-arm64/libRNTextSize.a new file mode 100644 index 0000000..7b17d72 Binary files /dev/null and b/Frameworks/RNTextSize.xcframework/ios-arm64/libRNTextSize.a differ diff --git a/Frameworks/RNTextSize.xcframework/ios-arm64_x86_64-simulator/Headers/RNTextSize.h b/Frameworks/RNTextSize.xcframework/ios-arm64_x86_64-simulator/Headers/RNTextSize.h new file mode 100644 index 0000000..f07d337 --- /dev/null +++ b/Frameworks/RNTextSize.xcframework/ios-arm64_x86_64-simulator/Headers/RNTextSize.h @@ -0,0 +1,10 @@ +#if __has_include() +#import +#import +#else +#import "React/RCTBridgeModule.h" +#import "React/RCTAccessibilityManager.h" +#endif + +@interface RNTextSize : NSObject +@end diff --git a/Frameworks/RNTextSize.xcframework/ios-arm64_x86_64-simulator/libRNTextSize.a b/Frameworks/RNTextSize.xcframework/ios-arm64_x86_64-simulator/libRNTextSize.a new file mode 100644 index 0000000..1b3dce3 Binary files /dev/null and b/Frameworks/RNTextSize.xcframework/ios-arm64_x86_64-simulator/libRNTextSize.a differ diff --git a/Frameworks/RNVectorIcons.xcframework/Info.plist b/Frameworks/RNVectorIcons.xcframework/Info.plist new file mode 100644 index 0000000..1567cf0 --- /dev/null +++ b/Frameworks/RNVectorIcons.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libRNVectorIcons.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libRNVectorIcons.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libRNVectorIcons.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libRNVectorIcons.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/RNVectorIcons.xcframework/ios-arm64/Headers/RNVectorIconsManager.h b/Frameworks/RNVectorIcons.xcframework/ios-arm64/Headers/RNVectorIconsManager.h new file mode 100644 index 0000000..45b5411 --- /dev/null +++ b/Frameworks/RNVectorIcons.xcframework/ios-arm64/Headers/RNVectorIconsManager.h @@ -0,0 +1,37 @@ +// +// RNVectorIconsManager.h +// RNVectorIconsManager +// +// Created by Joel Arvidsson on 2015-05-29. +// Copyright (c) 2015 Joel Arvidsson. All rights reserved. +// + +#if __has_include() +#import +#else // Compatibility for RN version < 0.40 +#import "RCTBridgeModule.h" +#endif +#if __has_include() +#import +#else // Compatibility for RN version < 0.40 +#import "RCTLog.h" +#endif + +FOUNDATION_EXPORT NSString *const RNVIErrorDomain; + +enum { + RNVIGenericError = 1000, +}; + +@interface RNVectorIconsManager : NSObject + +- (NSString *)hexStringFromColor:(UIColor *)color; +- (NSString *)generateFilePath:(NSString *)glyph withFontName:(NSString *)fontName + withFontSize:(CGFloat)fontSize + withColor:(UIColor *)color + withExtraIdentifier:(NSString *)identifier; +- (BOOL)createAndSaveGlyphImage:(NSString *)glyph withFont:(UIFont *)font + withFilePath:(NSString *)filePath + withColor:(UIColor *)color; + +@end diff --git a/Frameworks/RNVectorIcons.xcframework/ios-arm64/libRNVectorIcons.a b/Frameworks/RNVectorIcons.xcframework/ios-arm64/libRNVectorIcons.a new file mode 100644 index 0000000..030f435 Binary files /dev/null and b/Frameworks/RNVectorIcons.xcframework/ios-arm64/libRNVectorIcons.a differ diff --git a/Frameworks/RNVectorIcons.xcframework/ios-arm64_x86_64-simulator/Headers/RNVectorIconsManager.h b/Frameworks/RNVectorIcons.xcframework/ios-arm64_x86_64-simulator/Headers/RNVectorIconsManager.h new file mode 100644 index 0000000..45b5411 --- /dev/null +++ b/Frameworks/RNVectorIcons.xcframework/ios-arm64_x86_64-simulator/Headers/RNVectorIconsManager.h @@ -0,0 +1,37 @@ +// +// RNVectorIconsManager.h +// RNVectorIconsManager +// +// Created by Joel Arvidsson on 2015-05-29. +// Copyright (c) 2015 Joel Arvidsson. All rights reserved. +// + +#if __has_include() +#import +#else // Compatibility for RN version < 0.40 +#import "RCTBridgeModule.h" +#endif +#if __has_include() +#import +#else // Compatibility for RN version < 0.40 +#import "RCTLog.h" +#endif + +FOUNDATION_EXPORT NSString *const RNVIErrorDomain; + +enum { + RNVIGenericError = 1000, +}; + +@interface RNVectorIconsManager : NSObject + +- (NSString *)hexStringFromColor:(UIColor *)color; +- (NSString *)generateFilePath:(NSString *)glyph withFontName:(NSString *)fontName + withFontSize:(CGFloat)fontSize + withColor:(UIColor *)color + withExtraIdentifier:(NSString *)identifier; +- (BOOL)createAndSaveGlyphImage:(NSString *)glyph withFont:(UIFont *)font + withFilePath:(NSString *)filePath + withColor:(UIColor *)color; + +@end diff --git a/Frameworks/RNVectorIcons.xcframework/ios-arm64_x86_64-simulator/libRNVectorIcons.a b/Frameworks/RNVectorIcons.xcframework/ios-arm64_x86_64-simulator/libRNVectorIcons.a new file mode 100644 index 0000000..230f45b Binary files /dev/null and b/Frameworks/RNVectorIcons.xcframework/ios-arm64_x86_64-simulator/libRNVectorIcons.a differ diff --git a/Frameworks/RNVolumeController.xcframework/Info.plist b/Frameworks/RNVolumeController.xcframework/Info.plist new file mode 100644 index 0000000..aee0e85 --- /dev/null +++ b/Frameworks/RNVolumeController.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libRNVolumeController.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libRNVolumeController.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + libRNVolumeController.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libRNVolumeController.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/RNVolumeController.xcframework/ios-arm64/Headers/RNVolumeControl.h b/Frameworks/RNVolumeController.xcframework/ios-arm64/Headers/RNVolumeControl.h new file mode 100644 index 0000000..28c57e8 --- /dev/null +++ b/Frameworks/RNVolumeController.xcframework/ios-arm64/Headers/RNVolumeControl.h @@ -0,0 +1,14 @@ +// ReactNativeVolumeController +// +// Created by Tyler Malone on 03/18/19 +// Copyright © 2019. All rights reserved. +// + +#import +#import + +@interface RNVolumeControl : RCTEventEmitter + +- (void)initVolumeView; +- (void)setVolume:(float)volumeValue; +@end diff --git a/Frameworks/RNVolumeController.xcframework/ios-arm64/libRNVolumeController.a b/Frameworks/RNVolumeController.xcframework/ios-arm64/libRNVolumeController.a new file mode 100644 index 0000000..e389893 Binary files /dev/null and b/Frameworks/RNVolumeController.xcframework/ios-arm64/libRNVolumeController.a differ diff --git a/Frameworks/RNVolumeController.xcframework/ios-arm64_x86_64-simulator/Headers/RNVolumeControl.h b/Frameworks/RNVolumeController.xcframework/ios-arm64_x86_64-simulator/Headers/RNVolumeControl.h new file mode 100644 index 0000000..28c57e8 --- /dev/null +++ b/Frameworks/RNVolumeController.xcframework/ios-arm64_x86_64-simulator/Headers/RNVolumeControl.h @@ -0,0 +1,14 @@ +// ReactNativeVolumeController +// +// Created by Tyler Malone on 03/18/19 +// Copyright © 2019. All rights reserved. +// + +#import +#import + +@interface RNVolumeControl : RCTEventEmitter + +- (void)initVolumeView; +- (void)setVolume:(float)volumeValue; +@end diff --git a/Frameworks/RNVolumeController.xcframework/ios-arm64_x86_64-simulator/libRNVolumeController.a b/Frameworks/RNVolumeController.xcframework/ios-arm64_x86_64-simulator/libRNVolumeController.a new file mode 100644 index 0000000..21ed216 Binary files /dev/null and b/Frameworks/RNVolumeController.xcframework/ios-arm64_x86_64-simulator/libRNVolumeController.a differ diff --git a/Frameworks/React-Core.xcframework/Info.plist b/Frameworks/React-Core.xcframework/Info.plist new file mode 100644 index 0000000..e129825 --- /dev/null +++ b/Frameworks/React-Core.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libReact-Core.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libReact-Core.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libReact-Core.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libReact-Core.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/CoreModulesPlugins.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/CoreModulesPlugins.h new file mode 100644 index 0000000..0dd2130 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/CoreModulesPlugins.h @@ -0,0 +1,64 @@ +/** + * 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 an internal plugin build system + */ + +#ifdef RN_DISABLE_OSS_PLUGIN_HEADER + +// FB Internal: FBCoreModulesPlugins.h is autogenerated by the build system. +#import + +#else + +// OSS-compatibility layer + +#import + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wreturn-type-c-linkage" + +#ifdef __cplusplus +extern "C" { +#endif + +// RCTTurboModuleManagerDelegate should call this to resolve module classes. +Class RCTCoreModulesClassProvider(const char *name); + +// Lookup functions +Class RCTAccessibilityManagerCls(void) __attribute__((used)); +Class RCTAppearanceCls(void) __attribute__((used)); +Class RCTDeviceInfoCls(void) __attribute__((used)); +Class RCTExceptionsManagerCls(void) __attribute__((used)); +Class RCTPlatformCls(void) __attribute__((used)); +Class RCTClipboardCls(void) __attribute__((used)); +Class RCTI18nManagerCls(void) __attribute__((used)); +Class RCTSourceCodeCls(void) __attribute__((used)); +Class RCTActionSheetManagerCls(void) __attribute__((used)); +Class RCTAlertManagerCls(void) __attribute__((used)); +Class RCTAsyncLocalStorageCls(void) __attribute__((used)); +Class RCTTimingCls(void) __attribute__((used)); +Class RCTStatusBarManagerCls(void) __attribute__((used)); +Class RCTKeyboardObserverCls(void) __attribute__((used)); +Class RCTAppStateCls(void) __attribute__((used)); +Class RCTPerfMonitorCls(void) __attribute__((used)); +Class RCTDevMenuCls(void) __attribute__((used)); +Class RCTDevSettingsCls(void) __attribute__((used)); +Class RCTRedBoxCls(void) __attribute__((used)); +Class RCTLogBoxCls(void) __attribute__((used)); +Class RCTWebSocketExecutorCls(void) __attribute__((used)); +Class RCTWebSocketModuleCls(void) __attribute__((used)); +Class RCTDevLoadingViewCls(void) __attribute__((used)); +Class RCTDevSplitBundleLoaderCls(void) __attribute__((used)); +Class RCTEventDispatcherCls(void) __attribute__((used)); + +#ifdef __cplusplus +} +#endif + +#pragma GCC diagnostic pop + +#endif // RN_DISABLE_OSS_PLUGIN_HEADER diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/NSTextStorage+FontScaling.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/NSTextStorage+FontScaling.h new file mode 100644 index 0000000..61b1634 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/NSTextStorage+FontScaling.h @@ -0,0 +1,20 @@ +/* + * 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 + +@interface NSTextStorage (FontScaling) + +- (void)scaleFontSizeToFitSize:(CGSize)size + minimumFontSize:(CGFloat)minimumFontSize + maximumFontSize:(CGFloat)maximumFontSize; + +- (void)scaleFontSizeWithRatio:(CGFloat)ratio + minimumFontSize:(CGFloat)minimumFontSize + maximumFontSize:(CGFloat)maximumFontSize; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAccessibilityManager+Internal.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAccessibilityManager+Internal.h new file mode 100644 index 0000000..e01e800 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAccessibilityManager+Internal.h @@ -0,0 +1,24 @@ +/* + * 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 "RCTAccessibilityManager.h" + +#import + +NS_ASSUME_NONNULL_BEGIN + +RCT_EXTERN_C_BEGIN + +// Only to be used for testing and internal tooling. Do not use this in +// production. +void RCTAccessibilityManagerSetIsVoiceOverEnabled( + RCTAccessibilityManager *accessibiltyManager, + BOOL isVoiceOverEnabled); + +RCT_EXTERN_C_END + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAccessibilityManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAccessibilityManager.h new file mode 100644 index 0000000..7b5a132 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAccessibilityManager.h @@ -0,0 +1,35 @@ +/* + * 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 + +#import +#import + +extern NSString *const RCTAccessibilityManagerDidUpdateMultiplierNotification; // posted when multiplier is changed + +@interface RCTAccessibilityManager : NSObject + +@property (nonatomic, readonly) CGFloat multiplier; + +/// map from UIKit categories to multipliers +@property (nonatomic, copy) NSDictionary *multipliers; + +@property (nonatomic, assign) BOOL isBoldTextEnabled; +@property (nonatomic, assign) BOOL isGrayscaleEnabled; +@property (nonatomic, assign) BOOL isInvertColorsEnabled; +@property (nonatomic, assign) BOOL isReduceMotionEnabled; +@property (nonatomic, assign) BOOL isReduceTransparencyEnabled; +@property (nonatomic, assign) BOOL isVoiceOverEnabled; + +@end + +@interface RCTBridge (RCTAccessibilityManager) + +@property (nonatomic, readonly) RCTAccessibilityManager *accessibilityManager; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTActionSheetManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTActionSheetManager.h new file mode 100644 index 0000000..858afcf --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTActionSheetManager.h @@ -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 + +#import + +@interface RCTActionSheetManager : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTActivityIndicatorView.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTActivityIndicatorView.h new file mode 100644 index 0000000..62d5f32 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTActivityIndicatorView.h @@ -0,0 +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. + */ + +#import + +@interface RCTActivityIndicatorView : UIActivityIndicatorView +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTActivityIndicatorViewManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTActivityIndicatorViewManager.h new file mode 100644 index 0000000..61bbd72 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTActivityIndicatorViewManager.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +@interface RCTConvert (UIActivityIndicatorView) + ++ (UIActivityIndicatorViewStyle)UIActivityIndicatorViewStyle:(id)json; + +@end + +@interface RCTActivityIndicatorViewManager : RCTViewManager + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAdditionAnimatedNode.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAdditionAnimatedNode.h new file mode 100644 index 0000000..50f3bc1 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAdditionAnimatedNode.h @@ -0,0 +1,12 @@ +/* + * 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 "RCTValueAnimatedNode.h" + +@interface RCTAdditionAnimatedNode : RCTValueAnimatedNode + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAlertController.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAlertController.h new file mode 100644 index 0000000..f5c206c --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAlertController.h @@ -0,0 +1,15 @@ +/* + * 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 + +@interface RCTAlertController : UIAlertController + +- (void)show:(BOOL)animated completion:(void (^)(void))completion; +- (void)hide; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAlertManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAlertManager.h new file mode 100644 index 0000000..8ea1d9b --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAlertManager.h @@ -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 + +#import +#import + +typedef NS_ENUM(NSInteger, RCTAlertViewStyle) { + RCTAlertViewStyleDefault = 0, + RCTAlertViewStyleSecureTextInput, + RCTAlertViewStylePlainTextInput, + RCTAlertViewStyleLoginAndPasswordInput +}; + +@interface RCTAlertManager : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAnimatedImage.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAnimatedImage.h new file mode 100644 index 0000000..933a492 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAnimatedImage.h @@ -0,0 +1,21 @@ +/* + * 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 + +@protocol RCTAnimatedImage +@property (nonatomic, assign, readonly) NSUInteger animatedImageFrameCount; +@property (nonatomic, assign, readonly) NSUInteger animatedImageLoopCount; + +- (nullable UIImage *)animatedImageFrameAtIndex:(NSUInteger)index; +- (NSTimeInterval)animatedImageDurationAtIndex:(NSUInteger)index; + +@end + +@interface RCTAnimatedImage : UIImage + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAnimatedNode.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAnimatedNode.h new file mode 100644 index 0000000..24c0fb3 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAnimatedNode.h @@ -0,0 +1,51 @@ +/* + * 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 + +@class RCTNativeAnimatedNodesManager; + +@interface RCTAnimatedNode : NSObject + +- (instancetype)initWithTag:(NSNumber *)tag + config:(NSDictionary *)config NS_DESIGNATED_INITIALIZER; + +@property (nonatomic, readonly) NSNumber *nodeTag; +@property (nonatomic, weak) RCTNativeAnimatedNodesManager *manager; +@property (nonatomic, copy, readonly) NSDictionary *config; + +@property (nonatomic, copy, readonly) NSMapTable *childNodes; +@property (nonatomic, copy, readonly) NSMapTable *parentNodes; + +@property (nonatomic, readonly) BOOL needsUpdate; + +-(BOOL)isManagedByFabric; + +/** + * Marks a node and its children as needing update. + */ +- (void)setNeedsUpdate NS_REQUIRES_SUPER; + +/** + * The node will update its value if necessary and only after its parents have updated. + */ +- (void)updateNodeIfNecessary NS_REQUIRES_SUPER; + +/** + * Where the actual update code lives. Called internally from updateNodeIfNecessary + */ +- (void)performUpdate NS_REQUIRES_SUPER; + +- (void)addChild:(RCTAnimatedNode *)child NS_REQUIRES_SUPER; +- (void)removeChild:(RCTAnimatedNode *)child NS_REQUIRES_SUPER; + +- (void)onAttachedToNode:(RCTAnimatedNode *)parent NS_REQUIRES_SUPER; +- (void)onDetachedFromNode:(RCTAnimatedNode *)parent NS_REQUIRES_SUPER; + +- (void)detachNode NS_REQUIRES_SUPER; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAnimationDriver.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAnimationDriver.h new file mode 100644 index 0000000..256464b --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAnimationDriver.h @@ -0,0 +1,38 @@ +/* + * 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 +#import + +#import + +static CGFloat RCTSingleFrameInterval = (CGFloat)(1.0 / 60.0); + +@class RCTValueAnimatedNode; + +NS_ASSUME_NONNULL_BEGIN + +@protocol RCTAnimationDriver + +@property (nonatomic, readonly) NSNumber *animationId; +@property (nonatomic, readonly) RCTValueAnimatedNode *valueNode; +@property (nonatomic, readonly) BOOL animationHasBegun; +@property (nonatomic, readonly) BOOL animationHasFinished; + +- (instancetype)initWithId:(NSNumber *)animationId + config:(NSDictionary *)config + forNode:(RCTValueAnimatedNode *)valueNode + callBack:(nullable RCTResponseSenderBlock)callback; + +- (void)startAnimation; +- (void)stepAnimationWithTime:(NSTimeInterval)currentTime; +- (void)stopAnimation; +- (void)resetAnimationConfig:(NSDictionary *)config; + +NS_ASSUME_NONNULL_END + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAnimationPlugins.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAnimationPlugins.h new file mode 100644 index 0000000..406eb68 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAnimationPlugins.h @@ -0,0 +1,41 @@ +/** + * 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 an internal plugin build system + */ + +#ifdef RN_DISABLE_OSS_PLUGIN_HEADER + +// FB Internal: FBRCTAnimationPlugins.h is autogenerated by the build system. +#import + +#else + +// OSS-compatibility layer + +#import + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wreturn-type-c-linkage" + +#ifdef __cplusplus +extern "C" { +#endif + +// RCTTurboModuleManagerDelegate should call this to resolve module classes. +Class RCTAnimationClassProvider(const char *name); + +// Lookup functions +Class RCTNativeAnimatedModuleCls(void) __attribute__((used)); +Class RCTNativeAnimatedTurboModuleCls(void) __attribute__((used)); + +#ifdef __cplusplus +} +#endif + +#pragma GCC diagnostic pop + +#endif // RN_DISABLE_OSS_PLUGIN_HEADER diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAnimationType.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAnimationType.h new file mode 100644 index 0000000..4dcb316 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAnimationType.h @@ -0,0 +1,17 @@ +/* + * 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 + +typedef NS_ENUM(NSInteger, RCTAnimationType) { + RCTAnimationTypeSpring = 0, + RCTAnimationTypeLinear, + RCTAnimationTypeEaseIn, + RCTAnimationTypeEaseOut, + RCTAnimationTypeEaseInEaseOut, + RCTAnimationTypeKeyboard, +}; diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAnimationUtils.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAnimationUtils.h new file mode 100644 index 0000000..1f1afa9 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAnimationUtils.h @@ -0,0 +1,38 @@ +/* + * 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 +#import + +#import + +static NSString *const EXTRAPOLATE_TYPE_IDENTITY = @"identity"; +static NSString *const EXTRAPOLATE_TYPE_CLAMP = @"clamp"; +static NSString *const EXTRAPOLATE_TYPE_EXTEND = @"extend"; + +RCT_EXTERN CGFloat RCTInterpolateValueInRange(CGFloat value, + NSArray *inputRange, + NSArray *outputRange, + NSString *extrapolateLeft, + NSString *extrapolateRight); + +RCT_EXTERN CGFloat RCTInterpolateValue(CGFloat value, + CGFloat inputMin, + CGFloat inputMax, + CGFloat outputMin, + CGFloat outputMax, + NSString *extrapolateLeft, + NSString *extrapolateRight); + +RCT_EXTERN CGFloat RCTRadiansToDegrees(CGFloat radians); +RCT_EXTERN CGFloat RCTDegreesToRadians(CGFloat degrees); + +/** + * Coefficient to slow down animations, respects the ios + * simulator `Slow Animations (⌘T)` option. + */ +RCT_EXTERN CGFloat RCTAnimationDragCoefficient(void); diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAppState.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAppState.h new file mode 100644 index 0000000..0921f70 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAppState.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTAppState : RCTEventEmitter + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAppearance.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAppearance.h new file mode 100644 index 0000000..d8c3585 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAppearance.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +#import +#import + +RCT_EXTERN void RCTEnableAppearancePreference(BOOL enabled); +RCT_EXTERN void RCTOverrideAppearancePreference(NSString *const); +RCT_EXTERN NSString *RCTColorSchemePreference(UITraitCollection *traitCollection); + +@interface RCTAppearance : RCTEventEmitter +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAssert.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAssert.h new file mode 100644 index 0000000..e4c7790 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAssert.h @@ -0,0 +1,189 @@ +/* + * 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 + +#import + +/* + * Defined in RCTUtils.m + */ +RCT_EXTERN BOOL RCTIsMainQueue(void); + +/** + * This is the main assert macro that you should use. Asserts should be compiled out + * in production builds. You can customize the assert behaviour by setting a custom + * assert handler through `RCTSetAssertFunction`. + */ +#ifndef NS_BLOCK_ASSERTIONS +#define RCTAssert(condition, ...) \ + do { \ + if ((condition) == 0) { \ + _RCTAssertFormat(#condition, __FILE__, __LINE__, __func__, __VA_ARGS__); \ + if (RCT_NSASSERT) { \ + [[NSAssertionHandler currentHandler] handleFailureInFunction:(NSString *_Nonnull)@(__func__) \ + file:(NSString *_Nonnull)@(__FILE__) \ + lineNumber:__LINE__ \ + description:__VA_ARGS__]; \ + } \ + } \ + } while (false) +#else +#define RCTAssert(condition, ...) \ + do { \ + } while (false) +#endif +RCT_EXTERN void _RCTAssertFormat(const char *, const char *, int, const char *, NSString *, ...) + NS_FORMAT_FUNCTION(5, 6); + +/** + * Report a fatal condition when executing. These calls will _NOT_ be compiled out + * in production, and crash the app by default. You can customize the fatal behaviour + * by setting a custom fatal handler through `RCTSetFatalHandler` and + * `RCTSetFatalExceptionHandler`. + */ +RCT_EXTERN void RCTFatal(NSError *error); +RCT_EXTERN void RCTFatalException(NSException *exception); + +/** + * The default error domain to be used for React errors. + */ +RCT_EXTERN NSString *const RCTErrorDomain; + +/** + * JS Stack trace provided as part of an NSError's userInfo + */ +RCT_EXTERN NSString *const RCTJSStackTraceKey; + +/** + * Raw JS Stack trace string provided as part of an NSError's userInfo + */ +RCT_EXTERN NSString *const RCTJSRawStackTraceKey; + +/** + * Objective-C stack trace string provided as part of an NSError's userInfo + */ +RCT_EXTERN NSString *const RCTObjCStackTraceKey; + +/** + * Name of fatal exceptions generated by RCTFatal + */ +RCT_EXTERN NSString *const RCTFatalExceptionName; + +/** + * A block signature to be used for custom assertion handling. + */ +typedef void (^RCTAssertFunction)( + NSString *condition, + NSString *fileName, + NSNumber *lineNumber, + NSString *function, + NSString *message); + +typedef void (^RCTFatalHandler)(NSError *error); +typedef void (^RCTFatalExceptionHandler)(NSException *exception); + +/** + * Convenience macro for asserting that a parameter is non-nil/non-zero. + */ +#define RCTAssertParam(name) RCTAssert(name, @"'%s' is a required parameter", #name) + +/** + * Convenience macro for asserting that we're running on main queue. + */ +#define RCTAssertMainQueue() RCTAssert(RCTIsMainQueue(), @"This function must be called on the main queue") + +/** + * Convenience macro for asserting that we're running off the main queue. + */ +#define RCTAssertNotMainQueue() RCTAssert(!RCTIsMainQueue(), @"This function must not be called on the main queue") + +/** + * These methods get and set the current assert function called by the RCTAssert + * macros. You can use these to replace the standard behavior with custom assert + * functionality. + */ +RCT_EXTERN void RCTSetAssertFunction(RCTAssertFunction assertFunction); +RCT_EXTERN RCTAssertFunction RCTGetAssertFunction(void); + +/** + * This appends additional code to the existing assert function, without + * replacing the existing functionality. Useful if you just want to forward + * assert info to an extra service without changing the default behavior. + */ +RCT_EXTERN void RCTAddAssertFunction(RCTAssertFunction assertFunction); + +/** + * This method temporarily overrides the assert function while performing the + * specified block. This is useful for testing purposes (to detect if a given + * function asserts something) or to suppress or override assertions temporarily. + */ +RCT_EXTERN void RCTPerformBlockWithAssertFunction(void (^block)(void), RCTAssertFunction assertFunction); + +/** + * These methods get and set the current fatal handler called by the `RCTFatal` + * and `RCTFatalException` methods. + */ +RCT_EXTERN void RCTSetFatalHandler(RCTFatalHandler fatalHandler); +RCT_EXTERN RCTFatalHandler RCTGetFatalHandler(void); +RCT_EXTERN void RCTSetFatalExceptionHandler(RCTFatalExceptionHandler fatalExceptionHandler); +RCT_EXTERN RCTFatalExceptionHandler RCTGetFatalExceptionHandler(void); + +/** + * Get the current thread's name (or the current queue, if in debug mode) + */ +RCT_EXTERN NSString *RCTCurrentThreadName(void); + +/** + * Helper to get generate exception message from NSError + */ +RCT_EXTERN NSString * +RCTFormatError(NSString *message, NSArray *> *stacktrace, NSUInteger maxMessageLength); + +/** + * Formats a JS stack trace for logging. + */ +RCT_EXTERN NSString *RCTFormatStackTrace(NSArray *> *stackTrace); + +/** + * Convenience macro to assert which thread is currently running (DEBUG mode only) + */ +#if DEBUG + +#define RCTAssertThread(thread, format...) \ + _Pragma("clang diagnostic push") _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") RCTAssert( \ + [(id)thread isKindOfClass:[NSString class]] ? [RCTCurrentThreadName() isEqualToString:(NSString *)thread] \ + : [(id)thread isKindOfClass:[NSThread class]] ? [NSThread currentThread] == (NSThread *)thread \ + : dispatch_get_current_queue() == (dispatch_queue_t)thread, \ + format); \ + _Pragma("clang diagnostic pop") + +#else + +#define RCTAssertThread(thread, format...) \ + do { \ + } while (0) + +#endif + +/** + * Controls for ensuring the new architecture runtime assumption holds. + * Note: this is work in progress. + */ + +// Enable reporting of any violation related to the new React Native architecture. +// If RCT_NEW_ARCHITECTURE is defined, it is already enabled by default, otherwise, no violation will be +// reported until enabled. +// Note: enabling this at runtime is not early enough to report issues within ObjC class +load execution. +__attribute__((used)) RCT_EXTERN void RCTEnableNewArchitectureViolationReporting(BOOL enabled); + +// When reporting is enabled, trigger an assertion. +__attribute__((used)) RCT_EXTERN void RCTEnforceNotAllowedForNewArchitecture(id context, NSString *extra); + +// When reporting is enabled, warn about the violation. Use this to prepare a specific callsite +// for stricter enforcement. When ready, switch it to use the variant above. +__attribute__((used)) RCT_EXTERN void RCTWarnNotAllowedForNewArchitecture(id context, NSString *extra); diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAsyncLocalStorage.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAsyncLocalStorage.h new file mode 100644 index 0000000..d43281c --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAsyncLocalStorage.h @@ -0,0 +1,41 @@ +/* + * 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 +#import + +/** + * A simple, asynchronous, persistent, key-value storage system designed as a + * backend to the AsyncStorage JS module, which is modeled after LocalStorage. + * + * Current implementation stores small values in serialized dictionary and + * larger values in separate files. Since we use a serial file queue + * `RKFileQueue`, reading/writing from multiple threads should be perceived as + * being atomic, unless someone bypasses the `RCTAsyncLocalStorage` API. + * + * Keys and values must always be strings or an error is returned. + */ +@interface RCTAsyncLocalStorage : NSObject + +@property (nonatomic, assign) BOOL clearOnInvalidate; + +@property (nonatomic, readonly, getter=isValid) BOOL valid; + +// Clear the RCTAsyncLocalStorage data from native code +- (void)clearAllData; + +// For clearing data when the bridge may not exist, e.g. when logging out. ++ (void)clearAllData; + +// Grab data from the cache. ResponseBlock result array will have an error at position 0, and an array of arrays at +// position 1. +- (void)multiGet:(NSArray *)keys callback:(RCTResponseSenderBlock)callback; + +// Add multiple key value pairs to the cache. +- (void)multiSet:(NSArray *> *)kvPairs callback:(RCTResponseSenderBlock)callback; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAutoInsetsProtocol.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAutoInsetsProtocol.h new file mode 100644 index 0000000..fc18a9a --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTAutoInsetsProtocol.h @@ -0,0 +1,27 @@ +/* + * 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 + +/** + * Defines a View that wants to support auto insets adjustment + */ +@protocol RCTAutoInsetsProtocol + +@property (nonatomic, assign, readwrite) UIEdgeInsets contentInset; +@property (nonatomic, assign, readwrite) BOOL automaticallyAdjustContentInsets; + +/** + * Automatically adjusted content inset depends on view controller's top and bottom + * layout guides so if you've changed one of them (e.g. after rotation or manually) you should call this method + * to recalculate and refresh content inset. + * To handle case with changing navigation bar height call this method from viewDidLayoutSubviews: + * of your view controller. + */ +- (void)refreshContentInset; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBackedTextInputDelegate.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBackedTextInputDelegate.h new file mode 100644 index 0000000..3e1839b --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBackedTextInputDelegate.h @@ -0,0 +1,42 @@ +/* + * 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 + +@protocol RCTBackedTextInputViewProtocol; + +NS_ASSUME_NONNULL_BEGIN + +@protocol RCTBackedTextInputDelegate + +- (BOOL)textInputShouldBeginEditing; // Return `NO` to disallow editing. +- (void)textInputDidBeginEditing; + +- (BOOL)textInputShouldEndEditing; // Return `YES` to allow editing to stop and to resign first responder status. `NO` to disallow the editing session to end. +- (void)textInputDidEndEditing; // May be called if forced even if `textInputShouldEndEditing` returns `NO` (e.g. view removed from window) or `[textInput endEditing:YES]` called. + +- (BOOL)textInputShouldReturn; // May be called right before `textInputShouldEndEditing` if "Return" button was pressed. +- (void)textInputDidReturn; + +/* + * Called before any change in the TextInput. The delegate has the opportunity to change the replacement string or reject the change completely. + * To change the replacement, return the changed version of the `text`. + * To accept the change, return `text` argument as-is. + * To reject the change, return `nil`. + */ +- (NSString *)textInputShouldChangeText:(NSString *)text inRange:(NSRange)range; +- (void)textInputDidChange; + +- (void)textInputDidChangeSelection; + +@optional + +- (void)scrollViewDidScroll:(UIScrollView *)scrollView; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBackedTextInputDelegateAdapter.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBackedTextInputDelegateAdapter.h new file mode 100644 index 0000000..a7f3251 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBackedTextInputDelegateAdapter.h @@ -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 + +#import "RCTBackedTextInputViewProtocol.h" +#import "RCTBackedTextInputDelegate.h" + +NS_ASSUME_NONNULL_BEGIN + +#pragma mark - RCTBackedTextFieldDelegateAdapter (for UITextField) + +@interface RCTBackedTextFieldDelegateAdapter : NSObject + +- (instancetype)initWithTextField:(UITextField *)backedTextInputView; + +- (void)skipNextTextInputDidChangeSelectionEventWithTextRange:(UITextRange *)textRange; +- (void)selectedTextRangeWasSet; + +@end + +#pragma mark - RCTBackedTextViewDelegateAdapter (for UITextView) + +@interface RCTBackedTextViewDelegateAdapter : NSObject + +- (instancetype)initWithTextView:(UITextView *)backedTextInputView; + +- (void)skipNextTextInputDidChangeSelectionEventWithTextRange:(UITextRange *)textRange; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBackedTextInputViewProtocol.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBackedTextInputViewProtocol.h new file mode 100644 index 0000000..09f4fe2 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBackedTextInputViewProtocol.h @@ -0,0 +1,50 @@ +/* + * 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 + +@protocol RCTBackedTextInputDelegate; +@class RCTTextAttributes; + +NS_ASSUME_NONNULL_BEGIN + +@protocol RCTBackedTextInputViewProtocol + +@property (nonatomic, copy, nullable) NSAttributedString *attributedText; +@property (nonatomic, copy, nullable) NSString *placeholder; +@property (nonatomic, strong, nullable) UIColor *placeholderColor; +@property (nonatomic, assign, readonly) BOOL textWasPasted; +@property (nonatomic, assign) UIEdgeInsets textContainerInset; +@property (nonatomic, strong, nullable) UIView *inputAccessoryView; +@property (nonatomic, strong, nullable) UIView *inputView; +@property (nonatomic, weak, nullable) id textInputDelegate; +@property (nonatomic, readonly) CGSize contentSize; +@property (nonatomic, strong, nullable) NSDictionary *defaultTextAttributes; +@property (nonatomic, assign) BOOL contextMenuHidden; +@property (nonatomic, assign, getter=isEditable) BOOL editable; +@property (nonatomic, assign) BOOL caretHidden; +@property (nonatomic, assign) BOOL enablesReturnKeyAutomatically; +@property (nonatomic, assign) UITextFieldViewMode clearButtonMode; +@property (nonatomic, getter=isScrollEnabled) BOOL scrollEnabled; +@property (nonatomic, strong, nullable) NSString *inputAccessoryViewID; + +// This protocol disallows direct access to `selectedTextRange` property because +// unwise usage of it can break the `delegate` behavior. So, we always have to +// explicitly specify should `delegate` be notified about the change or not. +// If the change was initiated programmatically, we must NOT notify the delegate. +// If the change was a result of user actions (like typing or touches), we MUST notify the delegate. +- (void)setSelectedTextRange:(nullable UITextRange *)selectedTextRange NS_UNAVAILABLE; +- (void)setSelectedTextRange:(nullable UITextRange *)selectedTextRange notifyDelegate:(BOOL)notifyDelegate; + +// This protocol disallows direct access to `text` property because +// unwise usage of it can break the `attributeText` behavior. +// Use `attributedText.string` instead. +@property (nonatomic, copy, nullable) NSString *text NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBaseTextInputShadowView.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBaseTextInputShadowView.h new file mode 100644 index 0000000..44b46db --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBaseTextInputShadowView.h @@ -0,0 +1,25 @@ +/* + * 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 "RCTBaseTextShadowView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTBaseTextInputShadowView : RCTBaseTextShadowView + +- (instancetype)initWithBridge:(RCTBridge *)bridge; + +@property (nonatomic, copy, nullable) NSString *text; +@property (nonatomic, copy, nullable) NSString *placeholder; +@property (nonatomic, assign) NSInteger maximumNumberOfLines; +@property (nonatomic, copy, nullable) RCTDirectEventBlock onContentSizeChange; + +- (void)uiManagerWillPerformMounting; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBaseTextInputView.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBaseTextInputView.h new file mode 100644 index 0000000..d73f082 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBaseTextInputView.h @@ -0,0 +1,63 @@ +/* + * 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 + +#import + +#import "RCTBackedTextInputDelegate.h" +#import "RCTBackedTextInputViewProtocol.h" + +@class RCTBridge; +@class RCTTextAttributes; +@class RCTTextSelection; + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTBaseTextInputView : RCTView + +- (instancetype)initWithBridge:(RCTBridge *)bridge NS_DESIGNATED_INITIALIZER; + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithCoder:(NSCoder *)decoder NS_UNAVAILABLE; +- (instancetype)initWithFrame:(CGRect)frame NS_UNAVAILABLE; + +@property (nonatomic, readonly) UIView *backedTextInputView; + +@property (nonatomic, strong, nullable) RCTTextAttributes *textAttributes; +@property (nonatomic, assign) UIEdgeInsets reactPaddingInsets; +@property (nonatomic, assign) UIEdgeInsets reactBorderInsets; + +@property (nonatomic, copy, nullable) RCTDirectEventBlock onContentSizeChange; +@property (nonatomic, copy, nullable) RCTDirectEventBlock onSelectionChange; +@property (nonatomic, copy, nullable) RCTDirectEventBlock onChange; +@property (nonatomic, copy, nullable) RCTDirectEventBlock onTextInput; +@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; +@property (nonatomic, assign) BOOL clearTextOnFocus; +@property (nonatomic, assign) BOOL secureTextEntry; +@property (nonatomic, copy) RCTTextSelection *selection; +@property (nonatomic, strong, nullable) NSNumber *maxLength; +@property (nonatomic, copy, nullable) NSAttributedString *attributedText; +@property (nonatomic, copy) NSString *inputAccessoryViewID; +@property (nonatomic, assign) UIKeyboardType keyboardType; +@property (nonatomic, assign) BOOL showSoftInputOnFocus; + +/** + Sets selection intext input if both start and end are within range of the text input. + **/ +- (void)setSelectionStart:(NSInteger)start + selectionEnd:(NSInteger)end; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBaseTextInputViewManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBaseTextInputViewManager.h new file mode 100644 index 0000000..5201bdb --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBaseTextInputViewManager.h @@ -0,0 +1,12 @@ +/* + * 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 "RCTBaseTextViewManager.h" + +@interface RCTBaseTextInputViewManager : RCTBaseTextViewManager + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBaseTextShadowView.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBaseTextShadowView.h new file mode 100644 index 0000000..9f2c944 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBaseTextShadowView.h @@ -0,0 +1,27 @@ +/* + * 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 + +#import "RCTTextAttributes.h" + +NS_ASSUME_NONNULL_BEGIN + +extern NSString *const RCTBaseTextShadowViewEmbeddedShadowViewAttributeName; + +@interface RCTBaseTextShadowView : RCTShadowView { + @protected NSAttributedString *_Nullable cachedAttributedText; + @protected RCTTextAttributes *_Nullable cachedTextAttributes; +} + +@property (nonatomic, strong) RCTTextAttributes *textAttributes; + +- (NSAttributedString *)attributedTextWithBaseTextAttributes:(nullable RCTTextAttributes *)baseTextAttributes; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBaseTextViewManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBaseTextViewManager.h new file mode 100644 index 0000000..b0f9470 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBaseTextViewManager.h @@ -0,0 +1,16 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTBaseTextViewManager : RCTViewManager + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBlobManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBlobManager.h new file mode 100755 index 0000000..04b905c --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBlobManager.h @@ -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 +#import +#import +#import + +@interface RCTBlobManager : NSObject + +- (NSString *)store:(NSData *)data; + +- (void)store:(NSData *)data withId:(NSString *)blobId; + +- (NSData *)resolve:(NSDictionary *)blob; + +- (NSData *)resolve:(NSString *)blobId offset:(NSInteger)offset size:(NSInteger)size; + +- (NSData *)resolveURL:(NSURL *)url; + +- (void)remove:(NSString *)blobId; + +- (void)createFromParts:(NSArray *> *)parts withId:(NSString *)blobId; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBorderDrawing.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBorderDrawing.h new file mode 100644 index 0000000..884aa79 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBorderDrawing.h @@ -0,0 +1,67 @@ +/* + * 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 + +#import +#import + +typedef struct { + CGFloat topLeft; + CGFloat topRight; + CGFloat bottomLeft; + CGFloat bottomRight; +} RCTCornerRadii; + +typedef struct { + CGSize topLeft; + CGSize topRight; + CGSize bottomLeft; + CGSize bottomRight; +} RCTCornerInsets; + +typedef struct { + CGColorRef top; + CGColorRef left; + CGColorRef bottom; + CGColorRef right; +} RCTBorderColors; + +/** + * Determine if the border widths, colors and radii are all equal. + */ +RCT_EXTERN BOOL RCTBorderInsetsAreEqual(UIEdgeInsets borderInsets); +RCT_EXTERN BOOL RCTCornerRadiiAreEqual(RCTCornerRadii cornerRadii); +RCT_EXTERN BOOL RCTBorderColorsAreEqual(RCTBorderColors borderColors); + +/** + * Convert RCTCornerRadii to RCTCornerInsets by applying border insets. + * Effectively, returns radius - inset, with a lower bound of 0.0. + */ +RCT_EXTERN RCTCornerInsets RCTGetCornerInsets(RCTCornerRadii cornerRadii, UIEdgeInsets borderInsets); + +/** + * Create a CGPath representing a rounded rectangle with the specified bounds + * and corner insets. Note that the CGPathRef must be released by the caller. + */ +RCT_EXTERN CGPathRef +RCTPathCreateWithRoundedRect(CGRect bounds, RCTCornerInsets cornerInsets, const CGAffineTransform *transform); + +/** + * Draw a CSS-compliant border as an image. You can determine if it's scalable + * by inspecting the image's `capInsets`. + * + * `borderInsets` defines the border widths for each edge. + */ +RCT_EXTERN UIImage *RCTGetBorderImage( + RCTBorderStyle borderStyle, + CGSize viewSize, + RCTCornerRadii cornerRadii, + UIEdgeInsets borderInsets, + RCTBorderColors borderColors, + CGColorRef backgroundColor, + BOOL drawToEdge); diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBorderStyle.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBorderStyle.h new file mode 100644 index 0000000..70d6d72 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBorderStyle.h @@ -0,0 +1,15 @@ +/* + * 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 + +typedef NS_ENUM(NSInteger, RCTBorderStyle) { + RCTBorderStyleUnset = 0, + RCTBorderStyleSolid, + RCTBorderStyleDotted, + RCTBorderStyleDashed, +}; diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBridge+Private.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBridge+Private.h new file mode 100644 index 0000000..9dd96a5 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBridge+Private.h @@ -0,0 +1,157 @@ +/* + * 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 + +@class RCTModuleRegistry; +@class RCTModuleData; +@protocol RCTJavaScriptExecutor; + +RCT_EXTERN NSArray *RCTGetModuleClasses(void); +RCT_EXTERN void RCTRegisterModule(Class); + +@interface RCTBridge () + +// Private designated initializer +- (instancetype)initWithDelegate:(id)delegate + bundleURL:(NSURL *)bundleURL + moduleProvider:(RCTBridgeModuleListProvider)block + launchOptions:(NSDictionary *)launchOptions NS_DESIGNATED_INITIALIZER; + +// Used for the profiler flow events between JS and native +@property (nonatomic, assign) int64_t flowID; +@property (nonatomic, assign) CFMutableDictionaryRef flowIDMap; +@property (nonatomic, strong) NSLock *flowIDMapLock; + +// Used by RCTDevMenu +@property (nonatomic, copy) NSString *bridgeDescription; + ++ (instancetype)currentBridge; ++ (void)setCurrentBridge:(RCTBridge *)bridge; + +/** + * Bridge setup code - creates an instance of RCTBachedBridge. Exposed for + * test only + */ +- (void)setUp; + +/** + * This method is used to invoke a callback that was registered in the + * JavaScript application context. Safe to call from any thread. + */ +- (void)enqueueCallback:(NSNumber *)cbID args:(NSArray *)args; + +/** + * This property is mostly used on the main thread, but may be touched from + * a background thread if the RCTBridge happens to deallocate on a background + * thread. Therefore, we want all writes to it to be seen atomically. + */ +@property (atomic, strong) RCTBridge *batchedBridge; + +/** + * The block that creates the modules' instances to be added to the bridge. + * Exposed for RCTCxxBridge + */ +@property (nonatomic, copy, readonly) RCTBridgeModuleListProvider moduleProvider; + +/** + * Used by RCTDevMenu to override the `hot` param of the current bundleURL. + */ +@property (nonatomic, strong, readwrite) NSURL *bundleURL; + +/** + * An object that allows one to require NativeModules/TurboModules. + * RCTModuleRegistry is implemented in bridgeless mode and bridge mode. + * Used by RCTRootView. + */ +@property (nonatomic, strong, readonly) RCTModuleRegistry *moduleRegistry; + +@end + +@interface RCTBridge (RCTCxxBridge) + +/** + * Used by RCTModuleData + */ + +@property (nonatomic, weak, readonly) RCTBridge *parentBridge; + +/** + * Used by RCTModuleData + */ +@property (nonatomic, assign, readonly) BOOL moduleSetupComplete; + +/** + * Called on the child bridge to run the executor and start loading. + */ +- (void)start; + +/** + * Used by RCTModuleData to register the module for frame updates after it is + * lazily initialized. + */ +- (void)registerModuleForFrameUpdates:(id)module withModuleData:(RCTModuleData *)moduleData; + +/** + * Dispatch work to a module's queue - this is also suports the fake RCTJSThread + * queue. Exposed for the RCTProfiler + */ +- (void)dispatchBlock:(dispatch_block_t)block queue:(dispatch_queue_t)queue; + +/** + * Get the module data for a given module name. Used by UIManager to implement + * the `dispatchViewManagerCommand` method. + */ +- (RCTModuleData *)moduleDataForName:(NSString *)moduleName; + +/** + * Registers additional classes with the ModuleRegistry. + */ +- (void)registerAdditionalModuleClasses:(NSArray *)newModules; + +/** + * Updates the ModuleRegistry with a pre-initialized instance. + */ +- (void)updateModuleWithInstance:(id)instance; + +/** + * Systrace profiler toggling methods exposed for the RCTDevMenu + */ +- (void)startProfiling; +- (void)stopProfiling:(void (^)(NSData *))callback; + +/** + * Synchronously call a specific native module's method and return the result + */ +- (id)callNativeModule:(NSUInteger)moduleID method:(NSUInteger)methodID params:(NSArray *)params; + +/** + * Hook exposed for RCTLog to send logs to JavaScript when not running in JSC + */ +- (void)logMessage:(NSString *)message level:(NSString *)level; + +/** + * Allow super fast, one time, timers to skip the queue and be directly executed + */ +- (void)_immediatelyCallTimer:(NSNumber *)timer; + +@end + +@interface RCTBridge (Inspector) + +@property (nonatomic, readonly, getter=isInspectable) BOOL inspectable; + +@end + +@interface RCTCxxBridge : RCTBridge + +// TODO(cjhopman): this seems unsafe unless we require that it is only called on the main js queue. +@property (nonatomic, readonly) void *runtime; + +- (instancetype)initWithParentBridge:(RCTBridge *)bridge NS_DESIGNATED_INITIALIZER; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBridge.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBridge.h new file mode 100644 index 0000000..8eef1ce --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBridge.h @@ -0,0 +1,337 @@ +/* + * 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 + +#import +#import +#import +#import +#import + +@class JSValue; +@class RCTBridge; +@class RCTPerformanceLogger; + +/** + * This notification fires when the bridge initializes. + */ +RCT_EXTERN NSString *const RCTJavaScriptWillStartLoadingNotification; + +/** + * This notification fires when the bridge starts executing the JS bundle. + */ +RCT_EXTERN NSString *const RCTJavaScriptWillStartExecutingNotification; + +/** + * This notification fires when the bridge has finished loading the JS bundle. + */ +RCT_EXTERN NSString *const RCTJavaScriptDidLoadNotification; + +/** + * This notification fires when the bridge failed to load the JS bundle. The + * `error` key can be used to determine the error that occurred. + */ +RCT_EXTERN NSString *const RCTJavaScriptDidFailToLoadNotification; + +/** + * This notification fires each time a native module is instantiated. The + * `module` key will contain a reference to the newly-created module instance. + * Note that this notification may be fired before the module is available via + * the `[bridge moduleForClass:]` method. + */ +RCT_EXTERN NSString *const RCTDidInitializeModuleNotification; + +/** + * This notification fires each time a module is setup after it is initialized. The + * `RCTDidSetupModuleNotificationModuleNameKey` key will contain a reference to the module name and + * `RCTDidSetupModuleNotificationSetupTimeKey` will contain the setup time in ms. + */ +RCT_EXTERN NSString *const RCTDidSetupModuleNotification; + +/** + * Key for the module name (NSString) in the + * RCTDidSetupModuleNotification userInfo dictionary. + */ +RCT_EXTERN NSString *const RCTDidSetupModuleNotificationModuleNameKey; + +/** + * Key for the setup time (NSNumber) in the + * RCTDidSetupModuleNotification userInfo dictionary. + */ +RCT_EXTERN NSString *const RCTDidSetupModuleNotificationSetupTimeKey; + +/** + * DEPRECATED - Use RCTReloadCommand instead. This notification fires just before the bridge starts + * processing a request to reload. + */ +RCT_EXTERN NSString *const RCTBridgeWillReloadNotification; + +/** + * This notification fires whenever a fast refresh happens. + */ +RCT_EXTERN NSString *const RCTBridgeFastRefreshNotification; + +/** + * This notification fires just before the bridge begins downloading a script + * from the packager. + */ +RCT_EXTERN NSString *const RCTBridgeWillDownloadScriptNotification; + +/** + * This notification fires just after the bridge finishes downloading a script + * from the packager. + */ +RCT_EXTERN NSString *const RCTBridgeDidDownloadScriptNotification; + +/** + * This notification fires right after the bridge is about to invalidate NativeModule + * instances during teardown. Handle this notification to perform additional invalidation. + */ +RCT_EXTERN NSString *const RCTBridgeWillInvalidateModulesNotification; + +/** + * This notification fires right after the bridge finishes invalidating NativeModule + * instances during teardown. Handle this notification to perform additional invalidation. + */ +RCT_EXTERN NSString *const RCTBridgeDidInvalidateModulesNotification; + +/** + * This notification fires right before the bridge starting invalidation process. + * Handle this notification to perform additional invalidation. + * The notification can be issued on any thread. + */ +RCT_EXTERN NSString *const RCTBridgeWillBeInvalidatedNotification; + +/** + * Key for the RCTSource object in the RCTBridgeDidDownloadScriptNotification + * userInfo dictionary. + */ +RCT_EXTERN NSString *const RCTBridgeDidDownloadScriptNotificationSourceKey; + +/** + * Key for the reload reason in the RCTBridgeWillReloadNotification userInfo dictionary. + */ +RCT_EXTERN NSString *const RCTBridgeDidDownloadScriptNotificationReasonKey; + +/** + * Key for the bridge description (NSString_ in the + * RCTBridgeDidDownloadScriptNotification userInfo dictionary. + */ +RCT_EXTERN NSString *const RCTBridgeDidDownloadScriptNotificationBridgeDescriptionKey; + +/** + * This block can be used to instantiate modules that require additional + * init parameters, or additional configuration prior to being used. + * The bridge will call this block to instantiate the modules, and will + * be responsible for invalidating/releasing them when the bridge is destroyed. + * For this reason, the block should always return new module instances, and + * module instances should not be shared between bridges. + */ +typedef NSArray> * (^RCTBridgeModuleListProvider)(void); + +/** + * These blocks are used to report whether an additional bundle + * fails or succeeds loading. + */ +typedef void (^RCTLoadAndExecuteErrorBlock)(NSError *error); + +/** + * This function returns the module name for a given class. + */ +RCT_EXTERN NSString *RCTBridgeModuleNameForClass(Class bridgeModuleClass); + +/** + * Experimental. + * Check/set if JSI-bound NativeModule is enabled. By default it's off. + */ +RCT_EXTERN BOOL RCTTurboModuleEnabled(void); +RCT_EXTERN void RCTEnableTurboModule(BOOL enabled); + +// Turn on TurboModule eager initialization +RCT_EXTERN BOOL RCTTurboModuleEagerInitEnabled(void); +RCT_EXTERN void RCTEnableTurboModuleEagerInit(BOOL enabled); + +// Turn on TurboModule shared mutex initialization +RCT_EXTERN BOOL RCTTurboModuleSharedMutexInitEnabled(void); +RCT_EXTERN void RCTEnableTurboModuleSharedMutexInit(BOOL enabled); + +// Turn off TurboModule delegate locking +RCT_EXTERN BOOL RCTTurboModuleManagerDelegateLockingDisabled(void); +RCT_EXTERN void RCTDisableTurboModuleManagerDelegateLocking(BOOL enabled); + +typedef enum { + kRCTGlobalScope, + kRCTGlobalScopeUsingRetainJSCallback, + kRCTTurboModuleManagerScope, +} RCTTurboModuleCleanupMode; + +RCT_EXTERN RCTTurboModuleCleanupMode RCTGetTurboModuleCleanupMode(void); +RCT_EXTERN void RCTSetTurboModuleCleanupMode(RCTTurboModuleCleanupMode mode); + +/** + * Async batched bridge used to communicate with the JavaScript application. + */ +@interface RCTBridge : NSObject + +/** + * Creates a new bridge with a custom RCTBridgeDelegate. + * + * All the interaction with the JavaScript context should be done using the bridge + * instance of the RCTBridgeModules. Modules will be automatically instantiated + * using the default contructor, but you can optionally pass in an array of + * pre-initialized module instances if they require additional init parameters + * or configuration. + */ +- (instancetype)initWithDelegate:(id)delegate launchOptions:(NSDictionary *)launchOptions; + +/** + * DEPRECATED: Use initWithDelegate:launchOptions: instead + * + * The designated initializer. This creates a new bridge on top of the specified + * executor. The bridge should then be used for all subsequent communication + * with the JavaScript code running in the executor. Modules will be automatically + * instantiated using the default contructor, but you can optionally pass in an + * array of pre-initialized module instances if they require additional init + * parameters or configuration. + */ +- (instancetype)initWithBundleURL:(NSURL *)bundleURL + moduleProvider:(RCTBridgeModuleListProvider)block + launchOptions:(NSDictionary *)launchOptions; + +/** + * This method is used to call functions in the JavaScript application context. + * It is primarily intended for use by modules that require two-way communication + * with the JavaScript code. Safe to call from any thread. + */ +- (void)enqueueJSCall:(NSString *)moduleDotMethod args:(NSArray *)args; +- (void)enqueueJSCall:(NSString *)module + method:(NSString *)method + args:(NSArray *)args + completion:(dispatch_block_t)completion; + +/** + * This method registers the file path of an additional JS segment by its ID. + * + * @experimental + */ +- (void)registerSegmentWithId:(NSUInteger)segmentId path:(NSString *)path; + +/** + * Retrieve a bridge module instance by name or class. Note that modules are + * lazily instantiated, so calling these methods for the first time with a given + * module name/class may cause the class to be synchronously instantiated, + * potentially blocking both the calling thread and main thread for a short time. + * + * Note: This method does NOT lazily load the particular module if it's not yet loaded. + */ +- (id)moduleForName:(NSString *)moduleName; +- (id)moduleForName:(NSString *)moduleName lazilyLoadIfNecessary:(BOOL)lazilyLoad; +// Note: This method lazily load the module as necessary. +- (id)moduleForClass:(Class)moduleClass; + +/** + * When a NativeModule performs a lookup for a TurboModule, we need to query + * the TurboModuleRegistry. + */ +- (void)setRCTTurboModuleRegistry:(id)turboModuleRegistry; + +/** + * This hook is called by the TurboModule infra with every TurboModule that's created. + * It allows the bridge to attach properties to TurboModules that give TurboModules + * access to Bridge APIs. + */ +- (void)attachBridgeAPIsToTurboModule:(id)module; + +/** + * Convenience method for retrieving all modules conforming to a given protocol. + * Modules will be synchronously instantiated if they haven't already been, + * potentially blocking both the calling thread and main thread for a short time. + */ +- (NSArray *)modulesConformingToProtocol:(Protocol *)protocol; + +/** + * Test if a module has been initialized. Use this prior to calling + * `moduleForClass:` or `moduleForName:` if you do not want to cause the module + * to be instantiated if it hasn't been already. + */ +- (BOOL)moduleIsInitialized:(Class)moduleClass; + +/** + * All registered bridge module classes. + */ +@property (nonatomic, copy, readonly) NSArray *moduleClasses; + +/** + * URL of the script that was loaded into the bridge. + */ +@property (nonatomic, strong, readonly) NSURL *bundleURL; + +/** + * The class of the executor currently being used. Changes to this value will + * take effect after the bridge is reloaded. + */ +@property (nonatomic, strong) Class executorClass; + +/** + * The delegate provided during the bridge initialization + */ +@property (nonatomic, weak, readonly) id delegate; + +/** + * The launch options that were used to initialize the bridge. + */ +@property (nonatomic, copy, readonly) NSDictionary *launchOptions; + +/** + * Use this to check if the bridge is currently loading. + */ +@property (nonatomic, readonly, getter=isLoading) BOOL loading; + +/** + * Use this to check if the bridge has been invalidated. + */ +@property (nonatomic, readonly, getter=isValid) BOOL valid; + +/** + * Link to the Performance Logger that logs React Native perf events. + */ +@property (nonatomic, readonly, strong) RCTPerformanceLogger *performanceLogger; + +/** + * Reload the bundle and reset executor & modules. Safe to call from any thread. + */ +- (void)reload __deprecated_msg("Use RCTReloadCommand instead"); + +/** + * Reload the bundle and reset executor & modules. Safe to call from any thread. + */ +- (void)reloadWithReason:(NSString *)reason __deprecated_msg("Use RCTReloadCommand instead"); + +/** + * Handle notifications for a fast refresh. Safe to call from any thread. + */ +- (void)onFastRefresh; + +/** + * Inform the bridge, and anything subscribing to it, that it should reload. + */ +- (void)requestReload __deprecated_msg("Use RCTReloadCommand instead"); + +/** + * Says whether bridge has started receiving calls from JavaScript. + */ +- (BOOL)isBatchActive; + +/** + * Loads and executes additional bundles in the VM for development. + */ +- (void)loadAndExecuteSplitBundleURL:(NSURL *)bundleURL + onError:(RCTLoadAndExecuteErrorBlock)onError + onComplete:(dispatch_block_t)onComplete; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBridgeDelegate.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBridgeDelegate.h new file mode 100644 index 0000000..00c26f2 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBridgeDelegate.h @@ -0,0 +1,79 @@ +/* + * 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 + +@class RCTBridge; +@protocol RCTBridgeModule; + +@protocol RCTBridgeDelegate + +/** + * The location of the JavaScript source file. When running from the packager + * this should be an absolute URL, e.g. `http://localhost:8081/index.ios.bundle`. + * When running from a locally bundled JS file, this should be a `file://` url + * pointing to a path inside the app resources, e.g. `file://.../main.jsbundle`. + */ +- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge; + +@optional + +/** + * The bridge initializes any registered RCTBridgeModules automatically, however + * if you wish to instantiate your own module instances, you can return them + * from this method. + * + * Note: You should always return a new instance for each call, rather than + * returning the same instance each time the bridge is reloaded. Module instances + * should not be shared between bridges, and this may cause unexpected behavior. + * + * It is also possible to override standard modules with your own implementations + * by returning a class with the same `moduleName` from this method, but this is + * not recommended in most cases - if the module methods and behavior do not + * match exactly, it may lead to bugs or crashes. + */ +- (NSArray> *)extraModulesForBridge:(RCTBridge *)bridge; + +/** + * Configure whether the JSCExecutor created should use the system JSC API or + * alternative hooks provided. When returning YES from this method, you must have + * previously called facebook::react::setCustomJSCWrapper. + * + * @experimental + */ +- (BOOL)shouldBridgeUseCustomJSC:(RCTBridge *)bridge; + +/** + * The bridge will call this method when a module been called from JS + * cannot be found among registered modules. + * It should return YES if the module with name 'moduleName' was registered + * in the implementation, and the system must attempt to look for it again among registered. + * If the module was not registered, return NO to prevent further searches. + */ +- (BOOL)bridge:(RCTBridge *)bridge didNotFindModule:(NSString *)moduleName; + +/** + * The bridge will automatically attempt to load the JS source code from the + * location specified by the `sourceURLForBridge:` method, however, if you want + * to handle loading the JS yourself, you can do so by implementing this method. + */ +- (void)loadSourceForBridge:(RCTBridge *)bridge + onProgress:(RCTSourceLoadProgressBlock)onProgress + onComplete:(RCTSourceLoadBlock)loadCallback; + +/** + * Similar to loadSourceForBridge:onProgress:onComplete: but without progress + * reporting. + */ +- (void)loadSourceForBridge:(RCTBridge *)bridge withBlock:(RCTSourceLoadBlock)loadCallback; + +/** + * Retrieve the list of lazy-native-modules names for the given bridge. + */ +- (NSDictionary *)extraLazyModuleClassesForBridge:(RCTBridge *)bridge; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBridgeMethod.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBridgeMethod.h new file mode 100644 index 0000000..35d2b89 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBridgeMethod.h @@ -0,0 +1,37 @@ +/* + * 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 + +@class RCTBridge; + +typedef NS_ENUM(NSUInteger, RCTFunctionType) { + RCTFunctionTypeNormal, + RCTFunctionTypePromise, + RCTFunctionTypeSync, +}; + +static inline const char *RCTFunctionDescriptorFromType(RCTFunctionType type) +{ + switch (type) { + case RCTFunctionTypeNormal: + return "async"; + case RCTFunctionTypePromise: + return "promise"; + case RCTFunctionTypeSync: + return "sync"; + } +}; + +@protocol RCTBridgeMethod + +@property (nonatomic, readonly) const char *JSMethodName; +@property (nonatomic, readonly) RCTFunctionType functionType; + +- (id)invokeWithBridge:(RCTBridge *)bridge module:(id)module arguments:(NSArray *)arguments; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBridgeModule.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBridgeModule.h new file mode 100644 index 0000000..fff361a --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBridgeModule.h @@ -0,0 +1,469 @@ +/* + * 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 +#import + +#import +#import + +@class RCTBridge; +@protocol RCTBridgeMethod; +@class RCTModuleRegistry; +@class RCTViewRegistry; +@class RCTBundleManager; +@class RCTCallableJSModules; + +/** + * The type of a block that is capable of sending a response to a bridged + * operation. Use this for returning callback methods to JS. + */ +typedef void (^RCTResponseSenderBlock)(NSArray *response); + +/** + * The type of a block that is capable of sending an error response to a + * bridged operation. Use this for returning error information to JS. + */ +typedef void (^RCTResponseErrorBlock)(NSError *error); + +/** + * Block that bridge modules use to resolve the JS promise waiting for a result. + * Nil results are supported and are converted to JS's undefined value. + */ +typedef void (^RCTPromiseResolveBlock)(id result); + +/** + * Block that bridge modules use to reject the JS promise waiting for a result. + * The error may be nil but it is preferable to pass an NSError object for more + * precise error messages. + */ +typedef void (^RCTPromiseRejectBlock)(NSString *code, NSString *message, NSError *error); + +RCT_EXTERN_C_BEGIN + +typedef struct RCTMethodInfo { + const char *const jsName; + const char *const objcName; + const BOOL isSync; +} RCTMethodInfo; + +RCT_EXTERN_C_END + +/** + * Provides the interface needed to register a bridge module. + */ +@protocol RCTBridgeModule + +/** + * Place this macro in your class implementation to automatically register + * your module with the bridge when it loads. The optional js_name argument + * will be used as the JS module name. If omitted, the JS module name will + * match the Objective-C class name. + */ +#define RCT_EXPORT_MODULE(js_name) \ + RCT_EXTERN void RCTRegisterModule(Class); \ + +(NSString *)moduleName \ + { \ + return @ #js_name; \ + } \ + +(void)load \ + { \ + RCTRegisterModule(self); \ + } + +/** + * Same as RCT_EXPORT_MODULE, but uses __attribute__((constructor)) for module + * registration. Useful for registering swift classes that forbids use of load + * Used in RCT_EXTERN_REMAP_MODULE + */ +#define RCT_EXPORT_MODULE_NO_LOAD(js_name, objc_name) \ + RCT_EXTERN void RCTRegisterModule(Class); \ + +(NSString *)moduleName \ + { \ + return @ #js_name; \ + } \ + __attribute__((constructor)) static void RCT_CONCAT(initialize_, objc_name)() \ + { \ + RCTRegisterModule([objc_name class]); \ + } + +/** + * To improve startup performance users may want to generate their module lists + * at build time and hook the delegate to merge with the runtime list. This + * macro takes the place of the above for those cases by omitting the +load + * generation. + * + */ +#define RCT_EXPORT_PRE_REGISTERED_MODULE(js_name) \ + +(NSString *)moduleName \ + { \ + return @ #js_name; \ + } + +// Implemented by RCT_EXPORT_MODULE ++ (NSString *)moduleName; + +@optional + +/** + * A reference to the RCTModuleRegistry. Useful for modules that require access + * to other NativeModules. To implement this in your module, just add `@synthesize + * moduleRegistry = _moduleRegistry;`. If using Swift, add + * `@objc var moduleRegistry: RCTModuleRegistry!` to your module. + */ +@property (nonatomic, weak, readwrite) RCTModuleRegistry *moduleRegistry; + +/** + * A reference to the RCTViewRegistry. Useful for modules that query UIViews, + * given a react tag. This API is deprecated, and only exists to help migrate + * NativeModules to Venice. + * + * To implement this in your module, just add `@synthesize + * viewRegistry_DEPRECATED = _viewRegistry_DEPRECATED;`. If using Swift, add + * `@objc var viewRegistry_DEPRECATED: RCTViewRegistry!` to your module. + */ +@property (nonatomic, weak, readwrite) RCTViewRegistry *viewRegistry_DEPRECATED; + +/** + * A reference to the RCTBundleManager. Useful for modules that need to read + * or write to the app's bundle URL. + * + * To implement this in your module, just add `@synthesize bundleManager = + * _bundleManager;`. If using Swift, add `@objc var bundleManager: + * RCTBundleManager!` to your module. + */ +@property (nonatomic, weak, readwrite) RCTBundleManager *bundleManager; + +/** + * A reference to an RCTCallableJSModules. Useful for modules that need to + * call into methods on JavaScript modules registered as callable with + * React Native. + * + * To implement this in your module, just add `@synthesize callableJSModules = + * _callableJSModules;`. If using Swift, add `@objc var callableJSModules: + * RCTCallableJSModules!` to your module. + */ +@property (nonatomic, weak, readwrite) RCTCallableJSModules *callableJSModules; + +/** + * A reference to the RCTBridge. Useful for modules that require access + * to bridge features, such as sending events or making JS calls. This + * will be set automatically by the bridge when it initializes the module. + * To implement this in your module, just add `@synthesize bridge = _bridge;` + * If using Swift, add `@objc var bridge: RCTBridge!` to your module. + */ +@property (nonatomic, weak, readonly) RCTBridge *bridge; + +/** + * The queue that will be used to call all exported methods. If omitted, this + * will call on a default background queue, which is avoids blocking the main + * thread. + * + * If the methods in your module need to interact with UIKit methods, they will + * probably need to call those on the main thread, as most of UIKit is main- + * thread-only. You can tell React Native to call your module methods on the + * main thread by returning a reference to the main queue, like this: + * + * - (dispatch_queue_t)methodQueue + * { + * return dispatch_get_main_queue(); + * } + * + * If you don't want to specify the queue yourself, but you need to use it + * inside your class (e.g. if you have internal methods that need to dispatch + * onto that queue), you can just add `@synthesize methodQueue = _methodQueue;` + * and the bridge will populate the methodQueue property for you automatically + * when it initializes the module. + */ +@property (nonatomic, strong, readonly) dispatch_queue_t methodQueue; + +/** + * Wrap the parameter line of your method implementation with this macro to + * expose it to JS. By default the exposed method will match the first part of + * the Objective-C method selector name (up to the first colon). Use + * RCT_REMAP_METHOD to specify the JS name of the method. + * + * For example, in ModuleName.m: + * + * - (void)doSomething:(NSString *)aString withA:(NSInteger)a andB:(NSInteger)b + * { ... } + * + * becomes + * + * RCT_EXPORT_METHOD(doSomething:(NSString *)aString + * withA:(NSInteger)a + * andB:(NSInteger)b) + * { ... } + * + * and is exposed to JavaScript as `NativeModules.ModuleName.doSomething`. + * + * ## Promises + * + * Bridge modules can also define methods that are exported to JavaScript as + * methods that return a Promise, and are compatible with JS async functions. + * + * Declare the last two parameters of your native method to be a resolver block + * and a rejecter block. The resolver block must precede the rejecter block. + * + * For example: + * + * RCT_EXPORT_METHOD(doSomethingAsync:(NSString *)aString + * resolver:(RCTPromiseResolveBlock)resolve + * rejecter:(RCTPromiseRejectBlock)reject + * { ... } + * + * Calling `NativeModules.ModuleName.doSomethingAsync(aString)` from + * JavaScript will return a promise that is resolved or rejected when your + * native method implementation calls the respective block. + * + */ +#define RCT_EXPORT_METHOD(method) RCT_REMAP_METHOD(, method) + +/** + * Same as RCT_EXPORT_METHOD but the method is called from JS + * synchronously **on the JS thread**, possibly returning a result. + * + * WARNING: in the vast majority of cases, you should use RCT_EXPORT_METHOD which + * allows your native module methods to be called asynchronously: calling + * methods synchronously can have strong performance penalties and introduce + * threading-related bugs to your native modules. + * + * The return type must be of object type (id) and should be serializable + * to JSON. This means that the hook can only return nil or JSON values + * (e.g. NSNumber, NSString, NSArray, NSDictionary). + * + * Calling these methods when running under the websocket executor + * is currently not supported. + */ +#define RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(method) RCT_EXPORT_SYNCHRONOUS_TYPED_METHOD(id, method) + +#define RCT_EXPORT_SYNCHRONOUS_TYPED_METHOD(returnType, method) \ + RCT_REMAP_BLOCKING_SYNCHRONOUS_METHOD(, returnType, method) + +/** + * Similar to RCT_EXPORT_METHOD but lets you set the JS name of the exported + * method. Example usage: + * + * RCT_REMAP_METHOD(executeQueryWithParameters, + * executeQuery:(NSString *)query parameters:(NSDictionary *)parameters) + * { ... } + */ +#define RCT_REMAP_METHOD(js_name, method) \ + _RCT_EXTERN_REMAP_METHOD(js_name, method, NO) \ + -(void)method RCT_DYNAMIC; + +/** + * Similar to RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD but lets you set + * the JS name of the exported method. Example usage: + * + * RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(executeQueryWithParameters, + * executeQuery:(NSString *)query parameters:(NSDictionary *)parameters) + * { ... } + */ +#define RCT_REMAP_BLOCKING_SYNCHRONOUS_METHOD(js_name, returnType, method) \ + _RCT_EXTERN_REMAP_METHOD(js_name, method, YES) \ + -(returnType)method RCT_DYNAMIC; + +/** + * Use this macro in a private Objective-C implementation file to automatically + * register an external module with the bridge when it loads. This allows you to + * register Swift or private Objective-C classes with the bridge. + * + * For example if one wanted to export a Swift class to the bridge: + * + * MyModule.swift: + * + * @objc(MyModule) class MyModule: NSObject { + * + * @objc func doSomething(string: String! withFoo a: Int, bar b: Int) { ... } + * + * } + * + * MyModuleExport.m: + * + * #import + * + * @interface RCT_EXTERN_MODULE(MyModule, NSObject) + * + * RCT_EXTERN_METHOD(doSomething:(NSString *)string withFoo:(NSInteger)a bar:(NSInteger)b) + * + * @end + * + * This will now expose MyModule and the method to JavaScript via + * `NativeModules.MyModule.doSomething` + */ +#define RCT_EXTERN_MODULE(objc_name, objc_supername) RCT_EXTERN_REMAP_MODULE(, objc_name, objc_supername) + +/** + * Like RCT_EXTERN_MODULE, but allows setting a custom JavaScript name. + */ +#define RCT_EXTERN_REMAP_MODULE(js_name, objc_name, objc_supername) \ + objc_name: \ + objc_supername @ \ + end @interface objc_name(RCTExternModule) \ + @end \ + @implementation objc_name (RCTExternModule) \ + RCT_EXPORT_MODULE_NO_LOAD(js_name, objc_name) + +/** + * Use this macro in accordance with RCT_EXTERN_MODULE to export methods + * of an external module. + */ +#define RCT_EXTERN_METHOD(method) _RCT_EXTERN_REMAP_METHOD(, method, NO) + +/** + * Use this macro in accordance with RCT_EXTERN_MODULE to export methods + * of an external module that should be invoked synchronously. + */ +#define RCT_EXTERN__BLOCKING_SYNCHRONOUS_METHOD(method) _RCT_EXTERN_REMAP_METHOD(, method, YES) + +/** + * Like RCT_EXTERN_REMAP_METHOD, but allows setting a custom JavaScript name + * and also whether this method is synchronous. + */ +#define _RCT_EXTERN_REMAP_METHOD(js_name, method, is_blocking_synchronous_method) \ + +(const RCTMethodInfo *)RCT_CONCAT(__rct_export__, RCT_CONCAT(js_name, RCT_CONCAT(__LINE__, __COUNTER__))) \ + { \ + static RCTMethodInfo config = {#js_name, #method, is_blocking_synchronous_method}; \ + return &config; \ + } + +/** + * Most modules can be used from any thread. All of the modules exported non-sync method will be called on its + * methodQueue, and the module will be constructed lazily when its first invoked. Some modules have main need to access + * information that's main queue only (e.g. most UIKit classes). Since we don't want to dispatch synchronously to the + * main thread to this safely, we construct these modules and export their constants ahead-of-time. + * + * Note that when set to false, the module constructor will be called from any thread. + * + * This requirement is currently inferred by checking if the module has a custom initializer or if there's exported + * constants. In the future, we'll stop automatically inferring this and instead only rely on this method. + */ ++ (BOOL)requiresMainQueueSetup; + +/** + * Injects methods into JS. Entries in this array are used in addition to any + * methods defined using the macros above. This method is called only once, + * before registration. + */ +- (NSArray> *)methodsToExport; + +/** + * Injects constants into JS. These constants are made accessible via NativeModules.ModuleName.X. It is only called once + * for the lifetime of the bridge, so it is not suitable for returning dynamic values, but may be used for long-lived + * values such as session keys, that are regenerated only as part of a reload of the entire React application. + * + * If you implement this method and do not implement `requiresMainQueueSetup`, you will trigger deprecated logic + * that eagerly initializes your module on bridge startup. In the future, this behaviour will be changed to default + * to initializing lazily, and even modules with constants will be initialized lazily. + */ +- (NSDictionary *)constantsToExport; + +/** + * Notifies the module that a batch of JS method invocations has just completed. + */ +- (void)batchDidComplete; + +/** + * Notifies the module that the active batch of JS method invocations has been + * partially flushed. + * + * This occurs before -batchDidComplete, and more frequently. + */ +- (void)partialBatchDidFlush; + +@end + +/** + * A protocol that allows TurboModules to do lookup on other TurboModules. + * Calling these methods may cause a module to be synchronously instantiated. + */ +@protocol RCTTurboModuleRegistry +- (id)moduleForName:(const char *)moduleName; + +/** + * Rationale: + * When TurboModules lookup other modules by name, we first check the TurboModule + * registry to see if a TurboModule exists with the respective name. In this case, + * we don't want a RedBox to be raised if the TurboModule isn't found. + * + * This method is deprecated and will be deleted after the migration from + * TurboModules to TurboModules is complete. + */ +- (id)moduleForName:(const char *)moduleName warnOnLookupFailure:(BOOL)warnOnLookupFailure; +- (BOOL)moduleIsInitialized:(const char *)moduleName; + +- (NSArray *)eagerInitModuleNames; +- (NSArray *)eagerInitMainQueueModuleNames; +@end + +/** + * Experimental. + * A protocol to declare that a class supports TurboModule. + * This may be removed in the future. + * See RCTTurboModule.h for actual signature. + */ +@protocol RCTTurboModule; + +/** + * A class that allows NativeModules and TurboModules to look up one another. + */ +@interface RCTModuleRegistry : NSObject +- (void)setBridge:(RCTBridge *)bridge; +- (void)setTurboModuleRegistry:(id)turboModuleRegistry; + +- (id)moduleForName:(const char *)moduleName; +- (id)moduleForName:(const char *)moduleName lazilyLoadIfNecessary:(BOOL)lazilyLoad; +@end + +typedef void (^RCTBridgelessBundleURLSetter)(NSURL *bundleURL); +typedef NSURL * (^RCTBridgelessBundleURLGetter)(void); + +/** + * A class that allows NativeModules/TurboModules to read/write the bundleURL, with or without the bridge. + */ +@interface RCTBundleManager : NSObject +- (void)setBridge:(RCTBridge *)bridge; +- (void)setBridgelessBundleURLGetter:(RCTBridgelessBundleURLGetter)getter + andSetter:(RCTBridgelessBundleURLSetter)setter + andDefaultGetter:(RCTBridgelessBundleURLGetter)defaultGetter; +- (void)resetBundleURL; +@property NSURL *bundleURL; +@end + +typedef UIView * (^RCTBridgelessComponentViewProvider)(NSNumber *); + +/** + * A class that allows NativeModules to query for views, given React Tags. + */ +@interface RCTViewRegistry : NSObject +- (void)setBridge:(RCTBridge *)bridge; +- (void)setBridgelessComponentViewProvider:(RCTBridgelessComponentViewProvider)bridgelessComponentViewProvider; + +- (UIView *)viewForReactTag:(NSNumber *)reactTag; +@end + +typedef void (^RCTBridgelessJSModuleMethodInvoker)( + NSString *moduleName, + NSString *methodName, + NSArray *args, + dispatch_block_t onComplete); + +/** + * A class that allows NativeModules to call methods on JavaScript modules registered + * as callable with React Native. + */ +@interface RCTCallableJSModules : NSObject +- (void)setBridge:(RCTBridge *)bridge; +- (void)setBridgelessJSModuleMethodInvoker:(RCTBridgelessJSModuleMethodInvoker)bridgelessJSModuleMethodInvoker; + +- (void)invokeModule:(NSString *)moduleName method:(NSString *)methodName withArgs:(NSArray *)args; +- (void)invokeModule:(NSString *)moduleName + method:(NSString *)methodName + withArgs:(NSArray *)args + onComplete:(dispatch_block_t)onComplete; +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBundleURLProvider.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBundleURLProvider.h new file mode 100644 index 0000000..26fbbd0 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTBundleURLProvider.h @@ -0,0 +1,164 @@ +/* + * 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 + +#import "RCTDefines.h" + +RCT_EXTERN NSString *const RCTBundleURLProviderUpdatedNotification; +RCT_EXTERN const NSUInteger kRCTBundleURLProviderDefaultPort; + +#if RCT_DEV_MENU | RCT_PACKAGER_LOADING_FUNCTIONALITY +/** + * Allow/disallow accessing the packager server for various runtime scenario. + * For instance, if a test run should never access the packager, disable it + * by calling this function before initializing React Native (RCTBridge etc). + * By default the access is enabled. + */ +RCT_EXTERN void RCTBundleURLProviderAllowPackagerServerAccess(BOOL allowed); +#endif + +@interface RCTBundleURLProvider : NSObject + +/** + * Set default settings on NSUserDefaults. + */ +- (void)setDefaults; + +/** + * Reset every settings to default. + */ +- (void)resetToDefaults; + +/** + * Return the server host. If its a development build and there's no jsLocation defined, + * it will return the server host IP address + */ +- (NSString *)packagerServerHost; + +/** + * Return the server host with optional port. If its a development build and there's no jsLocation defined, + * it will return the server host IP address + */ +- (NSString *)packagerServerHostPort; + +/** + * Returns if there's a packager running at the given host port. + * The port is optional, if not specified, kRCTBundleURLProviderDefaultPort will be used + */ ++ (BOOL)isPackagerRunning:(NSString *)hostPort; + +/** + * Returns if there's a packager running at the given scheme://host:port. + * The port is optional, if not specified, kRCTBundleURLProviderDefaultPort will be used + * The scheme is also optional, if not specified, a default http protocol will be used + */ ++ (BOOL)isPackagerRunning:(NSString *)hostPort scheme:(NSString *)scheme; + +/** + * Returns the jsBundleURL for a given bundle entrypoint and + * the fallback offline JS bundle if the packager is not running. + */ +- (NSURL *)jsBundleURLForBundleRoot:(NSString *)bundleRoot fallbackURLProvider:(NSURL * (^)(void))fallbackURLProvider; + +/** + * Returns the jsBundleURL for a given split bundle entrypoint in development + */ +- (NSURL *)jsBundleURLForSplitBundleRoot:(NSString *)bundleRoot; + +/** + * Returns the jsBundleURL for a given bundle entrypoint and + * the fallback offline JS bundle if the packager is not running. + * if resourceName or extension are nil, "main" and "jsbundle" will be + * used, respectively. + */ +- (NSURL *)jsBundleURLForBundleRoot:(NSString *)bundleRoot + fallbackResource:(NSString *)resourceName + fallbackExtension:(NSString *)extension; + +/** + * Returns the jsBundleURL for a given bundle entrypoint and + * the fallback offline JS bundle if the packager is not running. + */ +- (NSURL *)jsBundleURLForBundleRoot:(NSString *)bundleRoot fallbackResource:(NSString *)resourceName; + +/** + * Returns the jsBundleURL for a given bundle entrypoint and + * the fallback offline JS bundle. If resourceName or extension + * are nil, "main" and "jsbundle" will be used, respectively. + */ +- (NSURL *)jsBundleURLForFallbackResource:(NSString *)resourceName fallbackExtension:(NSString *)extension; + +/** + * Returns the resourceURL for a given bundle entrypoint and + * the fallback offline resource file if the packager is not running. + */ +- (NSURL *)resourceURLForResourceRoot:(NSString *)root + resourceName:(NSString *)name + resourceExtension:(NSString *)extension + offlineBundle:(NSBundle *)offlineBundle; + +/** + * The IP address or hostname of the packager. + */ +@property (nonatomic, copy) NSString *jsLocation; + +@property (nonatomic, assign) BOOL enableMinification; +@property (nonatomic, assign) BOOL enableDev; + +/** + * The scheme/protocol used of the packager, the default is the http protocol + */ +@property (nonatomic, copy) NSString *packagerScheme; + ++ (instancetype)sharedSettings; + +/** + * Given a hostname for the packager and a bundle root, returns the URL to the js bundle. Generally you should use the + * instance method -jsBundleURLForBundleRoot:fallbackResource: which includes logic to guess if the packager is running + * and fall back to a pre-packaged bundle if it is not. + * + * The options here mirror some of Metro's Bundling Options: + * - enableDev: Whether to keep or remove `__DEV__` blocks from the bundle. + * - enableMinification: Enables or disables minification. Usually production bundles are minified and development + * bundles are not. + * - modulesOnly: When true, will only send module definitions without polyfills and without the require-runtime. + * - runModule: When true, will run the main module after defining all modules. This is used in the main bundle but not + * in split bundles. + */ ++ (NSURL *)jsBundleURLForBundleRoot:(NSString *)bundleRoot + packagerHost:(NSString *)packagerHost + enableDev:(BOOL)enableDev + enableMinification:(BOOL)enableMinification; + ++ (NSURL *)jsBundleURLForBundleRoot:(NSString *)bundleRoot + packagerHost:(NSString *)packagerHost + enableDev:(BOOL)enableDev + enableMinification:(BOOL)enableMinification + modulesOnly:(BOOL)modulesOnly + runModule:(BOOL)runModule; + ++ (NSURL *)jsBundleURLForBundleRoot:(NSString *)bundleRoot + packagerHost:(NSString *)packagerHost + packagerScheme:(NSString *)scheme + enableDev:(BOOL)enableDev + enableMinification:(BOOL)enableMinification + modulesOnly:(BOOL)modulesOnly + runModule:(BOOL)runModule; +/** + * Given a hostname for the packager and a resource path (including "/"), return the URL to the resource. + * In general, please use the instance method to decide if the packager is running and fallback to the pre-packaged + * resource if it is not: -resourceURLForResourceRoot:resourceName:resourceExtension:offlineBundle: + */ ++ (NSURL *)resourceURLForResourcePath:(NSString *)path packagerHost:(NSString *)packagerHost query:(NSString *)query; + ++ (NSURL *)resourceURLForResourcePath:(NSString *)path + packagerHost:(NSString *)packagerHost + scheme:(NSString *)scheme + query:(NSString *)query; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTClipboard.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTClipboard.h new file mode 100644 index 0000000..1dd9789 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTClipboard.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTClipboard : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTComponent.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTComponent.h new file mode 100644 index 0000000..4258334 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTComponent.h @@ -0,0 +1,57 @@ +/* + * 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 + +#import + +/** + * These block types can be used for mapping input event handlers from JS to view + * properties. Unlike JS method callbacks, these can be called multiple times. + */ +typedef void (^RCTDirectEventBlock)(NSDictionary *body); +typedef void (^RCTBubblingEventBlock)(NSDictionary *body); + +/** + * Logical node in a tree of application components. Both `ShadowView` and + * `UIView` conforms to this. Allows us to write utilities that reason about + * trees generally. + */ +@protocol RCTComponent + +@property (nonatomic, copy) NSNumber *reactTag; +@property (nonatomic, copy) NSNumber *rootTag; + +- (void)insertReactSubview:(id)subview atIndex:(NSInteger)atIndex; +- (void)removeReactSubview:(id)subview; +- (NSArray> *)reactSubviews; +- (id)reactSuperview; +- (NSNumber *)reactTagAtPoint:(CGPoint)point; + +// View/ShadowView is a root view +- (BOOL)isReactRootView; + +/** + * Called each time props have been set. + * Not all props have to be set - React can set only changed ones. + * @param changedProps String names of all set props. + */ +- (void)didSetProps:(NSArray *)changedProps; + +/** + * Called each time subviews have been updated + */ +- (void)didUpdateReactSubviews; + +@end + +// TODO: this is kinda dumb - let's come up with a +// better way of identifying root React views please! +static inline BOOL RCTIsReactRootView(NSNumber *reactTag) +{ + return reactTag.integerValue % 10 == 1; +} diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTComponentData.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTComponentData.h new file mode 100644 index 0000000..6a1fdb7 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTComponentData.h @@ -0,0 +1,49 @@ +/* + * 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 + +#import +#import +#import + +@class RCTBridge; +@class RCTShadowView; +@class UIView; +@class RCTEventDispatcherProtocol; + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTComponentData : NSObject + +@property (nonatomic, readonly) Class managerClass; +@property (nonatomic, copy, readonly) NSString *name; +@property (nonatomic, weak, readonly) RCTViewManager *manager; +/* + * When running React Native with the bridge, view managers are retained by the + * bridge. When running in bridgeless mode, allocate and retain view managers + * in this class. + */ +@property (nonatomic, strong, readonly) RCTViewManager *bridgelessViewManager; + +- (instancetype)initWithManagerClass:(Class)managerClass + bridge:(RCTBridge *)bridge + eventDispatcher:(id)eventDispatcher NS_DESIGNATED_INITIALIZER; + +- (UIView *)createViewWithTag:(nullable NSNumber *)tag rootTag:(nullable NSNumber *)rootTag; +- (RCTShadowView *)createShadowViewWithTag:(NSNumber *)tag; +- (void)setProps:(NSDictionary *)props forView:(id)view; +- (void)setProps:(NSDictionary *)props forShadowView:(RCTShadowView *)shadowView; + +@property (nonatomic, copy, nullable) void (^eventInterceptor) + (NSString *eventName, NSDictionary *event, NSNumber *reactTag); + +- (NSDictionary *)viewConfig; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTComponentEvent.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTComponentEvent.h new file mode 100644 index 0000000..0467f8c --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTComponentEvent.h @@ -0,0 +1,23 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +/** + * Generic untyped event for Components. Used internally by RCTDirectEventBlock and + * RCTBubblingEventBlock, for other use cases prefer using a class that implements + * RCTEvent to have a type safe way to initialize it. + */ +@interface RCTComponentEvent : NSObject + +- (instancetype)initWithName:(NSString *)name viewTag:(NSNumber *)viewTag body:(NSDictionary *)body; + +NS_ASSUME_NONNULL_END + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTConstants.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTConstants.h new file mode 100644 index 0000000..c92fc10 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTConstants.h @@ -0,0 +1,23 @@ +/* + * 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 + +RCT_EXTERN NSString *const RCTUserInterfaceStyleDidChangeNotification; +RCT_EXTERN NSString *const RCTUserInterfaceStyleDidChangeNotificationTraitCollectionKey; + +/* + * Preemptive View Allocation + */ +RCT_EXTERN BOOL RCTExperimentGetPreemptiveViewAllocationDisabled(void); +RCT_EXTERN void RCTExperimentSetPreemptiveViewAllocationDisabled(BOOL value); + +/* + * Remove clipped subviews + */ +RCT_EXTERN BOOL RCTGetRemoveClippedSubviewsEnabled(void); +RCT_EXTERN void RCTSetRemoveClippedSubviewsEnabled(BOOL value); diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTConvert+CoreLocation.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTConvert+CoreLocation.h new file mode 100644 index 0000000..251202f --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTConvert+CoreLocation.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +#import + +@interface RCTConvert (CoreLocation) + ++ (CLLocationDegrees)CLLocationDegrees:(id)json; ++ (CLLocationDistance)CLLocationDistance:(id)json; ++ (CLLocationCoordinate2D)CLLocationCoordinate2D:(id)json; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTConvert+Text.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTConvert+Text.h new file mode 100644 index 0000000..eafbdb3 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTConvert+Text.h @@ -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 + +#import "RCTTextTransform.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTConvert (Text) + ++ (UITextAutocorrectionType)UITextAutocorrectionType:(nullable id)json; ++ (UITextSpellCheckingType)UITextSpellCheckingType:(nullable id)json; ++ (RCTTextTransform)RCTTextTransform:(nullable id)json; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTConvert+Transform.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTConvert+Transform.h new file mode 100644 index 0000000..07a7b2c --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTConvert+Transform.h @@ -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 "RCTConvert.h" + +@interface RCTConvert (Transform) + ++ (CATransform3D)CATransform3D:(id)json; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTConvert.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTConvert.h new file mode 100644 index 0000000..09a380e --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTConvert.h @@ -0,0 +1,263 @@ +/* + * 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 +#import + +#import +#import +#import +#import +#import +#import +#import +#if TARGET_OS_IPHONE +#import +#endif + +/** + * This class provides a collection of conversion functions for mapping + * JSON objects to native types and classes. These are useful when writing + * custom RCTViewManager setter methods. + */ +@interface RCTConvert : NSObject + ++ (id)id:(id)json; + ++ (BOOL)BOOL:(id)json; ++ (double)double:(id)json; ++ (float)float:(id)json; ++ (int)int:(id)json; + ++ (int64_t)int64_t:(id)json; ++ (uint64_t)uint64_t:(id)json; + ++ (NSInteger)NSInteger:(id)json; ++ (NSUInteger)NSUInteger:(id)json; + ++ (NSArray *)NSArray:(id)json; ++ (NSDictionary *)NSDictionary:(id)json; ++ (NSString *)NSString:(id)json; ++ (NSNumber *)NSNumber:(id)json; + ++ (NSSet *)NSSet:(id)json; ++ (NSData *)NSData:(id)json; ++ (NSIndexSet *)NSIndexSet:(id)json; + ++ (NSURLRequestCachePolicy)NSURLRequestCachePolicy:(id)json; ++ (NSURL *)NSURL:(id)json; ++ (NSURLRequest *)NSURLRequest:(id)json; + +typedef NSURL RCTFileURL; ++ (RCTFileURL *)RCTFileURL:(id)json; + ++ (NSDate *)NSDate:(id)json; ++ (NSLocale *)NSLocale:(id)json; ++ (NSTimeZone *)NSTimeZone:(id)json; ++ (NSTimeInterval)NSTimeInterval:(id)json; + ++ (NSLineBreakMode)NSLineBreakMode:(id)json; ++ (NSTextAlignment)NSTextAlignment:(id)json; ++ (NSUnderlineStyle)NSUnderlineStyle:(id)json; ++ (NSWritingDirection)NSWritingDirection:(id)json; ++ (UITextAutocapitalizationType)UITextAutocapitalizationType:(id)json; ++ (UITextFieldViewMode)UITextFieldViewMode:(id)json; ++ (UIKeyboardType)UIKeyboardType:(id)json; ++ (UIKeyboardAppearance)UIKeyboardAppearance:(id)json; ++ (UIReturnKeyType)UIReturnKeyType:(id)json; +#if !TARGET_OS_TV ++ (UIDataDetectorTypes)UIDataDetectorTypes:(id)json; +#endif + +#if TARGET_OS_IPHONE ++ (WKDataDetectorTypes)WKDataDetectorTypes:(id)json; +#endif + ++ (UIViewContentMode)UIViewContentMode:(id)json; +#if !TARGET_OS_TV ++ (UIBarStyle)UIBarStyle:(id)json; +#endif + ++ (CGFloat)CGFloat:(id)json; ++ (CGPoint)CGPoint:(id)json; ++ (CGSize)CGSize:(id)json; ++ (CGRect)CGRect:(id)json; ++ (UIEdgeInsets)UIEdgeInsets:(id)json; + ++ (CGLineCap)CGLineCap:(id)json; ++ (CGLineJoin)CGLineJoin:(id)json; + ++ (CGAffineTransform)CGAffineTransform:(id)json; + ++ (UIColor *)UIColor:(id)json; ++ (CGColorRef)CGColor:(id)json CF_RETURNS_NOT_RETAINED; + ++ (YGValue)YGValue:(id)json; + ++ (NSArray *)NSArrayArray:(id)json; ++ (NSArray *)NSStringArray:(id)json; ++ (NSArray *> *)NSStringArrayArray:(id)json; ++ (NSArray *)NSDictionaryArray:(id)json; ++ (NSArray *)NSURLArray:(id)json; ++ (NSArray *)RCTFileURLArray:(id)json; ++ (NSArray *)NSNumberArray:(id)json; ++ (NSArray *)UIColorArray:(id)json; + +typedef NSArray CGColorArray; ++ (CGColorArray *)CGColorArray:(id)json; + +/** + * Convert a JSON object to a Plist-safe equivalent by stripping null values. + */ +typedef id NSPropertyList; ++ (NSPropertyList)NSPropertyList:(id)json; + +typedef BOOL css_backface_visibility_t; ++ (YGOverflow)YGOverflow:(id)json; ++ (YGDisplay)YGDisplay:(id)json; ++ (css_backface_visibility_t)css_backface_visibility_t:(id)json; ++ (YGFlexDirection)YGFlexDirection:(id)json; ++ (YGJustify)YGJustify:(id)json; ++ (YGAlign)YGAlign:(id)json; ++ (YGPositionType)YGPositionType:(id)json; ++ (YGWrap)YGWrap:(id)json; ++ (YGDirection)YGDirection:(id)json; + ++ (RCTPointerEvents)RCTPointerEvents:(id)json; ++ (RCTAnimationType)RCTAnimationType:(id)json; ++ (RCTBorderStyle)RCTBorderStyle:(id)json; ++ (RCTTextDecorationLineType)RCTTextDecorationLineType:(id)json; + +@end + +@interface RCTConvert (Deprecated) + +/** + * Use lightweight generics syntax instead, e.g. NSArray + */ +typedef NSArray NSArrayArray __deprecated_msg("Use NSArray"); +typedef NSArray NSStringArray __deprecated_msg("Use NSArray"); +typedef NSArray NSStringArrayArray __deprecated_msg("Use NSArray *>"); +typedef NSArray NSDictionaryArray __deprecated_msg("Use NSArray"); +typedef NSArray NSURLArray __deprecated_msg("Use NSArray"); +typedef NSArray RCTFileURLArray __deprecated_msg("Use NSArray"); +typedef NSArray NSNumberArray __deprecated_msg("Use NSArray"); +typedef NSArray UIColorArray __deprecated_msg("Use NSArray"); + +/** + * Synchronous image loading is generally a bad idea for performance reasons. + * If you need to pass image references, try to use `RCTImageSource` and then + * `RCTImageLoader` instead of converting directly to a UIImage. + */ ++ (UIImage *)UIImage:(id)json; ++ (CGImageRef)CGImage:(id)json CF_RETURNS_NOT_RETAINED; + +@end + +/** + * Underlying implementations of RCT_XXX_CONVERTER macros. Ignore these. + */ +RCT_EXTERN NSNumber *RCTConvertEnumValue(const char *, NSDictionary *, NSNumber *, id); +RCT_EXTERN NSNumber *RCTConvertMultiEnumValue(const char *, NSDictionary *, NSNumber *, id); +RCT_EXTERN NSArray *RCTConvertArrayValue(SEL, id); + +/** + * This macro is used for logging conversion errors. This is just used to + * avoid repeating the same boilerplate for every error message. + */ +#define RCTLogConvertError(json, typeName) \ + RCTLogError(@"JSON value '%@' of type %@ cannot be converted to %@", json, [json classForCoder], typeName) + +/** + * This macro is used for creating simple converter functions that just call + * the specified getter method on the json value. + */ +#define RCT_CONVERTER(type, name, getter) RCT_CUSTOM_CONVERTER(type, name, [json getter]) + +/** + * This macro is used for creating converter functions with arbitrary logic. + */ +#define RCT_CUSTOM_CONVERTER(type, name, code) \ + +(type)name : (id)json RCT_DYNAMIC \ + { \ + if (!RCT_DEBUG) { \ + return code; \ + } else { \ + @try { \ + return code; \ + } @catch (__unused NSException * e) { \ + RCTLogConvertError(json, @ #type); \ + json = nil; \ + return code; \ + } \ + } \ + } + +/** + * This macro is similar to RCT_CONVERTER, but specifically geared towards + * numeric types. It will handle string input correctly, and provides more + * detailed error reporting if an invalid value is passed in. + */ +#define RCT_NUMBER_CONVERTER(type, getter) \ + RCT_CUSTOM_CONVERTER(type, type, [RCT_DEBUG ? [self NSNumber:json] : json getter]) + +/** + * When using RCT_ENUM_CONVERTER in ObjC, the compiler is OK with us returning + * the underlying NSInteger/NSUInteger. In ObjC++, this is a type mismatch and + * we need to explicitly cast the return value to expected enum return type. + */ +#ifdef __cplusplus +#define _RCT_CAST(type, expr) static_cast(expr) +#else +#define _RCT_CAST(type, expr) expr +#endif + +/** + * This macro is used for creating converters for enum types. + */ +#define RCT_ENUM_CONVERTER(type, values, default, getter) \ + +(type)type : (id)json RCT_DYNAMIC \ + { \ + static NSDictionary *mapping; \ + static dispatch_once_t onceToken; \ + dispatch_once(&onceToken, ^{ \ + mapping = values; \ + }); \ + return _RCT_CAST(type, [RCTConvertEnumValue(#type, mapping, @(default), json) getter]); \ + } + +/** + * This macro is used for creating converters for enum types for + * multiple enum values combined with | operator + */ +#define RCT_MULTI_ENUM_CONVERTER(type, values, default, getter) \ + +(type)type : (id)json RCT_DYNAMIC \ + { \ + static NSDictionary *mapping; \ + static dispatch_once_t onceToken; \ + dispatch_once(&onceToken, ^{ \ + mapping = values; \ + }); \ + return _RCT_CAST(type, [RCTConvertMultiEnumValue(#type, mapping, @(default), json) getter]); \ + } + +/** + * This macro is used for creating explicitly-named converter functions + * for typed arrays. + */ +#define RCT_ARRAY_CONVERTER_NAMED(type, name) \ + +(NSArray *)name##Array : (id)json RCT_DYNAMIC \ + { \ + return RCTConvertArrayValue(@selector(name:), json); \ + } + +/** + * This macro is used for creating converter functions for typed arrays. + * RCT_ARRAY_CONVERTER_NAMED may be used when type contains characters + * which are disallowed in selector names. + */ +#define RCT_ARRAY_CONVERTER(type) RCT_ARRAY_CONVERTER_NAMED(type, type) diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTCxxConvert.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTCxxConvert.h new file mode 100644 index 0000000..261e61f --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTCxxConvert.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +/** + * This class provides a collection of conversion functions for mapping + * JSON objects to cxx types. Extensible via categories. + * Convert methods are expected to return cxx objects wrapped in RCTManagedPointer. + */ + +@interface RCTCxxConvert : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDataRequestHandler.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDataRequestHandler.h new file mode 100644 index 0000000..f0b2c68 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDataRequestHandler.h @@ -0,0 +1,16 @@ +/* + * 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 +#import + +/** + * This is the default RCTURLRequestHandler implementation for data URL requests. + */ +@interface RCTDataRequestHandler : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDatePicker.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDatePicker.h new file mode 100644 index 0000000..14f9a2e --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDatePicker.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTDatePicker : UIDatePicker + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDatePickerManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDatePickerManager.h new file mode 100644 index 0000000..bd14cd3 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDatePickerManager.h @@ -0,0 +1,19 @@ +/* + * 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 +#import + +@interface RCTConvert (UIDatePicker) + ++ (UIDatePickerMode)UIDatePickerMode:(id)json; + +@end + +@interface RCTDatePickerManager : RCTViewManager + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDecayAnimation.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDecayAnimation.h new file mode 100644 index 0000000..e68450e --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDecayAnimation.h @@ -0,0 +1,12 @@ +/* + * 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 "RCTAnimationDriver.h" + +@interface RCTDecayAnimation : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDefines.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDefines.h new file mode 100644 index 0000000..4b9517e --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDefines.h @@ -0,0 +1,163 @@ +/* + * 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. + */ + +#if __OBJC__ +#import +#endif + +/** + * Make global functions usable in C++ + */ +#if defined(__cplusplus) +#define RCT_EXTERN extern "C" __attribute__((visibility("default"))) +#define RCT_EXTERN_C_BEGIN extern "C" { +#define RCT_EXTERN_C_END } +#else +#define RCT_EXTERN extern __attribute__((visibility("default"))) +#define RCT_EXTERN_C_BEGIN +#define RCT_EXTERN_C_END +#endif + +/** + * The RCT_DEBUG macro can be used to exclude error checking and logging code + * from release builds to improve performance and reduce binary size. + */ +#ifndef RCT_DEBUG +#if DEBUG +#define RCT_DEBUG 1 +#else +#define RCT_DEBUG 0 +#endif +#endif + +/** + * The RCT_DEV macro can be used to enable or disable development tools + * such as the debug executors, dev menu, red box, etc. + */ +#ifndef RCT_DEV +#if DEBUG +#define RCT_DEV 1 +#else +#define RCT_DEV 0 +#endif +#endif + +/** + * RCT_DEV_MENU can be used to toggle the dev menu separately from RCT_DEV. + * By default though, it will inherit from RCT_DEV. + */ +#ifndef RCT_DEV_MENU +#define RCT_DEV_MENU RCT_DEV +#endif + +/** + * Controls for the core packgaer loading functionality + * By default, this inherits from RCT_DEV_MENU but it also gives the capability to + * enable the packager functionality without the rest of the dev tools from RCT_DEV_MENU + */ +#ifndef RCT_ENABLE_LOADING_FROM_PACKAGER +#define RCT_ENABLE_LOADING_FROM_PACKAGER RCT_DEV_MENU +#endif + +#ifndef RCT_ENABLE_INSPECTOR +#if RCT_DEV && __has_include() +#define RCT_ENABLE_INSPECTOR 1 +#else +#define RCT_ENABLE_INSPECTOR 0 +#endif +#endif + +#ifndef RCT_DEV_SETTINGS_ENABLE_PACKAGER_CONNECTION +#if RCT_DEV && (__has_include("RCTPackagerConnection.h") || __has_include()) +#define RCT_DEV_SETTINGS_ENABLE_PACKAGER_CONNECTION 1 +#else +#define RCT_DEV_SETTINGS_ENABLE_PACKAGER_CONNECTION 0 +#endif +#endif + +#if RCT_DEV +#define RCT_IF_DEV(...) __VA_ARGS__ +#else +#define RCT_IF_DEV(...) +#endif + +#ifndef RCT_PROFILE +#define RCT_PROFILE RCT_DEV +#endif + +/** + * Add the default Metro packager port number + */ +#ifndef RCT_METRO_PORT +#define RCT_METRO_PORT 8081 +#else +// test if RCT_METRO_PORT is empty +#define RCT_METRO_PORT_DO_EXPAND(VAL) VAL##1 +#define RCT_METRO_PORT_EXPAND(VAL) RCT_METRO_PORT_DO_EXPAND(VAL) +#if !defined(RCT_METRO_PORT) || (RCT_METRO_PORT_EXPAND(RCT_METRO_PORT) == 1) +// Only here if RCT_METRO_PORT is not defined +// OR RCT_METRO_PORT is the empty string +#undef RCT_METRO_PORT +#define RCT_METRO_PORT 8081 +#endif +#endif + +/** + * Add the default packager name + */ +#ifndef RCT_PACKAGER_NAME +#define RCT_PACKAGER_NAME @"Metro" +#endif + +/** + * By default, only raise an NSAssertion in debug mode + * (custom assert functions will still be called). + */ +#ifndef RCT_NSASSERT +#define RCT_NSASSERT RCT_DEBUG +#endif + +/** + * Concat two literals. Supports macro expansions, + * e.g. RCT_CONCAT(foo, __FILE__). + */ +#define RCT_CONCAT2(A, B) A##B +#define RCT_CONCAT(A, B) RCT_CONCAT2(A, B) + +/** + * This attribute is used for static analysis. + */ +#if !defined RCT_DYNAMIC +#if __has_attribute(objc_dynamic) +#define RCT_DYNAMIC __attribute__((objc_dynamic)) +#else +#define RCT_DYNAMIC +#endif +#endif + +/** + * Throw an assertion for unimplemented methods. + */ +#define RCT_NOT_IMPLEMENTED(method) \ + _Pragma("clang diagnostic push") _Pragma("clang diagnostic ignored \"-Wmissing-method-return-type\"") \ + _Pragma("clang diagnostic ignored \"-Wunused-parameter\"") \ + RCT_EXTERN NSException *_RCTNotImplementedException(SEL, Class); \ + method NS_UNAVAILABLE \ + { \ + @throw _RCTNotImplementedException(_cmd, [self class]); \ + } \ + _Pragma("clang diagnostic pop") + +/** + * Controls for activating the new architecture without the legacy system. + * Note: this is work in progress. + */ +#ifdef REACT_NATIVE_FORCE_NEW_ARCHITECTURE +#define RCT_NEW_ARCHITECTURE 1 +#else +#define RCT_NEW_ARCHITECTURE 0 +#endif diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDevLoadingView.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDevLoadingView.h new file mode 100644 index 0000000..da5ad2d --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDevLoadingView.h @@ -0,0 +1,13 @@ +/* + * 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 +#import +#import + +@interface RCTDevLoadingView : NSObject +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDevLoadingViewProtocol.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDevLoadingViewProtocol.h new file mode 100644 index 0000000..001a18e --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDevLoadingViewProtocol.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +@class RCTLoadingProgress; + +@protocol RCTDevLoadingViewProtocol ++ (void)setEnabled:(BOOL)enabled; +- (void)showMessage:(NSString *)message color:(UIColor *)color backgroundColor:(UIColor *)backgroundColor; +- (void)showWithURL:(NSURL *)URL; +- (void)updateProgress:(RCTLoadingProgress *)progress; +- (void)hide; +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDevLoadingViewSetEnabled.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDevLoadingViewSetEnabled.h new file mode 100644 index 0000000..1ad1825 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDevLoadingViewSetEnabled.h @@ -0,0 +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. + */ + +#import + +RCT_EXTERN void RCTDevLoadingViewSetEnabled(BOOL enabled); +RCT_EXTERN BOOL RCTDevLoadingViewGetEnabled(void); diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDevMenu.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDevMenu.h new file mode 100644 index 0000000..b322afb --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDevMenu.h @@ -0,0 +1,105 @@ +/* + * 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 + +#import +#import +#import + +#if RCT_DEV_MENU + +RCT_EXTERN NSString *const RCTShowDevMenuNotification; + +#endif + +@class RCTDevMenuItem; + +/** + * Developer menu, useful for exposing extra functionality when debugging. + */ +@interface RCTDevMenu : NSObject + +/** + * Deprecated, use RCTDevSettings instead. + */ +@property (nonatomic, assign) BOOL shakeToShow DEPRECATED_ATTRIBUTE; + +/** + * Deprecated, use RCTDevSettings instead. + */ +@property (nonatomic, assign) BOOL profilingEnabled DEPRECATED_ATTRIBUTE; + +/** + * Deprecated, use RCTDevSettings instead. + */ +@property (nonatomic, assign) BOOL hotLoadingEnabled DEPRECATED_ATTRIBUTE; + +/** + * Presented items in development menu + */ +@property (nonatomic, copy, readonly) NSArray *presentedItems; + +/** + * Detect if actions sheet (development menu) is shown + */ +- (BOOL)isActionSheetShown; + +/** + * Manually show the dev menu (can be called from JS). + */ +- (void)show; + +/** + * Deprecated, use `RCTReloadCommand` instead. + */ +- (void)reload DEPRECATED_ATTRIBUTE; + +/** + * Deprecated. Use the `-addItem:` method instead. + */ +- (void)addItem:(NSString *)title handler:(void (^)(void))handler DEPRECATED_ATTRIBUTE; + +/** + * Add custom item to the development menu. The handler will be called + * when user selects the item. + */ +- (void)addItem:(RCTDevMenuItem *)item; + +@end + +typedef NSString * (^RCTDevMenuItemTitleBlock)(void); + +/** + * Developer menu item, used to expose additional functionality via the menu. + */ +@interface RCTDevMenuItem : NSObject + +/** + * This creates an item with a simple push-button interface, used to trigger an + * action. + */ ++ (instancetype)buttonItemWithTitle:(NSString *)title handler:(dispatch_block_t)handler; + +/** + * This creates an item with a simple push-button interface, used to trigger an + * action. getTitleForPresentation is called each time the item is about to be + * presented, and should return the item's title. + */ ++ (instancetype)buttonItemWithTitleBlock:(RCTDevMenuItemTitleBlock)titleBlock handler:(dispatch_block_t)handler; + +@end + +/** + * This category makes the developer menu instance available via the + * RCTBridge, which is useful for any class that needs to access the menu. + */ +@interface RCTBridge (RCTDevMenu) + +@property (nonatomic, readonly) RCTDevMenu *devMenu; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDevSettings.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDevSettings.h new file mode 100644 index 0000000..9661caf --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDevSettings.h @@ -0,0 +1,120 @@ +/* + * 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 +#import +#import +#import + +@protocol RCTPackagerClientMethod; + +/** + * An abstraction for a key-value store to manage RCTDevSettings behavior. + * The default implementation persists settings using NSUserDefaults. + */ +@protocol RCTDevSettingsDataSource + +/** + * Updates the setting with the given key to the given value. + * How the data source's state changes depends on the implementation. + */ +- (void)updateSettingWithValue:(id)value forKey:(NSString *)key; + +/** + * Returns the value for the setting with the given key. + */ +- (id)settingForKey:(NSString *)key; + +@end + +@protocol RCTDevSettingsInspectable + +/** + * Whether current jsi::Runtime is inspectable. + * Only set when using as a bridgeless turbo module. + */ +@property (nonatomic, assign, readwrite) BOOL isInspectable; + +@end + +@interface RCTDevSettings : RCTEventEmitter + +- (instancetype)initWithDataSource:(id)dataSource; + +@property (nonatomic, readonly) BOOL isHotLoadingAvailable; +@property (nonatomic, readonly) BOOL isRemoteDebuggingAvailable; +@property (nonatomic, readonly) BOOL isDeviceDebuggingAvailable; +@property (nonatomic, readonly) BOOL isJSCSamplingProfilerAvailable; + +/** + * Whether the bridge is connected to a remote JS executor. + */ +@property (nonatomic, assign) BOOL isDebuggingRemotely; + +/* + * Whether shaking will show RCTDevMenu. The menu is enabled by default if RCT_DEV=1, but + * you may wish to disable it so that you can provide your own shake handler. + */ +@property (nonatomic, assign) BOOL isShakeToShowDevMenuEnabled; + +/** + * Whether performance profiling is enabled. + */ +@property (nonatomic, assign, setter=setProfilingEnabled:) BOOL isProfilingEnabled; + +/** + * Whether hot loading is enabled. + */ +@property (nonatomic, assign, setter=setHotLoadingEnabled:) BOOL isHotLoadingEnabled; + +/** + * Enables starting of profiling sampler on launch + */ +@property (nonatomic, assign) BOOL startSamplingProfilerOnLaunch; + +/** + * Whether the element inspector is visible. + */ +@property (nonatomic, readonly) BOOL isElementInspectorShown; + +/** + * Whether the performance monitor is visible. + */ +@property (nonatomic, assign) BOOL isPerfMonitorShown; + +/** + * Toggle the element inspector. + */ +- (void)toggleElementInspector; + +/** + * Set up the HMRClient if loading the bundle from Metro. + */ +- (void)setupHMRClientWithBundleURL:(NSURL *)bundleURL; + +/** + * Register additional bundles with the HMRClient. + */ +- (void)setupHMRClientWithAdditionalBundleURL:(NSURL *)bundleURL; + +#if RCT_DEV_MENU +- (void)addHandler:(id)handler + forPackagerMethod:(NSString *)name __deprecated_msg("Use RCTPackagerConnection directly instead"); +#endif + +@end + +@interface RCTBridge (RCTDevSettings) + +@property (nonatomic, readonly) RCTDevSettings *devSettings; + +@end + +// In debug builds, the dev menu is enabled by default but it is further customizable using this method. +// However, this method only has an effect in builds where the dev menu is actually compiled in. +// (i.e. RCT_DEV or RCT_DEV_MENU is set) +RCT_EXTERN void RCTDevSettingsSetEnabled(BOOL enabled); diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDevSplitBundleLoader.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDevSplitBundleLoader.h new file mode 100644 index 0000000..52a115c --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDevSplitBundleLoader.h @@ -0,0 +1,13 @@ +/* + * 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 +#import +#import + +@interface RCTDevSplitBundleLoader : NSObject +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDeviceInfo.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDeviceInfo.h new file mode 100644 index 0000000..cef03be --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDeviceInfo.h @@ -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 + +#import + +@interface RCTDeviceInfo : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDiffClampAnimatedNode.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDiffClampAnimatedNode.h new file mode 100644 index 0000000..085fb3d --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDiffClampAnimatedNode.h @@ -0,0 +1,12 @@ +/* + * 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 "RCTValueAnimatedNode.h" + +@interface RCTDiffClampAnimatedNode : RCTValueAnimatedNode + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDisplayLink.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDisplayLink.h new file mode 100644 index 0000000..1e79c0b --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDisplayLink.h @@ -0,0 +1,20 @@ +/* + * 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 + +@protocol RCTBridgeModule; +@class RCTModuleData; + +@interface RCTDisplayLink : NSObject + +- (instancetype)init; +- (void)invalidate; +- (void)registerModuleForFrameUpdates:(id)module withModuleData:(RCTModuleData *)moduleData; +- (void)addToRunLoop:(NSRunLoop *)runLoop; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDisplayWeakRefreshable.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDisplayWeakRefreshable.h new file mode 100644 index 0000000..c1ea105 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDisplayWeakRefreshable.h @@ -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 + +@protocol RCTDisplayRefreshable + +- (void)displayDidRefresh:(CADisplayLink *)displayLink; + +@end + +@interface RCTDisplayWeakRefreshable : NSObject + +@property (nonatomic, weak) id refreshable; + ++ (CADisplayLink *)displayLinkWithWeakRefreshable:(id)refreshable; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDivisionAnimatedNode.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDivisionAnimatedNode.h new file mode 100644 index 0000000..006fd5a --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTDivisionAnimatedNode.h @@ -0,0 +1,12 @@ +/* + * 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 "RCTValueAnimatedNode.h" + +@interface RCTDivisionAnimatedNode : RCTValueAnimatedNode + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTErrorCustomizer.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTErrorCustomizer.h new file mode 100644 index 0000000..aa65296 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTErrorCustomizer.h @@ -0,0 +1,23 @@ +/* + * 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 + +@class RCTErrorInfo; + +/** + * Provides an interface to customize React Native error messages and stack + * traces from exceptions. + */ +@protocol RCTErrorCustomizer + +/** + * Customizes the given error, returning the passed info argument if no + * customization is required. + */ +- (nonnull RCTErrorInfo *)customizeErrorInfo:(nonnull RCTErrorInfo *)info; +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTErrorInfo.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTErrorInfo.h new file mode 100644 index 0000000..a5d74d8 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTErrorInfo.h @@ -0,0 +1,21 @@ +/* + * 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 + +@class RCTJSStackFrame; + +/** + * An ObjC wrapper for React Native errors. + */ +@interface RCTErrorInfo : NSObject +@property (nonatomic, copy, readonly) NSString *errorMessage; +@property (nonatomic, copy, readonly) NSArray *stack; + +- (instancetype)initWithErrorMessage:(NSString *)errorMessage stack:(NSArray *)stack; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTEventAnimation.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTEventAnimation.h new file mode 100644 index 0000000..c63c1f4 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTEventAnimation.h @@ -0,0 +1,21 @@ +/* + * 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 + +#import "RCTValueAnimatedNode.h" + +@interface RCTEventAnimation : NSObject + +@property (nonatomic, readonly, weak) RCTValueAnimatedNode *valueNode; + +- (instancetype)initWithEventPath:(NSArray *)eventPath + valueNode:(RCTValueAnimatedNode *)valueNode; + +- (void)updateWithEvent:(id)event; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTEventDispatcher.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTEventDispatcher.h new file mode 100644 index 0000000..bbcd643 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTEventDispatcher.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +#import +#import +#import +/** + * This class wraps the -[RCTBridge enqueueJSCall:args:] method, and + * provides some convenience methods for generating event calls. + */ +@interface RCTEventDispatcher : NSObject +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTEventDispatcherProtocol.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTEventDispatcherProtocol.h new file mode 100644 index 0000000..913cf85 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTEventDispatcherProtocol.h @@ -0,0 +1,129 @@ +/* + * 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 + +#import + +/** + * The threshold at which text inputs will start warning that the JS thread + * has fallen behind (resulting in poor input performance, missed keys, etc.) + */ +RCT_EXTERN const NSInteger RCTTextUpdateLagWarningThreshold; + +/** + * Takes an input event name and normalizes it to the form that is required + * by the events system (currently that means starting with the "top" prefix, + * but that's an implementation detail that may change in future). + */ +RCT_EXTERN NSString *RCTNormalizeInputEventName(NSString *eventName); + +typedef NS_ENUM(NSInteger, RCTTextEventType) { + RCTTextEventTypeFocus, + RCTTextEventTypeBlur, + RCTTextEventTypeChange, + RCTTextEventTypeSubmit, + RCTTextEventTypeEnd, + RCTTextEventTypeKeyPress +}; + +@protocol RCTEvent +@required + +@property (nonatomic, strong, readonly) NSNumber *viewTag; +@property (nonatomic, copy, readonly) NSString *eventName; + +- (BOOL)canCoalesce; + +/** used directly for doing a JS call */ ++ (NSString *)moduleDotMethod; + +/** must contain only JSON compatible values */ +- (NSArray *)arguments; + +@optional + +/** + * Coalescing related methods must only be implemented if canCoalesce + * returns YES. + */ +@property (nonatomic, assign, readonly) uint16_t coalescingKey; +- (id)coalesceWithEvent:(id)newEvent; + +@end + +/** + * This protocol allows observing events dispatched by RCTEventDispatcher. + */ +@protocol RCTEventDispatcherObserver + +/** + * Called before dispatching an event, on the same thread the event was + * dispatched from. + */ +- (void)eventDispatcherWillDispatchEvent:(id)event; + +@end + +@protocol RCTJSDispatcherModule + +@property (nonatomic, copy) void (^dispatchToJSThread)(dispatch_block_t block); + +@end + +/** + * This class wraps the -[RCTBridge enqueueJSCall:args:] method, and + * provides some convenience methods for generating event calls. + */ +@protocol RCTEventDispatcherProtocol + +- (void)sendViewEventWithName:(NSString *)name reactTag:(NSNumber *)reactTag; + +/** + * Deprecated, do not use. + */ +- (void)sendAppEventWithName:(NSString *)name body:(id)body __deprecated_msg("Subclass RCTEventEmitter instead"); + +/** + * Deprecated, do not use. + */ +- (void)sendDeviceEventWithName:(NSString *)name body:(id)body __deprecated_msg("Subclass RCTEventEmitter instead"); + +/** + * Send a text input/focus event. For internal use only. + */ +- (void)sendTextEventWithType:(RCTTextEventType)type + reactTag:(NSNumber *)reactTag + text:(NSString *)text + key:(NSString *)key + eventCount:(NSInteger)eventCount; + +/** + * Send a pre-prepared event object. + * + * Events are sent to JS as soon as the thread is free to process them. + * If an event can be coalesced and there is another compatible event waiting, the coalescing will happen immediately. + */ +- (void)sendEvent:(id)event; + +/** + * Add an event dispatcher observer. + */ +- (void)addDispatchObserver:(id)observer; + +/** + * Remove an event dispatcher observer. + */ +- (void)removeDispatchObserver:(id)observer; + +@end + +@interface RCTBridge (RCTEventDispatcher) + +- (id)eventDispatcher; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTEventEmitter.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTEventEmitter.h new file mode 100644 index 0000000..e3bb12f --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTEventEmitter.h @@ -0,0 +1,48 @@ +/* + * 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 + +/** + * RCTEventEmitter is an abstract base class to be used for modules that emit + * events to be observed by JS. + */ +@interface RCTEventEmitter : NSObject + +@property (nonatomic, weak) RCTBridge *bridge; +@property (nonatomic, weak) RCTModuleRegistry *moduleRegistry; +@property (nonatomic, weak) RCTViewRegistry *viewRegistry_DEPRECATED; + +- (instancetype)initWithDisabledObservation; + +/** + * Override this method to return an array of supported event names. Attempting + * to observe or send an event that isn't included in this list will result in + * an error. + */ +- (NSArray *)supportedEvents; + +/** + * Send an event that does not relate to a specific view, e.g. a navigation + * or data update notification. + */ +- (void)sendEventWithName:(NSString *)name body:(id)body; + +/** + * These methods will be called when the first observer is added and when the + * last observer is removed (or when dealloc is called), respectively. These + * should be overridden in your subclass in order to start/stop sending events. + */ +- (void)startObserving; +- (void)stopObserving; + +- (void)invalidate NS_REQUIRES_SUPER; + +- (void)addListener:(NSString *)eventName; +- (void)removeListeners:(double)count; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTExceptionsManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTExceptionsManager.h new file mode 100644 index 0000000..28ae105 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTExceptionsManager.h @@ -0,0 +1,47 @@ +/* + * 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 + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol RCTExceptionsManagerDelegate + +- (void)handleSoftJSExceptionWithMessage:(nullable NSString *)message + stack:(nullable NSArray *)stack + exceptionId:(NSNumber *)exceptionId; +- (void)handleFatalJSExceptionWithMessage:(nullable NSString *)message + stack:(nullable NSArray *)stack + exceptionId:(NSNumber *)exceptionId; + +@optional +- (void)updateJSExceptionWithMessage:(nullable NSString *)message + stack:(nullable NSArray *)stack + exceptionId:(NSNumber *)exceptionId; + +@end + +@interface RCTExceptionsManager : NSObject + +- (instancetype)initWithDelegate:(id)delegate; + +- (void)reportSoftException:(nullable NSString *)message + stack:(nullable NSArray *)stack + exceptionId:(double)exceptionId; +- (void)reportFatalException:(nullable NSString *)message + stack:(nullable NSArray *)stack + exceptionId:(double)exceptionId; + +@property (nonatomic, weak) id delegate; + +@property (nonatomic, assign) NSUInteger maxReloadAttempts; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTFPSGraph.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTFPSGraph.h new file mode 100644 index 0000000..73dd6bd --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTFPSGraph.h @@ -0,0 +1,26 @@ +/* + * 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 + +#import + +#if RCT_DEV + +@interface RCTFPSGraph : UIView + +@property (nonatomic, assign, readonly) NSUInteger FPS; +@property (nonatomic, assign, readonly) NSUInteger maxFPS; +@property (nonatomic, assign, readonly) NSUInteger minFPS; + +- (instancetype)initWithFrame:(CGRect)frame color:(UIColor *)color NS_DESIGNATED_INITIALIZER; + +- (void)onTick:(NSTimeInterval)timestamp; + +@end + +#endif diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTFileReaderModule.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTFileReaderModule.h new file mode 100644 index 0000000..0eb246b --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTFileReaderModule.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTFileReaderModule : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTFileRequestHandler.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTFileRequestHandler.h new file mode 100644 index 0000000..7faf39d --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTFileRequestHandler.h @@ -0,0 +1,16 @@ +/* + * 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 +#import + +/** + * This is the default RCTURLRequestHandler implementation for file requests. + */ +@interface RCTFileRequestHandler : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTFont.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTFont.h new file mode 100644 index 0000000..15437dd --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTFont.h @@ -0,0 +1,49 @@ +/* + * 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 + +#import + +typedef UIFont * (^RCTFontHandler)(CGFloat fontSize, NSString *fontWeightDescription); + +/** + * React Native will use the System font for rendering by default. If you want to + * provide a different base font, use this override. The font weight supplied to your + * handler will be one of "ultralight", "thin", "light", "regular", "medium", + * "semibold", "extrabold", "bold", "heavy", or "black". + */ +RCT_EXTERN void RCTSetDefaultFontHandler(RCTFontHandler handler); +RCT_EXTERN BOOL RCTHasFontHandlerSet(void); + +@interface RCTFont : NSObject + +/** + * Update a font with a given font-family, size, weight and style. + * If parameters are not specified, they'll be kept as-is. + * If font is nil, the default system font of size 14 will be used. + */ ++ (UIFont *)updateFont:(UIFont *)font + withFamily:(NSString *)family + size:(NSNumber *)size + weight:(NSString *)weight + style:(NSString *)style + variant:(NSArray *)variant + scaleMultiplier:(CGFloat)scaleMultiplier; + ++ (UIFont *)updateFont:(UIFont *)font withFamily:(NSString *)family; ++ (UIFont *)updateFont:(UIFont *)font withSize:(NSNumber *)size; ++ (UIFont *)updateFont:(UIFont *)font withWeight:(NSString *)weight; ++ (UIFont *)updateFont:(UIFont *)font withStyle:(NSString *)style; + +@end + +@interface RCTConvert (RCTFont) + ++ (UIFont *)UIFont:(id)json; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTFrameAnimation.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTFrameAnimation.h new file mode 100644 index 0000000..610d3ff --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTFrameAnimation.h @@ -0,0 +1,12 @@ +/* + * 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 "RCTAnimationDriver.h" + +@interface RCTFrameAnimation : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTFrameUpdate.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTFrameUpdate.h new file mode 100644 index 0000000..07f0889 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTFrameUpdate.h @@ -0,0 +1,52 @@ +/* + * 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 + +@class CADisplayLink; + +/** + * Interface containing the information about the last screen refresh. + */ +@interface RCTFrameUpdate : NSObject + +/** + * Timestamp for the actual screen refresh + */ +@property (nonatomic, readonly) NSTimeInterval timestamp; + +/** + * Time since the last frame update ( >= 16.6ms ) + */ +@property (nonatomic, readonly) NSTimeInterval deltaTime; + +- (instancetype)initWithDisplayLink:(CADisplayLink *)displayLink NS_DESIGNATED_INITIALIZER; + +@end + +/** + * Protocol that must be implemented for subscribing to display refreshes (DisplayLink updates) + */ +@protocol RCTFrameUpdateObserver + +/** + * Method called on every screen refresh (if paused != YES) + */ +- (void)didUpdateFrame:(RCTFrameUpdate *)update; + +/** + * Synthesize and set to true to pause the calls to -[didUpdateFrame:] + */ +@property (nonatomic, readonly, getter=isPaused) BOOL paused; + +/** + * Callback for pause/resume observer. + * Observer should call it when paused property is changed. + */ +@property (nonatomic, copy) dispatch_block_t pauseCallback; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTGIFImageDecoder.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTGIFImageDecoder.h new file mode 100644 index 0000000..2d56637 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTGIFImageDecoder.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTGIFImageDecoder : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTHTTPRequestHandler.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTHTTPRequestHandler.h new file mode 100644 index 0000000..5a91bd0 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTHTTPRequestHandler.h @@ -0,0 +1,21 @@ +/* + * 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 +#import + +typedef NSURLSessionConfiguration* (^NSURLSessionConfigurationProvider)(void); +/** + * The block provided via this function will provide the NSURLSessionConfiguration for all HTTP requests made by the app. +*/ +RCT_EXTERN void RCTSetCustomNSURLSessionConfigurationProvider(NSURLSessionConfigurationProvider); +/** + * This is the default RCTURLRequestHandler implementation for HTTP requests. + */ +@interface RCTHTTPRequestHandler : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTI18nManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTI18nManager.h new file mode 100644 index 0000000..5f21ec4 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTI18nManager.h @@ -0,0 +1,17 @@ +/* + * 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 + +/** + * @experimental + * This is a experimental module for RTL support + * This module bridges the i18n utility from RCTI18nUtil + */ +@interface RCTI18nManager : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTI18nUtil.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTI18nUtil.h new file mode 100644 index 0000000..f3a1550 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTI18nUtil.h @@ -0,0 +1,28 @@ +/* + * 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 + +/** + * @experimental + * This is a experimental module for to expose constance IsRTL to js about the RTL status. + * And it allows js to force RLT status for development propose. + * This will also provide other i18n related utilities in the future. + */ +@interface RCTI18nUtil : NSObject + ++ (instancetype)sharedInstance; + +- (BOOL)isRTL; +- (BOOL)isRTLAllowed; +- (void)allowRTL:(BOOL)value; +- (BOOL)isRTLForced; +- (void)forceRTL:(BOOL)value; +- (BOOL)doLeftAndRightSwapInRTL; +- (void)swapLeftAndRightInRTL:(BOOL)value; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageBlurUtils.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageBlurUtils.h new file mode 100644 index 0000000..18a286e --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageBlurUtils.h @@ -0,0 +1,13 @@ +/* + * 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 +#import + +#import + +RCT_EXTERN UIImage *RCTBlurredImageWithRadius(UIImage *inputImage, CGFloat radius); diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageCache.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageCache.h new file mode 100644 index 0000000..a4d15b4 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageCache.h @@ -0,0 +1,42 @@ +/* + * 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 +#import + +#import + +@interface UIImage (React) + +/** + * Memory bytes of the image with the default calculation of static image or GIF. Custom calculations of decoded bytes can be assigned manually. + */ +@property (nonatomic, assign) NSInteger reactDecodedImageBytes; + +@end + +/** + * Provides an interface to use for providing a image caching strategy. + */ +@protocol RCTImageCache + +- (UIImage *)imageForUrl:(NSString *)url + size:(CGSize)size + scale:(CGFloat)scale + resizeMode:(RCTResizeMode)resizeMode; + +- (void)addImageToCache:(UIImage *)image + URL:(NSString *)url + size:(CGSize)size + scale:(CGFloat)scale + resizeMode:(RCTResizeMode)resizeMode + response:(NSURLResponse *)response; + +@end + +@interface RCTImageCache : NSObject +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageDataDecoder.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageDataDecoder.h new file mode 100644 index 0000000..b7fbb00 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageDataDecoder.h @@ -0,0 +1,53 @@ +/* + * 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 + +#import +#import +#import +#import + +/** + * Provides the interface needed to register an image decoder. Image decoders + * are also bridge modules, so should be registered using RCT_EXPORT_MODULE(). + */ +@protocol RCTImageDataDecoder + +/** + * Indicates whether this handler is capable of decoding the specified data. + * Typically the handler would examine some sort of header data to determine + * this. + */ +- (BOOL)canDecodeImageData:(NSData *)imageData; + +/** + * Decode an image from the data object. The method should call the + * completionHandler when the decoding operation has finished. The method + * should also return a cancellation block, if applicable. + * + * If you provide a custom image decoder, you most implement scheduling yourself, + * to avoid decoding large amounts of images at the same time. + */ +- (RCTImageLoaderCancellationBlock)decodeImageData:(NSData *)imageData + size:(CGSize)size + scale:(CGFloat)scale + resizeMode:(RCTResizeMode)resizeMode + completionHandler:(RCTImageLoaderCompletionBlock)completionHandler; + +@optional + +/** + * If more than one RCTImageDataDecoder responds YES to `-canDecodeImageData:` + * then `decoderPriority` is used to determine which one to use. The decoder + * with the highest priority will be selected. Default priority is zero. + * If two or more valid decoders have the same priority, the selection order is + * undefined. + */ +- (float)decoderPriority; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageEditingManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageEditingManager.h new file mode 100644 index 0000000..216b622 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageEditingManager.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTImageEditingManager : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageLoader.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageLoader.h new file mode 100644 index 0000000..da0df28 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageLoader.h @@ -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 + +#import +#import +#import +#import +#import +#import +#import +#import +#import + +@interface RCTImageLoader : NSObject +- (instancetype)init; +- (instancetype)initWithRedirectDelegate:(id)redirectDelegate NS_DESIGNATED_INITIALIZER; +- (instancetype)initWithRedirectDelegate:(id)redirectDelegate + loadersProvider:(NSArray> * (^)(RCTModuleRegistry *))getLoaders + decodersProvider:(NSArray> * (^)(RCTModuleRegistry *))getDecoders; +@end + +/** + * DEPRECATED!! DO NOT USE + * Instead use `[_bridge moduleForClass:[RCTImageLoader class]]` + */ +@interface RCTBridge (RCTImageLoader) + +@property (nonatomic, readonly) RCTImageLoader *imageLoader; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageLoaderLoggable.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageLoaderLoggable.h new file mode 100644 index 0000000..3b78c48 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageLoaderLoggable.h @@ -0,0 +1,30 @@ +/* + * 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. + */ + +/** + * The image loader (i.e. RCTImageLoader) implement this to declare whether image performance should be logged. + */ +@protocol RCTImageLoaderLoggableProtocol + +/** + * Image instrumentation - declares whether its caller should log images + */ +- (BOOL)shouldEnablePerfLoggingForRequestUrl:(NSURL *)url; + +@end + +/** + * Image handlers in the image loader implement this to declare whether image performance should be logged. + */ +@protocol RCTImageLoaderLoggable + +/** + * Image instrumentation - declares whether its caller should log images + */ +- (BOOL)shouldEnablePerfLogging; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageLoaderProtocol.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageLoaderProtocol.h new file mode 100644 index 0000000..f1bb268 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageLoaderProtocol.h @@ -0,0 +1,138 @@ +/* + * 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 + +#import +#import +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * If available, RCTImageRedirectProtocol is invoked before loading an asset. + * Implementation should return either a new URL or nil when redirection is + * not needed. + */ + +@protocol RCTImageRedirectProtocol + +- (NSURL *)redirectAssetsURL:(NSURL *)URL; + +@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 + +/** + * The maximum number of concurrent image loading tasks. Loading and decoding + * images can consume a lot of memory, so setting this to a higher value may + * cause memory to spike. If you are seeing out-of-memory crashes, try reducing + * this value. + */ +@property (nonatomic, assign) NSUInteger maxConcurrentLoadingTasks; + +/** + * The maximum number of concurrent image decoding tasks. Decoding large + * images can be especially CPU and memory intensive, so if your are decoding a + * lot of large images in your app, you may wish to adjust this value. + */ +@property (nonatomic, assign) NSUInteger maxConcurrentDecodingTasks; + +/** + * Decoding large images can use a lot of memory, and potentially cause the app + * to crash. This value allows you to throttle the amount of memory used by the + * decoder independently of the number of concurrent threads. This means you can + * still decode a lot of small images in parallel, without allowing the decoder + * to try to decompress multiple huge images at once. Note that this value is + * only a hint, and not an indicator of the total memory used by the app. + */ +@property (nonatomic, assign) NSUInteger maxConcurrentDecodingBytes; + +/** + * Loads the specified image at the highest available resolution. + * Can be called from any thread, will call back on an unspecified thread. + */ +- (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. +*/ +- (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 + * `resizeMode` for optimal image decoding. 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. Can be called from any + * thread, will call callback on an unspecified thread. + */ +- (RCTImageLoaderCancellationBlock)decodeImageData:(NSData *)imageData + size:(CGSize)size + scale:(CGFloat)scale + clipped:(BOOL)clipped + resizeMode:(RCTResizeMode)resizeMode + completionBlock:(RCTImageLoaderCompletionBlock)completionBlock; + +/** + * Get image size, in pixels. This method will do the least work possible to get + * the information, and won't decode the image if it doesn't have to. + */ +- (RCTImageLoaderCancellationBlock)getImageSizeForURLRequest:(NSURLRequest *)imageURLRequest + block:(void(^)(NSError *error, CGSize size))completionBlock; +/** + * Determines whether given image URLs are cached locally. The `requests` array is expected + * to contain objects convertible to NSURLRequest. The return value maps URLs to strings: + * "disk" for images known to be cached in non-volatile storage, "memory" for images known + * to be cached in memory. Dictionary items corresponding to images that are not known to be + * cached are simply missing. + */ +- (NSDictionary *)getImageCacheStatus:(NSArray *)requests; + +/** + * Allows developers to set their own caching implementation for + * decoded images as long as it conforms to the RCTImageCache + * protocol. This method should be called in bridgeDidInitializeModule. + */ +- (void)setImageCache:(id)cache; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageLoaderWithAttributionProtocol.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageLoaderWithAttributionProtocol.h new file mode 100644 index 0000000..07aab9d --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageLoaderWithAttributionProtocol.h @@ -0,0 +1,51 @@ +/* + * 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 + +#import +#import + +RCT_EXTERN BOOL RCTImageLoadingPerfInstrumentationEnabled(void); +RCT_EXTERN void RCTEnableImageLoadingPerfInstrumentation(BOOL enabled); + +@protocol RCTImageLoaderWithAttributionProtocol + +// TODO (T61325135): Remove C++ checks +#ifdef __cplusplus +/** + * Same as the variant in RCTImageURLLoaderProtocol, but allows passing attribution + * information that each image URL loader can process. + */ +- (RCTImageURLLoaderRequest *)loadImageWithURLRequest:(NSURLRequest *)imageURLRequest + size:(CGSize)size + scale:(CGFloat)scale + clipped:(BOOL)clipped + resizeMode:(RCTResizeMode)resizeMode + priority: (RCTImageLoaderPriority)priority + attribution:(const facebook::react::ImageURLLoaderAttribution &)attribution + progressBlock:(RCTImageLoaderProgressBlock)progressBlock + partialLoadBlock:(RCTImageLoaderPartialLoadBlock)partialLoadBlock + completionBlock:(RCTImageLoaderCompletionBlockWithMetadata)completionBlock; +#endif + +/** + * Image instrumentation - start tracking the on-screen visibility of the native image view. + */ +- (void)trackURLImageVisibilityForRequest:(RCTImageURLLoaderRequest *)loaderRequest imageView:(UIView *)imageView; + +/** + * Image instrumentation - notify that the request was cancelled. + */ +- (void)trackURLImageRequestDidDestroy:(RCTImageURLLoaderRequest *)loaderRequest; + +/** + * Image instrumentation - notify that the native image view was destroyed. + */ +- (void)trackURLImageDidDestroy:(RCTImageURLLoaderRequest *)loaderRequest; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImagePlugins.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImagePlugins.h new file mode 100644 index 0000000..1e943d8 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImagePlugins.h @@ -0,0 +1,44 @@ +/** + * 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 an internal plugin build system + */ + +#ifdef RN_DISABLE_OSS_PLUGIN_HEADER + +// FB Internal: FBRCTImagePlugins.h is autogenerated by the build system. +#import + +#else + +// OSS-compatibility layer + +#import + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wreturn-type-c-linkage" + +#ifdef __cplusplus +extern "C" { +#endif + +// RCTTurboModuleManagerDelegate should call this to resolve module classes. +Class RCTImageClassProvider(const char *name); + +// Lookup functions +Class RCTGIFImageDecoderCls(void) __attribute__((used)); +Class RCTImageEditingManagerCls(void) __attribute__((used)); +Class RCTImageLoaderCls(void) __attribute__((used)); +Class RCTImageStoreManagerCls(void) __attribute__((used)); +Class RCTLocalAssetImageLoaderCls(void) __attribute__((used)); + +#ifdef __cplusplus +} +#endif + +#pragma GCC diagnostic pop + +#endif // RN_DISABLE_OSS_PLUGIN_HEADER diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageShadowView.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageShadowView.h new file mode 100644 index 0000000..3057118 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageShadowView.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTImageShadowView : RCTShadowView + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageSource.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageSource.h new file mode 100644 index 0000000..928657c --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageSource.h @@ -0,0 +1,40 @@ +/* + * 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 + +#import + +/** + * Object containing an image URL and associated metadata. + */ +@interface RCTImageSource : NSObject + +@property (nonatomic, copy, readonly) NSURLRequest *request; +@property (nonatomic, assign, readonly) CGSize size; +@property (nonatomic, assign, readonly) CGFloat scale; + +/** + * Create a new image source object. + * Pass a size of CGSizeZero if you do not know or wish to specify the image + * size. Pass a scale of zero if you do not know or wish to specify the scale. + */ +- (instancetype)initWithURLRequest:(NSURLRequest *)request size:(CGSize)size scale:(CGFloat)scale; + +/** + * Create a copy of the image source with the specified size and scale. + */ +- (instancetype)imageSourceWithSize:(CGSize)size scale:(CGFloat)scale; + +@end + +@interface RCTConvert (ImageSource) + ++ (RCTImageSource *)RCTImageSource:(id)json; ++ (NSArray *)RCTImageSourceArray:(id)json; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageStoreManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageStoreManager.h new file mode 100644 index 0000000..0073381 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageStoreManager.h @@ -0,0 +1,46 @@ +/* + * 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 + +#import +#import + +@interface RCTImageStoreManager : NSObject + +/** + * Set and get cached image data asynchronously. It is safe to call these from any + * thread. The callbacks will be called on an unspecified thread. + */ +- (void)removeImageForTag:(NSString *)imageTag withBlock:(void (^)(void))block; +- (void)storeImageData:(NSData *)imageData withBlock:(void (^)(NSString *imageTag))block; +- (void)getImageDataForTag:(NSString *)imageTag withBlock:(void (^)(NSData *imageData))block; + +/** + * Convenience method to store an image directly (image is converted to data + * internally, so any metadata such as scale or orientation will be lost). + */ +- (void)storeImage:(UIImage *)image withBlock:(void (^)(NSString *imageTag))block; + +@end + +@interface RCTImageStoreManager (Deprecated) + +/** + * These methods are deprecated - use the data-based alternatives instead. + */ +- (NSString *)storeImage:(UIImage *)image __deprecated; +- (UIImage *)imageForTag:(NSString *)imageTag __deprecated; +- (void)getImageForTag:(NSString *)imageTag withBlock:(void (^)(UIImage *image))block __deprecated; + +@end + +@interface RCTBridge (RCTImageStoreManager) + +@property (nonatomic, readonly) RCTImageStoreManager *imageStoreManager; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageURLLoader.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageURLLoader.h new file mode 100644 index 0000000..e49ed11 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageURLLoader.h @@ -0,0 +1,80 @@ +/* + * 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 + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef void (^RCTImageLoaderProgressBlock)(int64_t progress, int64_t total); +typedef void (^RCTImageLoaderPartialLoadBlock)(UIImage *image); +typedef void (^RCTImageLoaderCompletionBlock)(NSError * _Nullable error, UIImage * _Nullable image); +// Metadata is passed as a id in an additional parameter because there are forks of RN without this parameter, +// and the complexity of RCTImageLoader would make using protocols here difficult to typecheck. +typedef void (^RCTImageLoaderCompletionBlockWithMetadata)(NSError * _Nullable error, UIImage * _Nullable image, id _Nullable metadata); +typedef dispatch_block_t RCTImageLoaderCancellationBlock; + +/** + * Provides the interface needed to register an image loader. Image data + * loaders are also bridge modules, so should be registered using + * RCT_EXPORT_MODULE(). + */ +@protocol RCTImageURLLoader + +/** + * Indicates whether this data loader is capable of processing the specified + * request URL. Typically the handler would examine the scheme/protocol of the + * URL to determine this. + */ +- (BOOL)canLoadImageURL:(NSURL *)requestURL; + +/** + * Send a network request to load the request URL. The method should call the + * progressHandler (if applicable) and the completionHandler when the request + * has finished. The method should also return a cancellation block, if + * applicable. + */ +- (nullable RCTImageLoaderCancellationBlock)loadImageForURL:(NSURL *)imageURL + size:(CGSize)size + scale:(CGFloat)scale + resizeMode:(RCTResizeMode)resizeMode + progressHandler:(RCTImageLoaderProgressBlock)progressHandler + partialLoadHandler:(RCTImageLoaderPartialLoadBlock)partialLoadHandler + completionHandler:(RCTImageLoaderCompletionBlock)completionHandler; + +@optional + +/** + * If more than one RCTImageURLLoader responds YES to `-canLoadImageURL:` + * then `loaderPriority` is used to determine which one to use. The loader + * with the highest priority will be selected. Default priority is zero. If + * two or more valid loaders have the same priority, the selection order is + * undefined. + */ +- (float)loaderPriority; + +/** + * If the loader must be called on the serial url cache queue, and whether the completion + * block should be dispatched off the main thread. If this is NO, the loader will be + * called from the main queue. Defaults to YES. + * + * Use with care: disabling scheduling will reduce RCTImageLoader's ability to throttle + * network requests. + */ +- (BOOL)requiresScheduling; + +/** + * If images loaded by the loader should be cached in the decoded image cache. + * Defaults to YES. + */ +- (BOOL)shouldCacheLoadedImages; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageURLLoaderWithAttribution.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageURLLoaderWithAttribution.h new file mode 100644 index 0000000..118bed1 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageURLLoaderWithAttribution.h @@ -0,0 +1,78 @@ +/* + * 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 +#import +#import + +// TODO (T61325135): Remove C++ checks +#ifdef __cplusplus +namespace facebook { +namespace react { + +struct ImageURLLoaderAttribution { + int32_t nativeViewTag = 0; + int32_t surfaceId = 0; + std::string queryRootName; + NSString *analyticTag; +}; + +} // namespace react +} // namespace facebook +#endif + +@interface RCTImageURLLoaderRequest : NSObject + +@property (nonatomic, strong, readonly) NSString *requestId; +@property (nonatomic, strong, readonly) NSURL *imageURL; +@property (nonatomic, copy, readonly) RCTImageLoaderCancellationBlock cancellationBlock; + +- (instancetype)initWithRequestId:(NSString *)requestId imageURL:(NSURL *)imageURL cancellationBlock:(RCTImageLoaderCancellationBlock)cancellationBlock; +- (void)cancel; + +@end + +/** + * Same as the RCTImageURLLoader interface, but allows passing in optional `attribution` information. + * This is useful for per-app logging and other instrumentation. + */ +@protocol RCTImageURLLoaderWithAttribution + +// TODO (T61325135): Remove C++ checks +#ifdef __cplusplus +/** + * Same as the RCTImageURLLoader variant above, but allows optional `attribution` information. + * Caller may also specify a preferred requestId for tracking purpose. + */ +- (RCTImageURLLoaderRequest *)loadImageForURL:(NSURL *)imageURL + size:(CGSize)size + scale:(CGFloat)scale + resizeMode:(RCTResizeMode)resizeMode + requestId:(NSString *)requestId + priority: (RCTImageLoaderPriority)priority + attribution:(const facebook::react::ImageURLLoaderAttribution &)attribution + progressHandler:(RCTImageLoaderProgressBlock)progressHandler + partialLoadHandler:(RCTImageLoaderPartialLoadBlock)partialLoadHandler + completionHandler:(RCTImageLoaderCompletionBlockWithMetadata)completionHandler; +#endif + +/** + * Image instrumentation - start tracking the on-screen visibility of the native image view. + */ +- (void)trackURLImageVisibilityForRequest:(RCTImageURLLoaderRequest *)loaderRequest imageView:(UIView *)imageView; + +/** + * Image instrumentation - notify that the request was destroyed. + */ +- (void)trackURLImageRequestDidDestroy:(RCTImageURLLoaderRequest *)loaderRequest; + +/** + * Image instrumentation - notify that the native image view was destroyed. + */ +- (void)trackURLImageDidDestroy:(RCTImageURLLoaderRequest *)loaderRequest; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageUtils.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageUtils.h new file mode 100644 index 0000000..df04a2c --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageUtils.h @@ -0,0 +1,93 @@ +/* + * 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 + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * This function takes an source size (typically from an image), a target size + * and scale that it will be drawn at (typically in a CGContext) and then + * calculates the rectangle to draw the image into so that it will be sized and + * positioned correctly according to the specified resizeMode. + */ +RCT_EXTERN CGRect RCTTargetRect(CGSize sourceSize, CGSize destSize, + CGFloat destScale, RCTResizeMode resizeMode); + +/** + * This function takes a source size (typically from an image), a target rect + * that it will be drawn into (typically relative to a CGContext), and works out + * the transform needed to draw the image at the correct scale and position. + */ +RCT_EXTERN CGAffineTransform RCTTransformFromTargetRect(CGSize sourceSize, + CGRect targetRect); + +/** + * This function takes an input content size & scale (typically from an image), + * a target size & scale at which it will be displayed (typically in a + * UIImageView) and then calculates the optimal size at which to redraw the + * image so that it will be displayed correctly with the specified resizeMode. + */ +RCT_EXTERN CGSize RCTTargetSize(CGSize sourceSize, CGFloat sourceScale, + CGSize destSize, CGFloat destScale, + RCTResizeMode resizeMode, BOOL allowUpscaling); + +/** + * This function takes an input content size & scale (typically from an image), + * a target size & scale that it will be displayed at, and determines if the + * source will need to be upscaled to fit (which may result in pixelization). + */ +RCT_EXTERN BOOL RCTUpscalingRequired(CGSize sourceSize, CGFloat sourceScale, + CGSize destSize, CGFloat destScale, + RCTResizeMode resizeMode); + +/** + * This function takes the source data for an image and decodes it at the + * specified size. If the original image is smaller than the destination size, + * the resultant image's scale will be decreased to compensate, so the + * width/height of the returned image is guaranteed to be >= destSize. + * Pass a destSize of CGSizeZero to decode the image at its original size. + */ +RCT_EXTERN UIImage *__nullable RCTDecodeImageWithData(NSData *data, + CGSize destSize, + CGFloat destScale, + RCTResizeMode resizeMode); + +/** + * This function takes the source data for an image and decodes just the + * metadata, without decompressing the image itself. + */ +RCT_EXTERN NSDictionary *__nullable RCTGetImageMetadata(NSData *data); + +/** + * Convert an image back into data. Images with an alpha channel will be + * converted to lossless PNG data. Images without alpha will be converted to + * JPEG. The `quality` argument controls the compression ratio of the JPEG + * conversion, with 1.0 being maximum quality. It has no effect for images + * using PNG compression. + */ +RCT_EXTERN NSData *__nullable RCTGetImageData(UIImage *image, float quality); + +/** + * This function transforms an image. `destSize` is the size of the final image, + * and `destScale` is its scale. The `transform` argument controls how the + * source image will be mapped to the destination image. + */ +RCT_EXTERN UIImage *__nullable RCTTransformImage(UIImage *image, + CGSize destSize, + CGFloat destScale, + CGAffineTransform transform); + +/* + * Return YES if image has an alpha component + */ +RCT_EXTERN BOOL RCTImageHasAlpha(CGImageRef image); + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageView.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageView.h new file mode 100644 index 0000000..c895a53 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageView.h @@ -0,0 +1,27 @@ +/* + * 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 +#import +#import + +@class RCTBridge; +@class RCTImageSource; + +@interface RCTImageView : RCTView + +- (instancetype)initWithBridge:(RCTBridge *)bridge NS_DESIGNATED_INITIALIZER; + +@property (nonatomic, assign) UIEdgeInsets capInsets; +@property (nonatomic, strong) UIImage *defaultImage; +@property (nonatomic, assign) UIImageRenderingMode renderingMode; +@property (nonatomic, copy) NSArray *imageSources; +@property (nonatomic, assign) CGFloat blurRadius; +@property (nonatomic, assign) RCTResizeMode resizeMode; +@property (nonatomic, copy) NSString *internal_analyticTag; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageViewManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageViewManager.h new file mode 100644 index 0000000..9431f35 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTImageViewManager.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTImageViewManager : RCTViewManager + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTInitializing.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTInitializing.h new file mode 100644 index 0000000..56b14b1 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTInitializing.h @@ -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 + +@protocol RCTInitializing + +- (void)initialize; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTInputAccessoryShadowView.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTInputAccessoryShadowView.h new file mode 100644 index 0000000..8ed5110 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTInputAccessoryShadowView.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTInputAccessoryShadowView : RCTShadowView + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTInputAccessoryView.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTInputAccessoryView.h new file mode 100644 index 0000000..d4c48ce --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTInputAccessoryView.h @@ -0,0 +1,17 @@ +/* + * 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 + +@class RCTBridge; +@class RCTInputAccessoryViewContent; + +@interface RCTInputAccessoryView : UIView + +- (instancetype)initWithBridge:(RCTBridge *)bridge; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTInputAccessoryViewContent.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTInputAccessoryViewContent.h new file mode 100644 index 0000000..f65eea7 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTInputAccessoryViewContent.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTInputAccessoryViewContent : UIView + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTInputAccessoryViewManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTInputAccessoryViewManager.h new file mode 100644 index 0000000..251048d --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTInputAccessoryViewManager.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTInputAccessoryViewManager : RCTViewManager + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTInspector.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTInspector.h new file mode 100644 index 0000000..97c8d2e --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTInspector.h @@ -0,0 +1,32 @@ +/* + * 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 +#import + +#if RCT_DEV + +@class RCTInspectorRemoteConnection; + +@interface RCTInspectorLocalConnection : NSObject +- (void)sendMessage:(NSString *)message; +- (void)disconnect; +@end + +@interface RCTInspectorPage : NSObject +@property (nonatomic, readonly) NSInteger id; +@property (nonatomic, readonly) NSString *title; +@property (nonatomic, readonly) NSString *vm; +@end + +@interface RCTInspector : NSObject ++ (NSArray *)pages; ++ (RCTInspectorLocalConnection *)connectPage:(NSInteger)pageId + forRemoteConnection:(RCTInspectorRemoteConnection *)remote; +@end + +#endif diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTInspectorDevServerHelper.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTInspectorDevServerHelper.h new file mode 100644 index 0000000..b69fa02 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTInspectorDevServerHelper.h @@ -0,0 +1,23 @@ +/* + * 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 +#import + +#import +#import + +#if RCT_DEV + +@interface RCTInspectorDevServerHelper : NSObject + ++ (RCTInspectorPackagerConnection *)connectWithBundleURL:(NSURL *)bundleURL; ++ (void)disableDebugger; ++ (void)openURL:(NSString *)url withBundleURL:(NSURL *)bundleURL withErrorMessage:(NSString *)errorMessage; +@end + +#endif diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTInspectorPackagerConnection.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTInspectorPackagerConnection.h new file mode 100644 index 0000000..de08694 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTInspectorPackagerConnection.h @@ -0,0 +1,35 @@ +/* + * 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 +#import + +#if RCT_DEV + +@interface RCTBundleStatus : NSObject +@property (atomic, assign) BOOL isLastBundleDownloadSuccess; +@property (atomic, assign) NSTimeInterval bundleUpdateTimestamp; +@end + +typedef RCTBundleStatus * (^RCTBundleStatusProvider)(void); + +@interface RCTInspectorPackagerConnection : NSObject +- (instancetype)initWithURL:(NSURL *)url; + +- (bool)isConnected; +- (void)connect; +- (void)closeQuietly; +- (void)sendEventToAllConnections:(NSString *)event; +- (void)setBundleStatusProvider:(RCTBundleStatusProvider)bundleStatusProvider; +@end + +@interface RCTInspectorRemoteConnection : NSObject +- (void)onMessage:(NSString *)message; +- (void)onDisconnect; +@end + +#endif diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTInterpolationAnimatedNode.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTInterpolationAnimatedNode.h new file mode 100644 index 0000000..8ec4101 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTInterpolationAnimatedNode.h @@ -0,0 +1,12 @@ +/* + * 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 "RCTValueAnimatedNode.h" + +@interface RCTInterpolationAnimatedNode : RCTValueAnimatedNode + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTInvalidating.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTInvalidating.h new file mode 100644 index 0000000..bc144cd --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTInvalidating.h @@ -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 + +@protocol RCTInvalidating + +- (void)invalidate; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTJSScriptLoaderModule.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTJSScriptLoaderModule.h new file mode 100644 index 0000000..a0ba36e --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTJSScriptLoaderModule.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +@class RCTSource; + +/** + * This protocol should be adopted when a turbo module needs to tell React Native to load a script. + * In bridge-less React Native, it is a replacement for [_bridge loadAndExecuteSplitBundleURL:]. + */ +@protocol RCTJSScriptLoaderModule + +@property (nonatomic, copy, nonnull) void (^loadScript)(RCTSource *source); + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTJSStackFrame.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTJSStackFrame.h new file mode 100644 index 0000000..1a66e29 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTJSStackFrame.h @@ -0,0 +1,30 @@ +/* + * 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 + +@interface RCTJSStackFrame : NSObject + +@property (nonatomic, copy, readonly) NSString *methodName; +@property (nonatomic, copy, readonly) NSString *file; +@property (nonatomic, readonly) NSInteger lineNumber; +@property (nonatomic, readonly) NSInteger column; +@property (nonatomic, readonly) BOOL collapse; + +- (instancetype)initWithMethodName:(NSString *)methodName + file:(NSString *)file + lineNumber:(NSInteger)lineNumber + column:(NSInteger)column + collapse:(BOOL)collapse; +- (NSDictionary *)toDictionary; + ++ (instancetype)stackFrameWithLine:(NSString *)line; ++ (instancetype)stackFrameWithDictionary:(NSDictionary *)dict; ++ (NSArray *)stackFramesWithLines:(NSString *)lines; ++ (NSArray *)stackFramesWithDictionaries:(NSArray *)dicts; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTJSThread.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTJSThread.h new file mode 100644 index 0000000..8f1bc76 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTJSThread.h @@ -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 +#import + +#import + +/** + * This constant can be returned from +methodQueue to force module + * methods to be called on the JavaScript thread. This can have serious + * implications for performance, so only use this if you're sure it's what + * you need. + * + * NOTE: RCTJSThread is not a real libdispatch queue + */ +RCT_EXTERN dispatch_queue_t RCTJSThread; + +/** + * Initializes the RCTJSThread constant. + * Exported because the bridgeless initialization layer needs to initialize + * RCTJSThread. In bridgeless mode, RCTBridge isn't accessed, and RCTJSThread + * therefore isn't initialized. + */ +RCT_EXTERN void _RCTInitializeJSThreadConstantInternal(void); diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTJavaScriptExecutor.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTJavaScriptExecutor.h new file mode 100644 index 0000000..c42fb05 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTJavaScriptExecutor.h @@ -0,0 +1,80 @@ +/* + * 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 + +#import +#import + +typedef void (^RCTJavaScriptCompleteBlock)(NSError *error); +typedef void (^RCTJavaScriptCallback)(id result, NSError *error); + +/** + * Abstracts away a JavaScript execution context - we may be running code in a + * web view (for debugging purposes), or may be running code in a `JSContext`. + */ +@protocol RCTJavaScriptExecutor + +/** + * Used to set up the executor after the bridge has been fully initialized. + * Do any expensive setup in this method instead of `-init`. + */ +- (void)setUp; + +/** + * Whether the executor has been invalidated + */ +@property (nonatomic, readonly, getter=isValid) BOOL valid; + +/** + * Executes BatchedBridge.flushedQueue on JS thread and calls the given callback + * with JSValue, containing the next queue, and JSContext. + */ +- (void)flushedQueue:(RCTJavaScriptCallback)onComplete; + +/** + * Executes BatchedBridge.callFunctionReturnFlushedQueue with the module name, + * method name and optional additional arguments on the JS thread and calls the + * given callback with JSValue, containing the next queue, and JSContext. + */ +- (void)callFunctionOnModule:(NSString *)module + method:(NSString *)method + arguments:(NSArray *)args + callback:(RCTJavaScriptCallback)onComplete; + +/** + * Executes BatchedBridge.invokeCallbackAndReturnFlushedQueue with the cbID, + * and optional additional arguments on the JS thread and calls the + * given callback with JSValue, containing the next queue, and JSContext. + */ +- (void)invokeCallbackID:(NSNumber *)cbID arguments:(NSArray *)args callback:(RCTJavaScriptCallback)onComplete; + +/** + * Runs an application script, and notifies of the script load being complete via `onComplete`. + */ +- (void)executeApplicationScript:(NSData *)script + sourceURL:(NSURL *)sourceURL + onComplete:(RCTJavaScriptCompleteBlock)onComplete; + +- (void)injectJSONText:(NSString *)script + asGlobalObjectNamed:(NSString *)objectName + callback:(RCTJavaScriptCompleteBlock)onComplete; + +/** + * Enqueue a block to run in the executors JS thread. Fallback to `dispatch_async` + * on the main queue if the executor doesn't own a thread. + */ +- (void)executeBlockOnJavaScriptQueue:(dispatch_block_t)block; + +/** + * Special case for Timers + ContextExecutor - instead of the default + * if jsthread then call else dispatch call on jsthread + * ensure the call is made async on the jsthread + */ +- (void)executeAsyncBlockOnJavaScriptQueue:(dispatch_block_t)block; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTJavaScriptLoader.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTJavaScriptLoader.h new file mode 100755 index 0000000..729fa37 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTJavaScriptLoader.h @@ -0,0 +1,98 @@ +/* + * 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 + +#import + +extern NSString *const RCTJavaScriptLoaderErrorDomain; + +extern const UInt32 RCT_BYTECODE_ALIGNMENT; + +UInt32 RCTReadUInt32LE(NSData *script, UInt32 offset); +bool RCTIsBytecodeBundle(NSData *script); + +NS_ENUM(NSInteger){ + RCTJavaScriptLoaderErrorNoScriptURL = 1, + RCTJavaScriptLoaderErrorFailedOpeningFile = 2, + RCTJavaScriptLoaderErrorFailedReadingFile = 3, + RCTJavaScriptLoaderErrorFailedStatingFile = 3, + RCTJavaScriptLoaderErrorURLLoadFailed = 3, + RCTJavaScriptLoaderErrorBCVersion = 4, + RCTJavaScriptLoaderErrorBCNotSupported = 4, + + RCTJavaScriptLoaderErrorCannotBeLoadedSynchronously = 1000, +}; + +NS_ENUM(NSInteger){ + RCTSourceFilesChangedCountNotBuiltByBundler = -2, + RCTSourceFilesChangedCountRebuiltFromScratch = -1, +}; + +@interface RCTLoadingProgress : NSObject + +@property (nonatomic, copy) NSString *status; +@property (strong, nonatomic) NSNumber *done; +@property (strong, nonatomic) NSNumber *total; + +@end + +@interface RCTSource : NSObject + +/** + * URL of the source object. + */ +@property (strong, nonatomic, readonly) NSURL *url; + +/** + * JS source (or simply the binary header in the case of a RAM bundle). + */ +@property (strong, nonatomic, readonly) NSData *data; + +/** + * Length of the entire JS bundle. Note that self.length != self.data.length in the case of certain bundle formats. For + * instance, when using RAM bundles: + * + * - self.data will point to the bundle header + * - self.data.length is the length of the bundle header, i.e. sizeof(facebook::react::BundleHeader) + * - self.length is the length of the entire bundle file (header + contents) + */ +@property (nonatomic, readonly) NSUInteger length; + +/** + * Returns number of files changed when building this bundle: + * + * - RCTSourceFilesChangedCountNotBuiltByBundler if the source wasn't built by the bundler (e.g. read from disk) + * - RCTSourceFilesChangedCountRebuiltFromScratch if the source was rebuilt from scratch by the bundler + * - Otherwise, the number of files changed when incrementally rebuilding the source + */ +@property (nonatomic, readonly) NSInteger filesChangedCount; + +@end + +typedef void (^RCTSourceLoadProgressBlock)(RCTLoadingProgress *progressData); +typedef void (^RCTSourceLoadBlock)(NSError *error, RCTSource *source); + +@interface RCTJavaScriptLoader : NSObject + ++ (void)loadBundleAtURL:(NSURL *)scriptURL + onProgress:(RCTSourceLoadProgressBlock)onProgress + onComplete:(RCTSourceLoadBlock)onComplete; + +/** + * @experimental + * Attempts to synchronously load the script at the given URL. The following two conditions must be met: + * 1. It must be a file URL. + * 2. It must not point to a text/javascript file. + * If the URL does not meet those conditions, this method will return nil and supply an error with the domain + * RCTJavaScriptLoaderErrorDomain and the code RCTJavaScriptLoaderErrorCannotBeLoadedSynchronously. + */ ++ (NSData *)attemptSynchronousLoadOfBundleAtURL:(NSURL *)scriptURL + sourceLength:(int64_t *)sourceLength + error:(NSError **)error; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTKeyCommands.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTKeyCommands.h new file mode 100644 index 0000000..2bdefcf --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTKeyCommands.h @@ -0,0 +1,31 @@ +/* + * 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 + +@interface RCTKeyCommands : NSObject + ++ (instancetype)sharedInstance; + +/** + * Register a keyboard command. + */ +- (void)registerKeyCommandWithInput:(NSString *)input + modifierFlags:(UIKeyModifierFlags)flags + action:(void (^)(UIKeyCommand *command))block; + +/** + * Unregister a keyboard command. + */ +- (void)unregisterKeyCommandWithInput:(NSString *)input modifierFlags:(UIKeyModifierFlags)flags; + +/** + * Check if a command is registered. + */ +- (BOOL)isKeyCommandRegisteredForInput:(NSString *)input modifierFlags:(UIKeyModifierFlags)flags; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTKeyboardObserver.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTKeyboardObserver.h new file mode 100644 index 0000000..320b65d --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTKeyboardObserver.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTKeyboardObserver : RCTEventEmitter + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTLayout.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTLayout.h new file mode 100644 index 0000000..d838032 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTLayout.h @@ -0,0 +1,72 @@ +/* + * 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 + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@class RCTShadowView; + +typedef NS_ENUM(NSInteger, RCTDisplayType) { + RCTDisplayTypeNone, + RCTDisplayTypeFlex, + RCTDisplayTypeInline, +}; + +struct RCTLayoutMetrics { + CGRect frame; + CGRect contentFrame; + UIEdgeInsets borderWidth; + RCTDisplayType displayType; + UIUserInterfaceLayoutDirection layoutDirection; +}; +typedef struct CG_BOXABLE RCTLayoutMetrics RCTLayoutMetrics; + +struct RCTLayoutContext { + CGPoint absolutePosition; + __unsafe_unretained NSHashTable *_Nonnull affectedShadowViews; + __unsafe_unretained NSHashTable *_Nonnull other; +}; +typedef struct CG_BOXABLE RCTLayoutContext RCTLayoutContext; + +static inline BOOL RCTLayoutMetricsEqualToLayoutMetrics(RCTLayoutMetrics a, RCTLayoutMetrics b) +{ + return CGRectEqualToRect(a.frame, b.frame) && CGRectEqualToRect(a.contentFrame, b.contentFrame) && + UIEdgeInsetsEqualToEdgeInsets(a.borderWidth, b.borderWidth) && a.displayType == b.displayType && + a.layoutDirection == b.layoutDirection; +} + +RCT_EXTERN RCTLayoutMetrics RCTLayoutMetricsFromYogaNode(YGNodeRef yogaNode); + +/** + * Converts float values between Yoga and CoreGraphics representations, + * especially in terms of edge cases. + */ +RCT_EXTERN float RCTYogaFloatFromCoreGraphicsFloat(CGFloat value); +RCT_EXTERN CGFloat RCTCoreGraphicsFloatFromYogaFloat(float value); + +/** + * Converts compound `YGValue` to simple `CGFloat` value. + */ +RCT_EXTERN CGFloat RCTCoreGraphicsFloatFromYogaValue(YGValue value, CGFloat baseFloatValue); + +/** + * Converts `YGDirection` to `UIUserInterfaceLayoutDirection` and vise versa. + */ +RCT_EXTERN YGDirection RCTYogaLayoutDirectionFromUIKitLayoutDirection(UIUserInterfaceLayoutDirection direction); +RCT_EXTERN UIUserInterfaceLayoutDirection RCTUIKitLayoutDirectionFromYogaLayoutDirection(YGDirection direction); + +/** + * Converts `YGDisplay` to `RCTDisplayType` and vise versa. + */ +RCT_EXTERN YGDisplay RCTYogaDisplayTypeFromReactDisplayType(RCTDisplayType displayType); +RCT_EXTERN RCTDisplayType RCTReactDisplayTypeFromYogaDisplayType(YGDisplay displayType); + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTLayoutAnimation.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTLayoutAnimation.h new file mode 100644 index 0000000..e907a99 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTLayoutAnimation.h @@ -0,0 +1,34 @@ +/* + * 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 + +#import + +@interface RCTLayoutAnimation : NSObject + +@property (nonatomic, readonly) NSTimeInterval duration; +@property (nonatomic, readonly) NSTimeInterval delay; +@property (nonatomic, readonly, copy) NSString *property ; +@property (nonatomic, readonly) CGFloat springDamping; +@property (nonatomic, readonly) CGFloat initialVelocity; +@property (nonatomic, readonly) RCTAnimationType animationType; + ++ (void)initializeStatics; + +- (instancetype)initWithDuration:(NSTimeInterval)duration + delay:(NSTimeInterval)delay + property:(NSString *)property + springDamping:(CGFloat)springDamping + initialVelocity:(CGFloat)initialVelocity + animationType:(RCTAnimationType)animationType; + +- (instancetype)initWithDuration:(NSTimeInterval)duration config:(NSDictionary *)config; + +- (void)performAnimations:(void (^)(void))animations withCompletionBlock:(void (^)(BOOL completed))completionBlock; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTLayoutAnimationGroup.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTLayoutAnimationGroup.h new file mode 100644 index 0000000..f13d046 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTLayoutAnimationGroup.h @@ -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 + +#import + +@class RCTLayoutAnimation; + +@interface RCTLayoutAnimationGroup : NSObject + +@property (nonatomic, readonly) RCTLayoutAnimation *creatingLayoutAnimation; +@property (nonatomic, readonly) RCTLayoutAnimation *updatingLayoutAnimation; +@property (nonatomic, readonly) RCTLayoutAnimation *deletingLayoutAnimation; + +@property (nonatomic, copy) RCTResponseSenderBlock callback; + +- (instancetype)initWithCreatingLayoutAnimation:(RCTLayoutAnimation *)creatingLayoutAnimation + updatingLayoutAnimation:(RCTLayoutAnimation *)updatingLayoutAnimation + deletingLayoutAnimation:(RCTLayoutAnimation *)deletingLayoutAnimation + callback:(RCTResponseSenderBlock)callback; + +- (instancetype)initWithConfig:(NSDictionary *)config callback:(RCTResponseSenderBlock)callback; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTLinkingManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTLinkingManager.h new file mode 100644 index 0000000..02de122 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTLinkingManager.h @@ -0,0 +1,34 @@ +/* + * 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 +#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= 12000) /* __IPHONE_12_0 */ +#import +#endif +#import + +@interface RCTLinkingManager : RCTEventEmitter + ++ (BOOL)application:(nonnull UIApplication *)app + openURL:(nonnull NSURL *)URL + options:(nonnull NSDictionary *)options; + ++ (BOOL)application:(nonnull UIApplication *)application + openURL:(nonnull NSURL *)URL + sourceApplication:(nullable NSString *)sourceApplication + annotation:(nonnull id)annotation; + ++ (BOOL)application:(nonnull UIApplication *)application + continueUserActivity:(nonnull NSUserActivity *)userActivity + restorationHandler: + #if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= 12000) /* __IPHONE_12_0 */ + (nonnull void (^)(NSArray> *_Nullable))restorationHandler; + #else + (nonnull void (^)(NSArray *_Nullable))restorationHandler; + #endif + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTLinkingPlugins.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTLinkingPlugins.h new file mode 100644 index 0000000..17e3d6c --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTLinkingPlugins.h @@ -0,0 +1,40 @@ +/** + * 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 an internal plugin build system + */ + +#ifdef RN_DISABLE_OSS_PLUGIN_HEADER + +// FB Internal: FBRCTLinkingPlugins.h is autogenerated by the build system. +#import + +#else + +// OSS-compatibility layer + +#import + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wreturn-type-c-linkage" + +#ifdef __cplusplus +extern "C" { +#endif + +// RCTTurboModuleManagerDelegate should call this to resolve module classes. +Class RCTLinkingClassProvider(const char *name); + +// Lookup functions +Class RCTLinkingManagerCls(void) __attribute__((used)); + +#ifdef __cplusplus +} +#endif + +#pragma GCC diagnostic pop + +#endif // RN_DISABLE_OSS_PLUGIN_HEADER diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTLocalAssetImageLoader.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTLocalAssetImageLoader.h new file mode 100644 index 0000000..c04f21e --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTLocalAssetImageLoader.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTLocalAssetImageLoader : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTLog.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTLog.h new file mode 100644 index 0000000..0d79797 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTLog.h @@ -0,0 +1,136 @@ +/* + * 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 + +#import +#import +#import + +#ifndef RCTLOG_ENABLED +#define RCTLOG_ENABLED 1 +#endif + +/** + * Thresholds for logs to display a redbox. You can override these values when debugging + * in order to tweak the default logging behavior. + */ +#ifndef RCTLOG_REDBOX_LEVEL +#define RCTLOG_REDBOX_LEVEL RCTLogLevelError +#endif + +/** + * Logging macros. Use these to log information, warnings and errors in your + * own code. + */ +#define RCTLog(...) _RCTLog(RCTLogLevelInfo, __VA_ARGS__) +#define RCTLogTrace(...) _RCTLog(RCTLogLevelTrace, __VA_ARGS__) +#define RCTLogInfo(...) _RCTLog(RCTLogLevelInfo, __VA_ARGS__) +#define RCTLogAdvice(string, ...) RCTLogWarn([@"(ADVICE) " stringByAppendingString:(NSString *)string], __VA_ARGS__) +#define RCTLogWarn(...) _RCTLog(RCTLogLevelWarning, __VA_ARGS__) +#define RCTLogError(...) _RCTLog(RCTLogLevelError, __VA_ARGS__) + +/** + * An enum representing the severity of the log message. + */ +typedef NS_ENUM(NSInteger, RCTLogLevel) { + RCTLogLevelTrace = 0, + RCTLogLevelInfo = 1, + RCTLogLevelWarning = 2, + RCTLogLevelError = 3, + RCTLogLevelFatal = 4 +}; + +/** + * An enum representing the source of a log message. + */ +typedef NS_ENUM(NSInteger, RCTLogSource) { RCTLogSourceNative = 1, RCTLogSourceJavaScript = 2 }; + +/** + * A block signature to be used for custom logging functions. In most cases you + * will want to pass these arguments to the RCTFormatLog function in order to + * generate a string. + */ +typedef void (^RCTLogFunction)( + RCTLogLevel level, + RCTLogSource source, + NSString *fileName, + NSNumber *lineNumber, + NSString *message); + +/** + * A method to generate a string from a collection of log data. To omit any + * particular data from the log, just pass nil or zero for the argument. + */ +RCT_EXTERN NSString * +RCTFormatLog(NSDate *timestamp, RCTLogLevel level, NSString *fileName, NSNumber *lineNumber, NSString *message); + +/** + * A method to generate a string RCTLogLevel + */ +RCT_EXTERN NSString *RCTFormatLogLevel(RCTLogLevel); + +/** + * A method to generate a string from a RCTLogSource + */ +RCT_EXTERN NSString *RCTFormatLogSource(RCTLogSource); + +/** + * The default logging function used by RCTLogXX. + */ +extern RCTLogFunction RCTDefaultLogFunction; + +/** + * These methods get and set the global logging threshold. This is the level + * below which logs will be ignored. Default is RCTLogLevelInfo for debug and + * RCTLogLevelError for production. + */ +RCT_EXTERN void RCTSetLogThreshold(RCTLogLevel threshold); +RCT_EXTERN RCTLogLevel RCTGetLogThreshold(void); + +/** + * These methods get and set the global logging function called by the RCTLogXX + * macros. You can use these to replace the standard behavior with custom log + * functionality. + */ +RCT_EXTERN void RCTSetLogFunction(RCTLogFunction logFunction); +RCT_EXTERN RCTLogFunction RCTGetLogFunction(void); + +/** + * This appends additional code to the existing log function, without replacing + * the existing functionality. Useful if you just want to forward logs to an + * extra service without changing the default behavior. + */ +RCT_EXTERN void RCTAddLogFunction(RCTLogFunction logFunction); + +/** + * This method temporarily overrides the log function while performing the + * specified block. This is useful for testing purposes (to detect if a given + * function logs something) or to suppress or override logging temporarily. + */ +RCT_EXTERN void RCTPerformBlockWithLogFunction(void (^block)(void), RCTLogFunction logFunction); + +/** + * This method adds a conditional prefix to any messages logged within the scope + * of the passed block. This is useful for adding additional context to log + * messages. The block will be performed synchronously on the current thread. + */ +RCT_EXTERN void RCTPerformBlockWithLogPrefix(void (^block)(void), NSString *prefix); + +/** + * Private logging function - ignore this. + */ +#if RCTLOG_ENABLED +#define _RCTLog(lvl, ...) _RCTLogNativeInternal(lvl, __FILE__, __LINE__, __VA_ARGS__) +#else +#define _RCTLog(lvl, ...) \ + do { \ + } while (0) +#endif + +RCT_EXTERN void _RCTLogNativeInternal(RCTLogLevel, const char *, int, NSString *, ...) NS_FORMAT_FUNCTION(4, 5); +RCT_EXTERN void _RCTLogJavaScriptInternal(RCTLogLevel, NSString *); diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTLogBox.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTLogBox.h new file mode 100644 index 0000000..e3bf6ad --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTLogBox.h @@ -0,0 +1,19 @@ +/* + * 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 +#import "RCTLogBoxView.h" + +@interface RCTLogBox : NSObject + +#if RCT_DEV_MENU + +- (void)setRCTLogBoxView:(RCTLogBoxView *)view; + +#endif + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTLogBoxView.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTLogBoxView.h new file mode 100644 index 0000000..7c05bcb --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTLogBoxView.h @@ -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 +#import +#import + +@interface RCTLogBoxView : UIWindow + +- (instancetype)initWithFrame:(CGRect)frame; + +- (void)createRootViewController:(UIView *)view; + +- (instancetype)initWithFrame:(CGRect)frame bridge:(RCTBridge *)bridge; + +- (void)show; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTMacros.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTMacros.h new file mode 100644 index 0000000..9144bbe --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTMacros.h @@ -0,0 +1,16 @@ +/* + * 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. + */ + +#define _CONCAT(A, B) A##B +#define CONCAT(A, B) _CONCAT(A, B) + +#if !defined(PIC_MODIFIER) +#define PIC_MODIFIER +#endif + +#define SYMBOL_NAME(name) CONCAT(__USER_LABEL_PREFIX__, name) +#define SYMBOL_NAME_PIC(name) CONCAT(SYMBOL_NAME(name), PIC_MODIFIER) diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTManagedPointer.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTManagedPointer.h new file mode 100644 index 0000000..4ed6616 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTManagedPointer.h @@ -0,0 +1,40 @@ +/* + * 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. + */ + +#ifdef __cplusplus + +#include + +#import + +/** + * Type erased wrapper over any cxx value that can be passed as an argument + * to native method. + */ + +@interface RCTManagedPointer : NSObject + +@property (nonatomic, readonly) void *voidPointer; + +- (instancetype)initWithPointer:(std::shared_ptr)pointer; + +@end + +namespace facebook { +namespace react { + +template +RCTManagedPointer *managedPointer(P initializer) +{ + auto ptr = std::shared_ptr(new T(initializer)); + return [[RCTManagedPointer alloc] initWithPointer:std::move(ptr)]; +} + +} +} + +#endif diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTMaskedView.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTMaskedView.h new file mode 100644 index 0000000..4628240 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTMaskedView.h @@ -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 + +#import + +@interface RCTMaskedView : RCTView + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTMaskedViewManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTMaskedViewManager.h new file mode 100644 index 0000000..a37f85a --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTMaskedViewManager.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTMaskedViewManager : RCTViewManager + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTModalHostView.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTModalHostView.h new file mode 100644 index 0000000..01d3861 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTModalHostView.h @@ -0,0 +1,51 @@ +/* + * 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 + +#import +#import +#import + +@class RCTBridge; +@class RCTModalHostViewController; + +@protocol RCTModalHostViewInteractor; + +@interface RCTModalHostView : UIView + +@property (nonatomic, copy) NSString *animationType; +@property (nonatomic, assign) UIModalPresentationStyle presentationStyle; +@property (nonatomic, assign, getter=isTransparent) BOOL transparent; + +@property (nonatomic, copy) RCTDirectEventBlock onShow; +@property (nonatomic, assign) BOOL visible; + +@property (nonatomic, copy) NSNumber *identifier; + +@property (nonatomic, weak) id delegate; + +@property (nonatomic, copy) NSArray *supportedOrientations; +@property (nonatomic, copy) RCTDirectEventBlock onOrientationChange; + +// Fabric only +@property (nonatomic, copy) RCTBubblingEventBlock onDismiss; + +- (instancetype)initWithBridge:(RCTBridge *)bridge NS_DESIGNATED_INITIALIZER; + +@end + +@protocol RCTModalHostViewInteractor + +- (void)presentModalHostView:(RCTModalHostView *)modalHostView + withViewController:(RCTModalHostViewController *)viewController + animated:(BOOL)animated; +- (void)dismissModalHostView:(RCTModalHostView *)modalHostView + withViewController:(RCTModalHostViewController *)viewController + animated:(BOOL)animated; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTModalHostViewController.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTModalHostViewController.h new file mode 100644 index 0000000..a3f66b6 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTModalHostViewController.h @@ -0,0 +1,16 @@ +/* + * 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 + +@interface RCTModalHostViewController : UIViewController + +@property (nonatomic, copy) void (^boundsDidChangeBlock)(CGRect newBounds); + +@property (nonatomic, assign) UIInterfaceOrientationMask supportedInterfaceOrientations; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTModalHostViewManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTModalHostViewManager.h new file mode 100644 index 0000000..e5b0815 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTModalHostViewManager.h @@ -0,0 +1,34 @@ +/* + * 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 +#import +#import + +@interface RCTConvert (RCTModalHostView) + ++ (UIModalPresentationStyle)UIModalPresentationStyle:(id)json; + +@end + +typedef void (^RCTModalViewInteractionBlock)( + UIViewController *reactViewController, + UIViewController *viewController, + BOOL animated, + dispatch_block_t completionBlock); + +@interface RCTModalHostViewManager : RCTViewManager + +/** + * `presentationBlock` and `dismissalBlock` allow you to control how a Modal interacts with your case, + * e.g. in case you have a native navigator that has its own way to display a modal. + * If these are not specified, it falls back to the UIViewController standard way of presenting. + */ +@property (nonatomic, strong) RCTModalViewInteractionBlock presentationBlock; +@property (nonatomic, strong) RCTModalViewInteractionBlock dismissalBlock; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTModalManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTModalManager.h new file mode 100644 index 0000000..4fbe6df --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTModalManager.h @@ -0,0 +1,17 @@ +/* + * 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 + +#import +#import + +@interface RCTModalManager : RCTEventEmitter + +- (void)modalDismissed:(NSNumber *)modalID; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTModuleData.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTModuleData.h new file mode 100644 index 0000000..71e1950 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTModuleData.h @@ -0,0 +1,117 @@ +/* + * 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 + +#import +#import "RCTDefines.h" + +@protocol RCTBridgeMethod; +@protocol RCTBridgeModule; +@class RCTBridge; +@class RCTModuleRegistry; +@class RCTViewRegistry; +@class RCTBundleManager; +@class RCTCallableJSModules; + +typedef id (^RCTBridgeModuleProvider)(void); + +@interface RCTModuleData : NSObject + +- (instancetype)initWithModuleClass:(Class)moduleClass + bridge:(RCTBridge *)bridge + moduleRegistry:(RCTModuleRegistry *)moduleRegistry + viewRegistry_DEPRECATED:(RCTViewRegistry *)viewRegistry_DEPRECATED + bundleManager:(RCTBundleManager *)bundleManager + callableJSModules:(RCTCallableJSModules *)callableJSModules; + +- (instancetype)initWithModuleClass:(Class)moduleClass + moduleProvider:(RCTBridgeModuleProvider)moduleProvider + bridge:(RCTBridge *)bridge + moduleRegistry:(RCTModuleRegistry *)moduleRegistry + viewRegistry_DEPRECATED:(RCTViewRegistry *)viewRegistry_DEPRECATED + bundleManager:(RCTBundleManager *)bundleManager + callableJSModules:(RCTCallableJSModules *)callableJSModules NS_DESIGNATED_INITIALIZER; + +- (instancetype)initWithModuleInstance:(id)instance + bridge:(RCTBridge *)bridge + moduleRegistry:(RCTModuleRegistry *)moduleRegistry + viewRegistry_DEPRECATED:(RCTViewRegistry *)viewRegistry_DEPRECATED + bundleManager:(RCTBundleManager *)bundleManager + callableJSModules:(RCTCallableJSModules *)callableJSModules NS_DESIGNATED_INITIALIZER; + +/** + * Calls `constantsToExport` on the module and stores the result. Note that + * this will init the module if it has not already been created. This method + * can be called on any thread, but may block the main thread briefly if the + * module implements `constantsToExport`. + */ +- (void)gatherConstants; + +@property (nonatomic, strong, readonly) Class moduleClass; +@property (nonatomic, copy, readonly) NSString *name; + +/** + * Returns the module methods. Note that this will gather the methods the first + * time it is called and then memoize the results. + */ +@property (nonatomic, copy, readonly) NSArray> *methods; + +/** + * Returns a map of the module methods. Note that this will gather the methods the first + * time it is called and then memoize the results. + */ +@property (nonatomic, copy, readonly) NSDictionary> *methodsByName; + +/** + * Returns the module's constants, if it exports any + */ +@property (nonatomic, copy, readonly) NSDictionary *exportedConstants; + +/** + * Returns YES if module instance has already been initialized; NO otherwise. + */ +@property (nonatomic, assign, readonly) BOOL hasInstance; + +/** + * Returns YES if module instance must be created on the main thread. + */ +@property (nonatomic, assign) BOOL requiresMainQueueSetup; + +/** + * Returns YES if module has constants to export. + */ +@property (nonatomic, assign, readonly) BOOL hasConstantsToExport; + +/** + * Returns the current module instance. Note that this will init the instance + * if it has not already been created. To check if the module instance exists + * without causing it to be created, use `hasInstance` instead. + */ +@property (nonatomic, strong, readwrite) id instance; + +/** + * Returns the module method dispatch queue. Note that this will init both the + * queue and the module itself if they have not already been created. + */ +@property (nonatomic, strong, readonly) dispatch_queue_t methodQueue; + +/** + * Whether the receiver has a valid `instance` which implements -batchDidComplete. + */ +@property (nonatomic, assign, readonly) BOOL implementsBatchDidComplete; + +/** + * Whether the receiver has a valid `instance` which implements + * -partialBatchDidFlush. + */ +@property (nonatomic, assign, readonly) BOOL implementsPartialBatchDidFlush; + +@end + +RCT_EXTERN void RCTSetIsMainQueueExecutionOfConstantsToExportDisabled(BOOL val); +RCT_EXTERN BOOL RCTIsMainQueueExecutionOfConstantsToExportDisabled(void); diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTModuleMethod.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTModuleMethod.h new file mode 100644 index 0000000..c93a060 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTModuleMethod.h @@ -0,0 +1,34 @@ +/* + * 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 + +#import +#import +#import + +@class RCTBridge; + +@interface RCTMethodArgument : NSObject + +@property (nonatomic, copy, readonly) NSString *type; +@property (nonatomic, readonly) RCTNullability nullability; +@property (nonatomic, readonly) BOOL unused; + +@end + +@interface RCTModuleMethod : NSObject + +@property (nonatomic, readonly) Class moduleClass; +@property (nonatomic, readonly) SEL selector; + +- (instancetype)initWithExportedMethod:(const RCTMethodInfo *)exportMethod + moduleClass:(Class)moduleClass NS_DESIGNATED_INITIALIZER; + +@end + +RCT_EXTERN NSString *RCTParseMethodSignature(const char *input, NSArray **arguments); diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTModuloAnimatedNode.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTModuloAnimatedNode.h new file mode 100644 index 0000000..fc7f69d --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTModuloAnimatedNode.h @@ -0,0 +1,12 @@ +/* + * 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 "RCTValueAnimatedNode.h" + +@interface RCTModuloAnimatedNode : RCTValueAnimatedNode + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTMultilineTextInputView.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTMultilineTextInputView.h new file mode 100644 index 0000000..0efd63a --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTMultilineTextInputView.h @@ -0,0 +1,16 @@ +/* + * 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 "RCTBaseTextInputView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTMultilineTextInputView : RCTBaseTextInputView + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTMultilineTextInputViewManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTMultilineTextInputViewManager.h new file mode 100644 index 0000000..3347fbb --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTMultilineTextInputViewManager.h @@ -0,0 +1,16 @@ +/* + * 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 "RCTBaseTextInputViewManager.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTMultilineTextInputViewManager : RCTBaseTextInputViewManager + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTMultipartDataTask.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTMultipartDataTask.h new file mode 100644 index 0000000..bcf0c57 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTMultipartDataTask.h @@ -0,0 +1,27 @@ +/* + * 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 + +#import + +typedef void (^RCTMultipartDataTaskCallback)( + NSInteger statusCode, + NSDictionary *headers, + NSData *content, + NSError *error, + BOOL done); + +@interface RCTMultipartDataTask : NSObject + +- (instancetype)initWithURL:(NSURL *)url + partHandler:(RCTMultipartDataTaskCallback)partHandler + progressHandler:(RCTMultipartProgressCallback)progressHandler; + +- (void)startTask; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTMultipartStreamReader.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTMultipartStreamReader.h new file mode 100644 index 0000000..5ef5b61 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTMultipartStreamReader.h @@ -0,0 +1,21 @@ +/* + * 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 + +typedef void (^RCTMultipartCallback)(NSDictionary *headers, NSData *content, BOOL done); +typedef void (^RCTMultipartProgressCallback)(NSDictionary *headers, NSNumber *loaded, NSNumber *total); + +// RCTMultipartStreamReader can be used to parse responses with Content-Type: multipart/mixed +// See https://www.w3.org/Protocols/rfc1341/7_2_Multipart.html +@interface RCTMultipartStreamReader : NSObject + +- (instancetype)initWithInputStream:(NSInputStream *)stream boundary:(NSString *)boundary; +- (BOOL)readAllPartsWithCompletionCallback:(RCTMultipartCallback)callback + progressCallback:(RCTMultipartProgressCallback)progressCallback; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTMultiplicationAnimatedNode.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTMultiplicationAnimatedNode.h new file mode 100644 index 0000000..bb8b3b2 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTMultiplicationAnimatedNode.h @@ -0,0 +1,12 @@ +/* + * 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 "RCTValueAnimatedNode.h" + +@interface RCTMultiplicationAnimatedNode : RCTValueAnimatedNode + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTNativeAnimatedModule.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTNativeAnimatedModule.h new file mode 100644 index 0000000..13b40fd --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTNativeAnimatedModule.h @@ -0,0 +1,23 @@ +/* + * 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 +#import +#import +#import +#import +#import +#import + +#import "RCTValueAnimatedNode.h" + +// TODO T69437152 @petetheheat - Delete this fork when Fabric ships to 100%. +// NOTE: This module is temporarily forked (see RCTNativeAnimatedTurboModule). +// When making any changes, be sure to apply them to the fork as well. +@interface RCTNativeAnimatedModule : RCTEventEmitter + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTNativeAnimatedNodesManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTNativeAnimatedNodesManager.h new file mode 100644 index 0000000..7832538 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTNativeAnimatedNodesManager.h @@ -0,0 +1,94 @@ +/* + * 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 +#import +#import +#import +#import + +@protocol RCTValueAnimatedNodeObserver; + +@interface RCTNativeAnimatedNodesManager : NSObject + +- (nonnull instancetype)initWithBridge:(RCTBridge *)bridge + surfacePresenter:(id)surfacePresenter; + +- (void)updateAnimations; + +- (void)stepAnimations:(nonnull CADisplayLink *)displaylink; + +- (BOOL)isNodeManagedByFabric:(nonnull NSNumber *)tag; + +- (void)getValue:(nonnull NSNumber *)nodeTag + saveCallback:(nullable RCTResponseSenderBlock)saveCallback; + +// graph + +- (void)createAnimatedNode:(nonnull NSNumber *)tag + config:(NSDictionary *__nonnull)config; + +- (void)connectAnimatedNodes:(nonnull NSNumber *)parentTag + childTag:(nonnull NSNumber *)childTag; + +- (void)disconnectAnimatedNodes:(nonnull NSNumber *)parentTag + childTag:(nonnull NSNumber *)childTag; + +- (void)connectAnimatedNodeToView:(nonnull NSNumber *)nodeTag + viewTag:(nonnull NSNumber *)viewTag + viewName:(nonnull NSString *)viewName; + +- (void)restoreDefaultValues:(nonnull NSNumber *)nodeTag; + +- (void)disconnectAnimatedNodeFromView:(nonnull NSNumber *)nodeTag + viewTag:(nonnull NSNumber *)viewTag; + +- (void)dropAnimatedNode:(nonnull NSNumber *)tag; + +// mutations + +- (void)setAnimatedNodeValue:(nonnull NSNumber *)nodeTag + value:(nonnull NSNumber *)value; + +- (void)setAnimatedNodeOffset:(nonnull NSNumber *)nodeTag + offset:(nonnull NSNumber *)offset; + +- (void)flattenAnimatedNodeOffset:(nonnull NSNumber *)nodeTag; + +- (void)extractAnimatedNodeOffset:(nonnull NSNumber *)nodeTag; + +// drivers + +- (void)startAnimatingNode:(nonnull NSNumber *)animationId + nodeTag:(nonnull NSNumber *)nodeTag + config:(NSDictionary *__nonnull)config + endCallback:(nullable RCTResponseSenderBlock)callBack; + +- (void)stopAnimation:(nonnull NSNumber *)animationId; + +- (void)stopAnimationLoop; + +// events + +- (void)addAnimatedEventToView:(nonnull NSNumber *)viewTag + eventName:(nonnull NSString *)eventName + eventMapping:(NSDictionary *__nonnull)eventMapping; + +- (void)removeAnimatedEventFromView:(nonnull NSNumber *)viewTag + eventName:(nonnull NSString *)eventName + animatedNodeTag:(nonnull NSNumber *)animatedNodeTag; + +- (void)handleAnimatedEvent:(nonnull id)event; + +// listeners + +- (void)startListeningToAnimatedNodeValue:(nonnull NSNumber *)tag + valueObserver:(nonnull id)valueObserver; + +- (void)stopListeningToAnimatedNodeValue:(nonnull NSNumber *)tag; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTNativeAnimatedTurboModule.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTNativeAnimatedTurboModule.h new file mode 100644 index 0000000..2da04a1 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTNativeAnimatedTurboModule.h @@ -0,0 +1,23 @@ +/* + * 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 +#import +#import +#import +#import +#import +#import + +#import "RCTValueAnimatedNode.h" + +// TODO T69437152 @petetheheat - Delete this fork when Fabric ships to 100%. +// NOTE: This module is temporarily forked (see RCTNativeAnimatedModule). +// When making any changes, be sure to apply them to the fork as well. +@interface RCTNativeAnimatedTurboModule: RCTEventEmitter + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTNetworkPlugins.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTNetworkPlugins.h new file mode 100644 index 0000000..b8ea7cd --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTNetworkPlugins.h @@ -0,0 +1,43 @@ +/** + * 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 an internal plugin build system + */ + +#ifdef RN_DISABLE_OSS_PLUGIN_HEADER + +// FB Internal: FBRCTNetworkPlugins.h is autogenerated by the build system. +#import + +#else + +// OSS-compatibility layer + +#import + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wreturn-type-c-linkage" + +#ifdef __cplusplus +extern "C" { +#endif + +// RCTTurboModuleManagerDelegate should call this to resolve module classes. +Class RCTNetworkClassProvider(const char *name); + +// Lookup functions +Class RCTNetworkingCls(void) __attribute__((used)); +Class RCTDataRequestHandlerCls(void) __attribute__((used)); +Class RCTFileRequestHandlerCls(void) __attribute__((used)); +Class RCTHTTPRequestHandlerCls(void) __attribute__((used)); + +#ifdef __cplusplus +} +#endif + +#pragma GCC diagnostic pop + +#endif // RN_DISABLE_OSS_PLUGIN_HEADER diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTNetworkTask.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTNetworkTask.h new file mode 100644 index 0000000..716a090 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTNetworkTask.h @@ -0,0 +1,47 @@ +/* + * 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 + +#import +#import + +typedef void (^RCTURLRequestCompletionBlock)(NSURLResponse *response, NSData *data, NSError *error); +typedef void (^RCTURLRequestCancellationBlock)(void); +typedef void (^RCTURLRequestIncrementalDataBlock)(NSData *data, int64_t progress, int64_t total); +typedef void (^RCTURLRequestProgressBlock)(int64_t progress, int64_t total); +typedef void (^RCTURLRequestResponseBlock)(NSURLResponse *response); + +typedef NS_ENUM(NSInteger, RCTNetworkTaskStatus) { + RCTNetworkTaskPending = 0, + RCTNetworkTaskInProgress, + RCTNetworkTaskFinished, +}; + +@interface RCTNetworkTask : NSObject + +@property (nonatomic, readonly) NSURLRequest *request; +@property (nonatomic, readonly) NSNumber *requestID; +@property (nonatomic, readonly, weak) id requestToken; +@property (nonatomic, readonly) NSURLResponse *response; + +@property (nonatomic, copy) RCTURLRequestCompletionBlock completionBlock; +@property (nonatomic, copy) RCTURLRequestProgressBlock downloadProgressBlock; +@property (nonatomic, copy) RCTURLRequestIncrementalDataBlock incrementalDataBlock; +@property (nonatomic, copy) RCTURLRequestResponseBlock responseBlock; +@property (nonatomic, copy) RCTURLRequestProgressBlock uploadProgressBlock; + +@property (nonatomic, readonly) RCTNetworkTaskStatus status; + +- (instancetype)initWithRequest:(NSURLRequest *)request + handler:(id)handler + callbackQueue:(dispatch_queue_t)callbackQueue NS_DESIGNATED_INITIALIZER; + +- (void)start; +- (void)cancel; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTNetworking.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTNetworking.h new file mode 100644 index 0000000..2068f32 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTNetworking.h @@ -0,0 +1,73 @@ +/* + * 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 +#import +#import + +@protocol RCTNetworkingRequestHandler + +// @lint-ignore FBOBJCUNTYPEDCOLLECTION1 +- (BOOL)canHandleNetworkingRequest:(NSDictionary *)data; +// @lint-ignore FBOBJCUNTYPEDCOLLECTION1 +- (NSDictionary *)handleNetworkingRequest:(NSDictionary *)data; + +@end + +@protocol RCTNetworkingResponseHandler + +- (BOOL)canHandleNetworkingResponse:(NSString *)responseType; +- (id)handleNetworkingResponse:(NSURLResponse *)response data:(NSData *)data; + +@end + +@interface RCTNetworking : RCTEventEmitter + +/** + * Allows RCTNetworking instances to be initialized with handlers. + * The handlers will be requested via the bridge's moduleForName method when required. + */ +- (instancetype)initWithHandlersProvider:(NSArray> * (^)(RCTModuleRegistry *))getHandlers; + +/** + * Does a handler exist for the specified request? + */ +- (BOOL)canHandleRequest:(NSURLRequest *)request; + +/** + * Return an RCTNetworkTask for the specified request. This is useful for + * invoking the React Native networking stack from within native code. + */ +- (RCTNetworkTask *)networkTaskWithRequest:(NSURLRequest *)request + completionBlock:(RCTURLRequestCompletionBlock)completionBlock; + +- (void)addRequestHandler:(id)handler; + +- (void)addResponseHandler:(id)handler; + +- (void)removeRequestHandler:(id)handler; + +- (void)removeResponseHandler:(id)handler; + +@end + +@interface RCTBridge (RCTNetworking) + +@property (nonatomic, readonly) RCTNetworking *networking; + +@end + +// HACK: When uploading images/video from PHAssetLibrary, we change the URL scheme to be +// ph-upload://. This is to ensure that we upload a full video when given a ph-upload:// URL, +// instead of just the thumbnail. Consider the following problem: +// The user has a video in their camera roll with URL ph://1B3E2DDB-0AD3-4E33-A7A1-9F4AA9A762AA/L0/001 +// 1. We want to display that video in an and show the thumbnail +// 2. We later want to upload that video. +// At this point, if we use the same URL for both uses, there is no way to distinguish the intent +// and we will either upload the thumbnail (bad!) or try to show the video in an (bad!). +// Our solution is to change the URL scheme in the uploader. +extern NSString *const RCTNetworkingPHUploadHackScheme; diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTNullability.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTNullability.h new file mode 100644 index 0000000..f08d276 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTNullability.h @@ -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 + +typedef NS_ENUM(NSUInteger, RCTNullability) { + RCTNullabilityUnspecified, + RCTNullable, + RCTNonnullable, +}; diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTPackagerClient.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTPackagerClient.h new file mode 100644 index 0000000..3a7a3fd --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTPackagerClient.h @@ -0,0 +1,45 @@ +/* + * 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 + +#if RCT_DEV // Only supported in dev mode + +@class RCTPackagerClientResponder; +@class RCTReconnectingWebSocket; + +#if defined(__cplusplus) +extern "C" { +#endif + +extern const int RCT_PACKAGER_CLIENT_PROTOCOL_VERSION; + +#if defined(__cplusplus) +} +#endif + +@protocol RCTPackagerClientMethod + +- (void)handleRequest:(NSDictionary *)params withResponder:(RCTPackagerClientResponder *)responder; +- (void)handleNotification:(NSDictionary *)params; + +@optional + +/** By default object will receive its methods on the main queue, unless this method is overridden. */ +- (dispatch_queue_t)methodQueue; + +@end + +@interface RCTPackagerClientResponder : NSObject + +- (instancetype)initWithId:(id)msgId socket:(RCTReconnectingWebSocket *)socket; +- (void)respondWithResult:(id)result; +- (void)respondWithError:(id)error; + +@end + +#endif diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTPackagerConnection.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTPackagerConnection.h new file mode 100644 index 0000000..795a3fc --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTPackagerConnection.h @@ -0,0 +1,78 @@ +/* + * 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 + +#import + +#if RCT_DEV + +NS_ASSUME_NONNULL_BEGIN + +@protocol RCTPackagerClientMethod; +@class RCTPackagerClientResponder; + +typedef uint32_t RCTHandlerToken; +typedef void (^RCTNotificationHandler)(NSDictionary *); +typedef void (^RCTRequestHandler)(NSDictionary *, RCTPackagerClientResponder *); +typedef void (^RCTConnectedHandler)(void); + +/** Encapsulates singleton connection to React Native packager. */ +@interface RCTPackagerConnection : NSObject + ++ (instancetype)sharedPackagerConnection; + +/** + * Registers a handler for a notification broadcast from the packager. An + * example is "reload" - an instruction to reload from the packager. + * If multiple notification handlers are registered for the same method, they + * will all be invoked sequentially. + */ +- (RCTHandlerToken)addNotificationHandler:(RCTNotificationHandler)handler + queue:(dispatch_queue_t)queue + forMethod:(NSString *)method; + +/** + * Registers a handler for a request from the packager. An example is + * pokeSamplingProfiler; it asks for profile data from the client. + * Only one handler can be registered for a given method; calling this + * displaces any previous request handler registered for that method. + */ +- (RCTHandlerToken)addRequestHandler:(RCTRequestHandler)handler + queue:(dispatch_queue_t)queue + forMethod:(NSString *)method; + +/** + * Registers a handler that runs at most once, when the connection to the + * packager has been established. The handler will be dispatched immediately + * if the connection is already established. + */ +- (RCTHandlerToken)addConnectedHandler:(RCTConnectedHandler)handler queue:(dispatch_queue_t)queue; + +/** Removes a handler. Silently does nothing if the token is not valid. */ +- (void)removeHandler:(RCTHandlerToken)token; + +/** Disconnects and removes all handlers. */ +- (void)stop; + +/** Reconnect with given packager server. */ +- (void)reconnect:(NSString *)packagerServerHostPort; + +/** + * Historically no distinction was made between notification and request + * handlers. If you use this method, it will be registered as *both* a + * notification handler *and* a request handler. You should migrate to the + * new block-based API instead. + */ +- (void)addHandler:(id)handler + forMethod:(NSString *)method __deprecated_msg("Use addRequestHandler or addNotificationHandler instead"); + +@end + +NS_ASSUME_NONNULL_END + +#endif diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTParserUtils.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTParserUtils.h new file mode 100644 index 0000000..15701f4 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTParserUtils.h @@ -0,0 +1,30 @@ +/* + * 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 + +#import + +@interface RCTParserUtils : NSObject + +/** + * Generic utility functions for parsing Objective-C source code. + */ +RCT_EXTERN BOOL RCTReadChar(const char **input, char c); +RCT_EXTERN BOOL RCTReadString(const char **input, const char *string); +RCT_EXTERN void RCTSkipWhitespace(const char **input); +RCT_EXTERN BOOL RCTParseSelectorIdentifier(const char **input, NSString **string); +RCT_EXTERN BOOL RCTParseArgumentIdentifier(const char **input, NSString **string); + +/** + * Parse an Objective-C type into a form that can be used by RCTConvert. + * This doesn't really belong here, but it's used by both RCTConvert and + * RCTModuleMethod, which makes it difficult to find a better home for it. + */ +RCT_EXTERN NSString *RCTParseType(const char **input); + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTPerformanceLogger.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTPerformanceLogger.h new file mode 100644 index 0000000..b0e4a4e --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTPerformanceLogger.h @@ -0,0 +1,104 @@ +/* + * 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 + +// Keep this in sync with _labelsForTags +typedef NS_ENUM(NSUInteger, RCTPLTag) { + RCTPLScriptDownload = 0, + RCTPLScriptExecution, + RCTPLRAMBundleLoad, + RCTPLRAMStartupCodeSize, + RCTPLRAMStartupNativeRequires, + RCTPLRAMStartupNativeRequiresCount, + RCTPLRAMNativeRequires, + RCTPLRAMNativeRequiresCount, + RCTPLNativeModuleInit, + RCTPLNativeModuleMainThread, + RCTPLNativeModulePrepareConfig, + RCTPLNativeModuleMainThreadUsesCount, + RCTPLNativeModuleSetup, + RCTPLTurboModuleSetup, + RCTPLJSCWrapperOpenLibrary, + RCTPLBridgeStartup, + RCTPLTTI, + RCTPLBundleSize, + RCTPLReactInstanceInit, + RCTPLSize // This is used to count the size +}; + +@interface RCTPerformanceLogger : NSObject + +/** + * Starts measuring a metric with the given tag. + * Overrides previous value if the measurement has been already started. + * If RCTProfile is enabled it also begins appropriate async event. + * All work is scheduled on the background queue so this doesn't block current thread. + */ +- (void)markStartForTag:(RCTPLTag)tag; + +/** + * Stops measuring a metric with given tag. + * Checks if RCTPerformanceLoggerStart() has been called before + * and doesn't do anything and log a message if it hasn't. + * If RCTProfile is enabled it also ends appropriate async event. + * All work is scheduled on the background queue so this doesn't block current thread. + */ +- (void)markStopForTag:(RCTPLTag)tag; + +/** + * Sets given value for a metric with given tag. + * All work is scheduled on the background queue so this doesn't block current thread. + */ +- (void)setValue:(int64_t)value forTag:(RCTPLTag)tag; + +/** + * Adds given value to the current value for a metric with given tag. + * All work is scheduled on the background queue so this doesn't block current thread. + */ +- (void)addValue:(int64_t)value forTag:(RCTPLTag)tag; + +/** + * Starts an additional measurement for a metric with given tag. + * It doesn't override previous measurement, instead it'll append a new value + * to the old one. + * All work is scheduled on the background queue so this doesn't block current thread. + */ +- (void)appendStartForTag:(RCTPLTag)tag; + +/** + * Stops measurement and appends the result to the metric with given tag. + * Checks if RCTPerformanceLoggerAppendStart() has been called before + * and doesn't do anything and log a message if it hasn't. + * All work is scheduled on the background queue so this doesn't block current thread. + */ +- (void)appendStopForTag:(RCTPLTag)tag; + +/** + * Returns an array with values for all tags. + * Use RCTPLTag to go over the array, there's a pair of values + * for each tag: start and stop (with indexes 2 * tag and 2 * tag + 1). + */ +- (NSArray *)valuesForTags; + +/** + * Returns a duration in ms (stop_time - start_time) for given RCTPLTag. + */ +- (int64_t)durationForTag:(RCTPLTag)tag; + +/** + * Returns a value for given RCTPLTag. + */ +- (int64_t)valueForTag:(RCTPLTag)tag; + +/** + * Returns an array with values for all tags. + * Use RCTPLTag to go over the array. + */ +- (NSArray *)labelsForTags; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTPlatform.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTPlatform.h new file mode 100644 index 0000000..64ce567 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTPlatform.h @@ -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 + +#import + +@interface RCTPlatform : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTPointerEvents.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTPointerEvents.h new file mode 100644 index 0000000..001c85f --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTPointerEvents.h @@ -0,0 +1,15 @@ +/* + * 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 + +typedef NS_ENUM(NSInteger, RCTPointerEvents) { + RCTPointerEventsUnspecified = 0, // Default + RCTPointerEventsNone, + RCTPointerEventsBoxNone, + RCTPointerEventsBoxOnly, +}; diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTProfile.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTProfile.h new file mode 100644 index 0000000..7c6dec1 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTProfile.h @@ -0,0 +1,226 @@ +/* + * 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 + +#import +#import + +/** + * RCTProfile + * + * This file provides a set of functions and macros for performance profiling + * + * NOTE: This API is a work in progress, please consider carefully before + * using it. + */ + +RCT_EXTERN NSString *const RCTProfileDidStartProfiling; +RCT_EXTERN NSString *const RCTProfileDidEndProfiling; + +RCT_EXTERN const uint64_t RCTProfileTagAlways; + +#if RCT_PROFILE + +@class RCTBridge; + +#define RCTProfileBeginFlowEvent() \ + _Pragma("clang diagnostic push") _Pragma("clang diagnostic ignored \"-Wshadow\"") NSUInteger __rct_profile_flow_id = \ + _RCTProfileBeginFlowEvent(); \ + _Pragma("clang diagnostic pop") + +#define RCTProfileEndFlowEvent() _RCTProfileEndFlowEvent(__rct_profile_flow_id) + +RCT_EXTERN dispatch_queue_t RCTProfileGetQueue(void); + +RCT_EXTERN NSUInteger _RCTProfileBeginFlowEvent(void); +RCT_EXTERN void _RCTProfileEndFlowEvent(NSUInteger); + +/** + * Returns YES if the profiling information is currently being collected + */ +RCT_EXTERN BOOL RCTProfileIsProfiling(void); + +/** + * Start collecting profiling information + */ +RCT_EXTERN void RCTProfileInit(RCTBridge *); + +/** + * Stop profiling and return a JSON string of the collected data - The data + * returned is compliant with google's trace event format - the format used + * as input to trace-viewer + */ +RCT_EXTERN void RCTProfileEnd(RCTBridge *, void (^)(NSString *)); + +/** + * Collects the initial event information for the event and returns a reference ID + */ +RCT_EXTERN void _RCTProfileBeginEvent( + NSThread *calleeThread, + NSTimeInterval time, + uint64_t tag, + NSString *name, + NSDictionary *args); +#define RCT_PROFILE_BEGIN_EVENT(tag, name, args) \ + do { \ + if (RCTProfileIsProfiling()) { \ + NSThread *__calleeThread = [NSThread currentThread]; \ + NSTimeInterval __time = CACurrentMediaTime(); \ + _RCTProfileBeginEvent(__calleeThread, __time, tag, name, args); \ + } \ + } while (0) + +/** + * The ID returned by BeginEvent should then be passed into EndEvent, with the + * rest of the event information. Just at this point the event will actually be + * registered + */ +RCT_EXTERN void _RCTProfileEndEvent( + NSThread *calleeThread, + NSString *threadName, + NSTimeInterval time, + uint64_t tag, + NSString *category); + +#define RCT_PROFILE_END_EVENT(tag, category) \ + do { \ + if (RCTProfileIsProfiling()) { \ + NSThread *__calleeThread = [NSThread currentThread]; \ + NSString *__threadName = RCTCurrentThreadName(); \ + NSTimeInterval __time = CACurrentMediaTime(); \ + _RCTProfileEndEvent(__calleeThread, __threadName, __time, tag, category); \ + } \ + } while (0) + +/** + * Collects the initial event information for the event and returns a reference ID + */ +RCT_EXTERN NSUInteger +RCTProfileBeginAsyncEvent(uint64_t tag, NSString *name, NSDictionary *args); + +/** + * The ID returned by BeginEvent should then be passed into EndEvent, with the + * rest of the event information. Just at this point the event will actually be + * registered + */ +RCT_EXTERN void +RCTProfileEndAsyncEvent(uint64_t tag, NSString *category, NSUInteger cookie, NSString *name, NSString *threadName); + +/** + * An event that doesn't have a duration (i.e. Notification, VSync, etc) + */ +RCT_EXTERN void RCTProfileImmediateEvent(uint64_t tag, NSString *name, NSTimeInterval time, char scope); + +/** + * Helper to profile the duration of the execution of a block. This method uses + * self and _cmd to name this event for simplicity sake. + * + * NOTE: The block can't expect any argument + * + * DEPRECATED: this approach breaks debugging and stepping through instrumented block functions + */ +#define RCTProfileBlock(block, tag, category, arguments) \ + ^{ \ + RCT_PROFILE_BEGIN_EVENT(tag, @(__PRETTY_FUNCTION__), nil); \ + block(); \ + RCT_PROFILE_END_EVENT(tag, category, arguments); \ + } + +/** + * Hook into a bridge instance to log all bridge module's method calls + */ +RCT_EXTERN void RCTProfileHookModules(RCTBridge *); + +/** + * Unhook from a given bridge instance's modules + */ +RCT_EXTERN void RCTProfileUnhookModules(RCTBridge *); + +/** + * Hook into all of a module's methods + */ +RCT_EXTERN void RCTProfileHookInstance(id instance); + +/** + * Send systrace or cpu profiling information to the packager + * to present to the user + */ +RCT_EXTERN void RCTProfileSendResult(RCTBridge *bridge, NSString *route, NSData *profileData); + +/** + * Systrace gluecode + * + * allow to use systrace to back RCTProfile + */ + +typedef struct { + const char *key; + unsigned long key_len; + const char *value; + unsigned long value_len; +} systrace_arg_t; + +typedef struct { + char *(*start)(void); + void (*stop)(void); + + void (*begin_section)(uint64_t tag, const char *name, size_t numArgs, systrace_arg_t *args); + void (*end_section)(uint64_t tag, size_t numArgs, systrace_arg_t *args); + + void (*begin_async_section)(uint64_t tag, const char *name, int cookie, size_t numArgs, systrace_arg_t *args); + void (*end_async_section)(uint64_t tag, const char *name, int cookie, size_t numArgs, systrace_arg_t *args); + + void (*instant_section)(uint64_t tag, const char *name, char scope); + + void (*begin_async_flow)(uint64_t tag, const char *name, int cookie); + void (*end_async_flow)(uint64_t tag, const char *name, int cookie); +} RCTProfileCallbacks; + +RCT_EXTERN void RCTProfileRegisterCallbacks(RCTProfileCallbacks *); + +/** + * Systrace control window + */ +RCT_EXTERN void RCTProfileShowControls(void); +RCT_EXTERN void RCTProfileHideControls(void); + +#else + +#define RCTProfileBeginFlowEvent() +#define _RCTProfileBeginFlowEvent() @0 + +#define RCTProfileEndFlowEvent() +#define _RCTProfileEndFlowEvent(...) + +#define RCTProfileIsProfiling(...) NO +#define RCTProfileInit(...) +#define RCTProfileEnd(...) @"" + +#define _RCTProfileBeginEvent(...) +#define _RCTProfileEndEvent(...) + +#define RCT_PROFILE_BEGIN_EVENT(...) +#define RCT_PROFILE_END_EVENT(...) + +#define RCTProfileBeginAsyncEvent(...) 0 +#define RCTProfileEndAsyncEvent(...) + +#define RCTProfileImmediateEvent(...) + +#define RCTProfileBlock(block, ...) block + +#define RCTProfileHookModules(...) +#define RCTProfileHookInstance(...) +#define RCTProfileUnhookModules(...) + +#define RCTProfileSendResult(...) + +#define RCTProfileShowControls(...) +#define RCTProfileHideControls(...) + +#endif diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTProgressViewManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTProgressViewManager.h new file mode 100644 index 0000000..32b0988 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTProgressViewManager.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTProgressViewManager : RCTViewManager + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTPropsAnimatedNode.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTPropsAnimatedNode.h new file mode 100644 index 0000000..0b5f532 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTPropsAnimatedNode.h @@ -0,0 +1,26 @@ +/* + * 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 "RCTAnimatedNode.h" + +#import + +@class RCTBridge; +@class RCTViewPropertyMapper; + +@interface RCTPropsAnimatedNode : RCTAnimatedNode + +- (void)connectToView:(NSNumber *)viewTag + viewName:(NSString *)viewName + bridge:(RCTBridge *)bridge + surfacePresenter:(id)surfacePresenter; + +- (void)disconnectFromView:(NSNumber *)viewTag; + +- (void)restoreDefaultValues; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRawTextShadowView.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRawTextShadowView.h new file mode 100644 index 0000000..1b63014 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRawTextShadowView.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTRawTextShadowView : RCTShadowView + +@property (nonatomic, copy, nullable) NSString *text; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRawTextViewManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRawTextViewManager.h new file mode 100644 index 0000000..ef9a076 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRawTextViewManager.h @@ -0,0 +1,16 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTRawTextViewManager : RCTViewManager + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTReconnectingWebSocket.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTReconnectingWebSocket.h new file mode 100644 index 0000000..25aa3ef --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTReconnectingWebSocket.h @@ -0,0 +1,37 @@ +/* + * 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 + +#if RCT_DEV // Only supported in dev mode + +@class RCTReconnectingWebSocket; + +@protocol RCTReconnectingWebSocketDelegate +- (void)reconnectingWebSocketDidOpen:(RCTReconnectingWebSocket *)webSocket; +- (void)reconnectingWebSocket:(RCTReconnectingWebSocket *)webSocket didReceiveMessage:(id)message; +/** Sent when the socket has closed due to error or clean shutdown. An automatic reconnect will start shortly. */ +- (void)reconnectingWebSocketDidClose:(RCTReconnectingWebSocket *)webSocket; +@end + +@interface RCTReconnectingWebSocket : NSObject + +/** Delegate will be messaged on the given queue (required). */ +- (instancetype)initWithURL:(NSURL *)url queue:(dispatch_queue_t)queue; + +@property (nonatomic, weak) id delegate; +- (void)send:(id)data; +- (void)start; +- (void)stop; + +- (instancetype)initWithURL:(NSURL *)url __deprecated_msg("Use initWithURL:queue: instead"); +/** @brief Must be set before -start to have effect */ +@property (nonatomic, strong) dispatch_queue_t delegateDispatchQueue __deprecated_msg("Use initWithURL:queue: instead"); + +@end + +#endif diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRedBox.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRedBox.h new file mode 100644 index 0000000..d468f44 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRedBox.h @@ -0,0 +1,59 @@ +/* + * 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 + +#import +#import +#import + +@class RCTJSStackFrame; + +typedef void (^RCTRedBoxButtonPressHandler)(void); + +@interface RCTRedBox : NSObject + +- (void)registerErrorCustomizer:(id)errorCustomizer; +- (void)showError:(NSError *)error; +- (void)showErrorMessage:(NSString *)message; +- (void)showErrorMessage:(NSString *)message withDetails:(NSString *)details; +- (void)showErrorMessage:(NSString *)message withRawStack:(NSString *)rawStack; +- (void)showErrorMessage:(NSString *)message withRawStack:(NSString *)rawStack errorCookie:(int)errorCookie; +- (void)showErrorMessage:(NSString *)message withStack:(NSArray *)stack; +- (void)updateErrorMessage:(NSString *)message withStack:(NSArray *)stack; +- (void)showErrorMessage:(NSString *)message withStack:(NSArray *)stack errorCookie:(int)errorCookie; +- (void)updateErrorMessage:(NSString *)message withStack:(NSArray *)stack errorCookie:(int)errorCookie; +- (void)showErrorMessage:(NSString *)message withParsedStack:(NSArray *)stack; +- (void)updateErrorMessage:(NSString *)message withParsedStack:(NSArray *)stack; +- (void)showErrorMessage:(NSString *)message + withParsedStack:(NSArray *)stack + errorCookie:(int)errorCookie; +- (void)updateErrorMessage:(NSString *)message + withParsedStack:(NSArray *)stack + errorCookie:(int)errorCookie; + +- (void)dismiss; + +- (void)addCustomButton:(NSString *)title onPressHandler:(RCTRedBoxButtonPressHandler)handler; + +/** Overrides bridge.bundleURL. Modify on main thread only. You shouldn't need to use this. */ +@property (nonatomic, strong) NSURL *overrideBundleURL; + +/** Overrides the default behavior of calling [bridge reload] on reload. You shouldn't need to use this. */ +@property (nonatomic, strong) dispatch_block_t overrideReloadAction; + +@end + +/** + * This category makes the red box instance available via the RCTBridge, which + * is useful for any class that needs to access the red box or error log. + */ +@interface RCTBridge (RCTRedBox) + +@property (nonatomic, readonly) RCTRedBox *redBox; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRedBoxExtraDataViewController.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRedBoxExtraDataViewController.h new file mode 100644 index 0000000..8d2b4c2 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRedBoxExtraDataViewController.h @@ -0,0 +1,20 @@ +/* + * 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 + +@protocol RCTRedBoxExtraDataActionDelegate +- (void)reload; +@end + +@interface RCTRedBoxExtraDataViewController : UIViewController + +@property (nonatomic, weak) id actionDelegate; + +- (void)addExtraData:(NSDictionary *)data forIdentifier:(NSString *)identifier; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRedBoxSetEnabled.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRedBoxSetEnabled.h new file mode 100644 index 0000000..fd53eb7 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRedBoxSetEnabled.h @@ -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 + +// In debug builds, the red box is enabled by default but it is further +// customizable using this method. However, this method only has an effect in +// builds where RCTRedBox is actually compiled in. +RCT_EXTERN void RCTRedBoxSetEnabled(BOOL enabled); +RCT_EXTERN BOOL RCTRedBoxGetEnabled(void); diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRefreshControl.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRefreshControl.h new file mode 100644 index 0000000..c17b226 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRefreshControl.h @@ -0,0 +1,19 @@ +/* + * 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 + +#import +#import + +@interface RCTRefreshControl : UIRefreshControl + +@property (nonatomic, copy) NSString *title; +@property (nonatomic, copy) RCTDirectEventBlock onRefresh; +@property (nonatomic, weak) UIScrollView *scrollView; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRefreshControlManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRefreshControlManager.h new file mode 100644 index 0000000..107a9db --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRefreshControlManager.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTRefreshControlManager : RCTViewManager + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRefreshableProtocol.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRefreshableProtocol.h new file mode 100644 index 0000000..9271e2d --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRefreshableProtocol.h @@ -0,0 +1,20 @@ +/* + * 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 +#import + +/** + * Protocol used to dispatch commands in `RCTRefreshControlManager.h`. + * This is in order to support commands for both Paper and Fabric components + * during migration. + */ +@protocol RCTRefreshableProtocol + +- (void)setRefreshing:(BOOL)refreshing; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTReloadCommand.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTReloadCommand.h new file mode 100644 index 0000000..4846275 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTReloadCommand.h @@ -0,0 +1,38 @@ +/* + * 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 + +#import + +/** + * A protocol which should be conformed to in order to be notified of RN reload events. These events can be + * created by CMD+R or dev menu during development, or anywhere the trigger is exposed to JS. + * The listener must also register itself using the method below. + */ +@protocol RCTReloadListener +- (void)didReceiveReloadCommand; +@end + +/** + * Registers a weakly-held observer of RN reload events. + */ +RCT_EXTERN void RCTRegisterReloadCommandListener(id listener); + +/** + * Triggers a reload for all current listeners. Replaces [_bridge reload]. + */ +RCT_EXTERN void RCTTriggerReloadCommandListeners(NSString *reason); + +/** + * This notification fires anytime RCTTriggerReloadCommandListeners() is called. + */ +RCT_EXTERN NSString *const RCTTriggerReloadCommandNotification; +RCT_EXTERN NSString *const RCTTriggerReloadCommandReasonKey; +RCT_EXTERN NSString *const RCTTriggerReloadCommandBundleURLKey; + +RCT_EXTERN void RCTReloadCommandSetBundleURL(NSURL *URL); diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTResizeMode.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTResizeMode.h new file mode 100644 index 0000000..468a58a --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTResizeMode.h @@ -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 + +typedef NS_ENUM(NSInteger, RCTResizeMode) { + RCTResizeModeCover = UIViewContentModeScaleAspectFill, + RCTResizeModeContain = UIViewContentModeScaleAspectFit, + RCTResizeModeStretch = UIViewContentModeScaleToFill, + RCTResizeModeCenter = UIViewContentModeCenter, + RCTResizeModeRepeat = -1, // Use negative values to avoid conflicts with iOS enum values. +}; + +@interface RCTConvert(RCTResizeMode) + ++ (RCTResizeMode)RCTResizeMode:(id)json; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRootContentView.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRootContentView.h new file mode 100644 index 0000000..dfc6d03 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRootContentView.h @@ -0,0 +1,32 @@ +/* + * 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 + +#import +#import +#import + +@class RCTBridge; +@class RCTTouchHandler; + +@interface RCTRootContentView : RCTView + +@property (nonatomic, readonly, weak) RCTBridge *bridge; +@property (nonatomic, readonly, assign) BOOL contentHasAppeared; +@property (nonatomic, readonly, strong) RCTTouchHandler *touchHandler; +@property (nonatomic, readonly, assign) CGSize availableSize; + +@property (nonatomic, assign) BOOL passThroughTouches; +@property (nonatomic, assign) RCTRootViewSizeFlexibility sizeFlexibility; + +- (instancetype)initWithFrame:(CGRect)frame + bridge:(RCTBridge *)bridge + reactTag:(NSNumber *)reactTag + sizeFlexiblity:(RCTRootViewSizeFlexibility)sizeFlexibility NS_DESIGNATED_INITIALIZER; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRootShadowView.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRootShadowView.h new file mode 100644 index 0000000..74af7e8 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRootShadowView.h @@ -0,0 +1,34 @@ +/* + * 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 +#import + +@interface RCTRootShadowView : RCTShadowView + +/** + * Minimum size to layout all views. + * Defaults to CGSizeZero + */ +@property (nonatomic, assign) CGSize minimumSize; + +/** + * Available size to layout all views. + * Defaults to {INFINITY, INFINITY} + */ +@property (nonatomic, assign) CGSize availableSize; + +/** + * Layout direction (LTR or RTL) inherited from native environment and + * is using as a base direction value in layout engine. + * Defaults to value inferred from current locale. + */ +@property (nonatomic, assign) YGDirection baseDirection; + +- (void)layoutWithAffectedShadowViews:(NSHashTable *)affectedShadowViews; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRootView.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRootView.h new file mode 100644 index 0000000..dd56345 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRootView.h @@ -0,0 +1,189 @@ +/* + * 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 + +#import +#import +#import + +@protocol RCTRootViewDelegate; + +/** + * This enum is used to define size flexibility type of the root view. + * If a dimension is flexible, the view will recalculate that dimension + * so the content fits. Recalculations are performed when the root's frame, + * size flexibility mode or content size changes. After a recalculation, + * rootViewDidChangeIntrinsicSize method of the RCTRootViewDelegate will be called. + */ +typedef NS_ENUM(NSInteger, RCTRootViewSizeFlexibility) { + RCTRootViewSizeFlexibilityNone = 0, + RCTRootViewSizeFlexibilityWidth = 1 << 0, + RCTRootViewSizeFlexibilityHeight = 1 << 1, + RCTRootViewSizeFlexibilityWidthAndHeight = RCTRootViewSizeFlexibilityWidth | RCTRootViewSizeFlexibilityHeight, +}; + +/** + * This notification is sent when the first subviews are added to the root view + * after the application has loaded. This is used to hide the `loadingView`, and + * is a good indicator that the application is ready to use. + */ +#if defined(__cplusplus) +extern "C" +#else +extern +#endif + + NS_ASSUME_NONNULL_BEGIN + + NSString *const RCTContentDidAppearNotification; + +/** + * Native view used to host React-managed views within the app. Can be used just + * like any ordinary UIView. You can have multiple RCTRootViews on screen at + * once, all controlled by the same JavaScript application. + */ +@interface RCTRootView : UIView + +/** + * - Designated initializer - + */ +- (instancetype)initWithFrame:(CGRect)frame + bridge:(RCTBridge *)bridge + moduleName:(NSString *)moduleName + initialProperties:(nullable NSDictionary *)initialProperties NS_DESIGNATED_INITIALIZER; + +/** + * - Convenience initializer - + * The frame will default to CGRectZero. + */ +- (instancetype)initWithBridge:(RCTBridge *)bridge + moduleName:(NSString *)moduleName + initialProperties:(nullable NSDictionary *)initialProperties; + +/** + * - Convenience initializer - + * A bridge will be created internally. + * This initializer is intended to be used when the app has a single RCTRootView, + * otherwise create an `RCTBridge` and pass it in via `initWithBridge:moduleName:` + * to all the instances. + */ +- (instancetype)initWithBundleURL:(NSURL *)bundleURL + moduleName:(NSString *)moduleName + initialProperties:(nullable NSDictionary *)initialProperties + launchOptions:(nullable NSDictionary *)launchOptions; + +/** + * This API allows RCTRootView users to know if the root view is backed by the bridge. + */ +@property (nonatomic, readonly) BOOL hasBridge; + +/** + * This API allows users of RCTRootView to access other NativeModules, without + * directly accessing the bridge. + */ +@property (nonatomic, strong, readonly) RCTModuleRegistry *moduleRegistry; + +@property (nonatomic, strong, readonly) id eventDispatcher; + +/** + * The name of the JavaScript module to execute within the + * specified scriptURL (required). Setting this will not have + * any immediate effect, but it must be done prior to loading + * the script. + */ +@property (nonatomic, copy, readonly) NSString *moduleName; + +/** + * The bridge used by the root view. Bridges can be shared between multiple + * root views, so you can use this property to initialize another RCTRootView. + */ +@property (nonatomic, strong, readonly) RCTBridge *bridge; + +/** + * The properties to apply to the view. Use this property to update + * application properties and rerender the view. Initialized with + * initialProperties argument of the initializer. + * + * Set this property only on the main thread. + */ +@property (nonatomic, copy, readwrite, nullable) NSDictionary *appProperties; + +/** + * The size flexibility mode of the root view. + */ +@property (nonatomic, assign) RCTRootViewSizeFlexibility sizeFlexibility; + +/* + * The minimum size of the root view, defaults to CGSizeZero. + */ +@property (nonatomic, assign) CGSize minimumSize; + +/** + * The delegate that handles intrinsic size updates. + */ +@property (nonatomic, weak, nullable) id delegate; + +/** + * The backing view controller of the root view. + */ +@property (nonatomic, weak, nullable) UIViewController *reactViewController; + +/** + * The React-managed contents view of the root view. + */ +@property (nonatomic, strong, readonly) UIView *contentView; + +/** + * A view to display while the JavaScript is loading, so users aren't presented + * with a blank screen. By default this is nil, but you can override it with + * (for example) a UIActivityIndicatorView or a placeholder image. + */ +@property (nonatomic, strong, nullable) UIView *loadingView; + +/** + * When set, any touches on the RCTRootView that are not matched up to any of the child + * views will be passed to siblings of the RCTRootView. See -[UIView hitTest:withEvent:] + * for details on iOS hit testing. + * + * Enable this to support a semi-transparent RN view that occupies the whole screen but + * has visible content below it that the user can interact with. + * + * The default value is NO. + */ +@property (nonatomic, assign) BOOL passThroughTouches; + +/** + * Timings for hiding the loading view after the content has loaded. Both of + * these values default to 0.25 seconds. + */ +@property (nonatomic, assign) NSTimeInterval loadingViewFadeDelay; +@property (nonatomic, assign) NSTimeInterval loadingViewFadeDuration; + +@end + +@interface RCTRootView (Deprecated) + +/** + * The intrinsic size of the root view's content. This is set right before the + * `rootViewDidChangeIntrinsicSize` method of `RCTRootViewDelegate` is called. + * This property is deprecated and will be removed in next releases. + * Use UIKit `intrinsicContentSize` property instead. + */ +@property (readonly, nonatomic, assign) CGSize intrinsicSize __deprecated_msg("Use `intrinsicContentSize` instead."); + +/** + * This methods is deprecated and will be removed soon. + * To interrupt a React Native gesture recognizer, use the standard + * `UIGestureRecognizer` negotiation process. + * See `UIGestureRecognizerDelegate` for more details. + */ +- (void)cancelTouches; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRootViewDelegate.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRootViewDelegate.h new file mode 100644 index 0000000..5749157 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRootViewDelegate.h @@ -0,0 +1,30 @@ +/* + * 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 + +@class RCTRootView; + +@protocol RCTRootViewDelegate + +/** + * Called after the root view's intrinsic content size is changed. + * + * The method is not called when both old size and new size have + * a dimension that equals to zero. + * + * The delegate can use this callback to appropriately resize + * the root view's frame to fit the new intrinsic content view size, + * but usually it is not necessary because the root view will also call + * `setNeedsLayout` for its superview which in its turn will trigger relayout. + * + * The new intrinsic content size is available via the `intrinsicContentSize` + * property of the root view. The view will not resize itself. + */ +- (void)rootViewDidChangeIntrinsicSize:(RCTRootView *)rootView; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRootViewInternal.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRootViewInternal.h new file mode 100644 index 0000000..8e28dd4 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTRootViewInternal.h @@ -0,0 +1,24 @@ +/* + * 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 + +/** + * The interface provides a set of functions that allow other internal framework + * classes to change the RCTRootViews's internal state. + */ +@interface RCTRootView () + +/** + * This setter should be used only by RCTUIManager on react root view + * intrinsic content size update. + */ +@property (readwrite, nonatomic, assign) CGSize intrinsicContentSize; + +- (void)contentViewInvalidated; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSRWebSocket.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSRWebSocket.h new file mode 100644 index 0000000..1b17cff --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSRWebSocket.h @@ -0,0 +1,132 @@ +// +// Copyright 2012 Square Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#import +#import + +typedef NS_ENUM(unsigned int, RCTSRReadyState) { + RCTSR_CONNECTING = 0, + RCTSR_OPEN = 1, + RCTSR_CLOSING = 2, + RCTSR_CLOSED = 3, +}; + +typedef NS_ENUM(NSInteger, RCTSRStatusCode) { + RCTSRStatusCodeNormal = 1000, + RCTSRStatusCodeGoingAway = 1001, + RCTSRStatusCodeProtocolError = 1002, + RCTSRStatusCodeUnhandledType = 1003, + // 1004 reserved. + RCTSRStatusNoStatusReceived = 1005, + // 1004-1006 reserved. + RCTSRStatusCodeInvalidUTF8 = 1007, + RCTSRStatusCodePolicyViolated = 1008, + RCTSRStatusCodeMessageTooBig = 1009, +}; + +@class RCTSRWebSocket; + +extern NSString *const RCTSRWebSocketErrorDomain; +extern NSString *const RCTSRHTTPResponseErrorKey; + +#pragma mark - RCTSRWebSocketDelegate + +@protocol RCTSRWebSocketDelegate; + +#pragma mark - RCTSRWebSocket + +@interface RCTSRWebSocket : NSObject + +@property (nonatomic, weak) id delegate; + +@property (nonatomic, readonly) RCTSRReadyState readyState; +@property (nonatomic, readonly, strong) NSURL *url; + +// This returns the negotiated protocol. +// It will be nil until after the handshake completes. +@property (nonatomic, readonly, copy) NSString *protocol; + +// Protocols should be an array of strings that turn into Sec-WebSocket-Protocol. +- (instancetype)initWithURLRequest:(NSURLRequest *)request protocols:(NSArray *)protocols NS_DESIGNATED_INITIALIZER; +- (instancetype)initWithURLRequest:(NSURLRequest *)request; + +// Some helper constructors. +- (instancetype)initWithURL:(NSURL *)url protocols:(NSArray *)protocols; +- (instancetype)initWithURL:(NSURL *)url; + +// Delegate queue will be dispatch_main_queue by default. +// You cannot set both OperationQueue and dispatch_queue. +- (void)setDelegateOperationQueue:(NSOperationQueue *)queue; +- (void)setDelegateDispatchQueue:(dispatch_queue_t)queue; + +// By default, it will schedule itself on +[NSRunLoop RCTSR_networkRunLoop] using defaultModes. +- (void)scheduleInRunLoop:(NSRunLoop *)aRunLoop forMode:(NSString *)mode; +- (void)unscheduleFromRunLoop:(NSRunLoop *)aRunLoop forMode:(NSString *)mode; + +// RCTSRWebSockets are intended for one-time-use only. Open should be called once and only once. +- (void)open; + +- (void)close; +- (void)closeWithCode:(NSInteger)code reason:(NSString *)reason; + +// Send a UTF8 String or Data. +- (void)send:(id)data; + +// Send Data (can be nil) in a ping message. +- (void)sendPing:(NSData *)data; + +@end + +#pragma mark - RCTSRWebSocketDelegate + +@protocol RCTSRWebSocketDelegate + +// message will either be an NSString if the server is using text +// or NSData if the server is using binary. +- (void)webSocket:(RCTSRWebSocket *)webSocket didReceiveMessage:(id)message; + +@optional + +- (void)webSocketDidOpen:(RCTSRWebSocket *)webSocket; +- (void)webSocket:(RCTSRWebSocket *)webSocket didFailWithError:(NSError *)error; +- (void)webSocket:(RCTSRWebSocket *)webSocket didCloseWithCode:(NSInteger)code reason:(NSString *)reason wasClean:(BOOL)wasClean; +- (void)webSocket:(RCTSRWebSocket *)webSocket didReceivePong:(NSData *)pongPayload; + +@end + +#pragma mark - NSURLRequest (CertificateAdditions) + +@interface NSURLRequest (CertificateAdditions) + +@property (nonatomic, readonly, copy) NSArray *RCTSR_SSLPinnedCertificates; + +@end + +#pragma mark - NSMutableURLRequest (CertificateAdditions) + +@interface NSMutableURLRequest (CertificateAdditions) + +@property (nonatomic, copy) NSArray *RCTSR_SSLPinnedCertificates; + +@end + +#pragma mark - NSRunLoop (RCTSRWebSocket) + +@interface NSRunLoop (RCTSRWebSocket) + ++ (NSRunLoop *)RCTSR_networkRunLoop; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSafeAreaShadowView.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSafeAreaShadowView.h new file mode 100644 index 0000000..784a4e0 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSafeAreaShadowView.h @@ -0,0 +1,16 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTSafeAreaShadowView : RCTShadowView + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSafeAreaView.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSafeAreaView.h new file mode 100644 index 0000000..ae1b6b3 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSafeAreaView.h @@ -0,0 +1,24 @@ +/* + * 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 + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class RCTBridge; + +@interface RCTSafeAreaView : RCTView + +- (instancetype)initWithBridge:(RCTBridge *)bridge; + +@property (nonatomic, assign) BOOL emulateUnlessSupported; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSafeAreaViewLocalData.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSafeAreaViewLocalData.h new file mode 100644 index 0000000..24c776c --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSafeAreaViewLocalData.h @@ -0,0 +1,20 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTSafeAreaViewLocalData : NSObject + +- (instancetype)initWithInsets:(UIEdgeInsets)insets; + +@property (atomic, readonly) UIEdgeInsets insets; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSafeAreaViewManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSafeAreaViewManager.h new file mode 100644 index 0000000..71dcc3c --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSafeAreaViewManager.h @@ -0,0 +1,16 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTSafeAreaViewManager : RCTViewManager + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTScrollContentShadowView.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTScrollContentShadowView.h new file mode 100644 index 0000000..ecae476 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTScrollContentShadowView.h @@ -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 + +#import + +@interface RCTScrollContentShadowView : RCTShadowView + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTScrollContentView.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTScrollContentView.h new file mode 100644 index 0000000..8d33a5a --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTScrollContentView.h @@ -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 + +#import + +@interface RCTScrollContentView : RCTView + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTScrollContentViewManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTScrollContentViewManager.h new file mode 100644 index 0000000..7645c04 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTScrollContentViewManager.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTScrollContentViewManager : RCTViewManager + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTScrollEvent.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTScrollEvent.h new file mode 100644 index 0000000..29a645d --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTScrollEvent.h @@ -0,0 +1,23 @@ +/* + * 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 +#import + +@interface RCTScrollEvent : NSObject + +- (instancetype)initWithEventName:(NSString *)eventName + reactTag:(NSNumber *)reactTag + scrollViewContentOffset:(CGPoint)scrollViewContentOffset + scrollViewContentInset:(UIEdgeInsets)scrollViewContentInset + scrollViewContentSize:(CGSize)scrollViewContentSize + scrollViewFrame:(CGRect)scrollViewFrame + scrollViewZoomScale:(CGFloat)scrollViewZoomScale + userData:(NSDictionary *)userData + coalescingKey:(uint16_t)coalescingKey NS_DESIGNATED_INITIALIZER; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTScrollView.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTScrollView.h new file mode 100644 index 0000000..ea1522b --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTScrollView.h @@ -0,0 +1,70 @@ +/* + * 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 + +#import +#import +#import +#import +#import + +@protocol UIScrollViewDelegate; + +@interface RCTScrollView : RCTView + +- (instancetype)initWithEventDispatcher:(id)eventDispatcher NS_DESIGNATED_INITIALIZER; + +/** + * The `RCTScrollView` may have at most one single subview. This will ensure + * that the scroll view's `contentSize` will be efficiently set to the size of + * the single subview's frame. That frame size will be determined somewhat + * efficiently since it will have already been computed by the off-main-thread + * layout system. + */ +@property (nonatomic, readonly) UIView *contentView; + +/** + * The underlying scrollView (TODO: can we remove this?) + */ +@property (nonatomic, readonly) UIScrollView *scrollView; + +@property (nonatomic, assign) UIEdgeInsets contentInset; +@property (nonatomic, assign) BOOL automaticallyAdjustContentInsets; +@property (nonatomic, assign) BOOL DEPRECATED_sendUpdatedChildFrames; +@property (nonatomic, assign) NSTimeInterval scrollEventThrottle; +@property (nonatomic, assign) BOOL centerContent; +@property (nonatomic, copy) NSDictionary *maintainVisibleContentPosition; +@property (nonatomic, assign) BOOL scrollToOverflowEnabled; +@property (nonatomic, assign) int snapToInterval; +@property (nonatomic, assign) BOOL disableIntervalMomentum; +@property (nonatomic, copy) NSArray *snapToOffsets; +@property (nonatomic, assign) BOOL snapToStart; +@property (nonatomic, assign) BOOL snapToEnd; +@property (nonatomic, copy) NSString *snapToAlignment; +@property (nonatomic, assign) BOOL inverted; +@property (nonatomic, assign) int minPointers; + +// NOTE: currently these event props are only declared so we can export the +// event names to JS - we don't call the blocks directly because scroll events +// need to be coalesced before sending, for performance reasons. +@property (nonatomic, copy) RCTDirectEventBlock onScrollBeginDrag; +@property (nonatomic, copy) RCTDirectEventBlock onScroll; +@property (nonatomic, copy) RCTDirectEventBlock onScrollToTop; +@property (nonatomic, copy) RCTDirectEventBlock onScrollEndDrag; +@property (nonatomic, copy) RCTDirectEventBlock onMomentumScrollBegin; +@property (nonatomic, copy) RCTDirectEventBlock onMomentumScrollEnd; + +@end + +@interface RCTScrollView (Internal) + +- (void)updateContentSizeIfNeeded; + +@end + +RCT_EXTERN void RCTSendFakeScrollEvent(id eventDispatcher, NSNumber *reactTag); diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTScrollViewManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTScrollViewManager.h new file mode 100644 index 0000000..94f6e19 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTScrollViewManager.h @@ -0,0 +1,19 @@ +/* + * 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 +#import + +@interface RCTConvert (UIScrollView) + ++ (UIScrollViewKeyboardDismissMode)UIScrollViewKeyboardDismissMode:(id)json; + +@end + +@interface RCTScrollViewManager : RCTViewManager + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTScrollableProtocol.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTScrollableProtocol.h new file mode 100644 index 0000000..ec6772e --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTScrollableProtocol.h @@ -0,0 +1,44 @@ +/* + * 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 +#import + +/** + * Contains any methods related to scrolling. Any `RCTView` that has scrolling + * features should implement these methods. + */ +@protocol RCTScrollableProtocol + +@property (nonatomic, readonly) CGSize contentSize; + +- (void)scrollToOffset:(CGPoint)offset; +- (void)scrollToOffset:(CGPoint)offset animated:(BOOL)animated; +/** + * If this is a vertical scroll view, scrolls to the bottom. + * If this is a horizontal scroll view, scrolls to the right. + */ +- (void)scrollToEnd:(BOOL)animated; +- (void)zoomToRect:(CGRect)rect animated:(BOOL)animated; + +- (void)addScrollListener:(NSObject *)scrollListener; +- (void)removeScrollListener:(NSObject *)scrollListener; + +@end + +/** + * Denotes a view which implements custom pull to refresh functionality. + */ +@protocol RCTCustomRefreshContolProtocol + +@property (nonatomic, copy) RCTDirectEventBlock onRefresh; +@property (nonatomic, readonly, getter=isRefreshing) BOOL refreshing; + +@optional +@property (nonatomic, weak) UIScrollView *scrollView; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSegmentedControl.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSegmentedControl.h new file mode 100644 index 0000000..b428f4d --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSegmentedControl.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +#import + +@interface RCTSegmentedControl : UISegmentedControl + +@property (nonatomic, copy) NSArray *values; +@property (nonatomic, assign) NSInteger selectedIndex; +@property (nonatomic, copy) RCTBubblingEventBlock onChange; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSegmentedControlManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSegmentedControlManager.h new file mode 100644 index 0000000..edc9df9 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSegmentedControlManager.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTSegmentedControlManager : RCTViewManager + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSettingsManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSettingsManager.h new file mode 100644 index 0000000..4e76780 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSettingsManager.h @@ -0,0 +1,16 @@ +/* + * 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 + +#import + +@interface RCTSettingsManager : NSObject + +- (instancetype)initWithUserDefaults:(NSUserDefaults *)defaults NS_DESIGNATED_INITIALIZER; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSettingsPlugins.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSettingsPlugins.h new file mode 100644 index 0000000..cf79705 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSettingsPlugins.h @@ -0,0 +1,40 @@ +/** + * 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 an internal plugin build system + */ + +#ifdef RN_DISABLE_OSS_PLUGIN_HEADER + +// FB Internal: FBRCTSettingsPlugins.h is autogenerated by the build system. +#import + +#else + +// OSS-compatibility layer + +#import + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wreturn-type-c-linkage" + +#ifdef __cplusplus +extern "C" { +#endif + +// RCTTurboModuleManagerDelegate should call this to resolve module classes. +Class RCTSettingsClassProvider(const char *name); + +// Lookup functions +Class RCTSettingsManagerCls(void) __attribute__((used)); + +#ifdef __cplusplus +} +#endif + +#pragma GCC diagnostic pop + +#endif // RN_DISABLE_OSS_PLUGIN_HEADER diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTShadowView+Internal.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTShadowView+Internal.h new file mode 100644 index 0000000..b871ce6 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTShadowView+Internal.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +#import + +@class RCTRootShadowView; + +@interface RCTShadowView (Internal) + +@property (nonatomic, weak, readwrite) RCTRootShadowView *rootView; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTShadowView+Layout.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTShadowView+Layout.h new file mode 100644 index 0000000..7e09674 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTShadowView+Layout.h @@ -0,0 +1,39 @@ +/* + * 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 + +#import + +@interface RCTShadowView (Layout) + +#pragma mark - Computed Layout-Inferred Metrics + +@property (nonatomic, readonly) UIEdgeInsets paddingAsInsets; +@property (nonatomic, readonly) UIEdgeInsets borderAsInsets; +@property (nonatomic, readonly) UIEdgeInsets compoundInsets; +@property (nonatomic, readonly) CGSize availableSize; +@property (nonatomic, readonly) CGRect contentFrame; + +#pragma mark - Dirty Propagation Control + +/** + * Designated method to control dirty propagation mechanism. + * Dirties the shadow view (and all affected shadow views, usually a superview) + * in terms of layout. + * The default implementation does nothing. + */ +- (void)dirtyLayout; + +/** + * Designated method to control dirty propagation mechanism. + * Clears (makes not dirty) the shadow view. + * The default implementation does nothing. + */ +- (void)clearLayout; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTShadowView.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTShadowView.h new file mode 100644 index 0000000..4696b14 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTShadowView.h @@ -0,0 +1,241 @@ +/* + * 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 + +#import +#import +#import +#import + +@class RCTRootShadowView; +@class RCTSparseArray; + +typedef void (^RCTApplierBlock)(NSDictionary *viewRegistry); + +/** + * ShadowView tree mirrors RCT view tree. Every node is highly stateful. + * 1. A node is in one of three lifecycles: uninitialized, computed, dirtied. + * 1. RCTBridge may call any of the padding/margin/width/height/top/left setters. A setter would dirty + * the node and all of its ancestors. + * 2. At the end of each Bridge transaction, we call layoutWithMinimumSize:maximumSize:layoutDirection:layoutContext + * at the root node to recursively lay out the entire hierarchy. + * 3. If a node is "computed" and the constraint passed from above is identical to the constraint used to + * perform the last computation, we skip laying out the subtree entirely. + */ +@interface RCTShadowView : NSObject + +/** + * Yoga Config which will be used to create `yogaNode` property. + * Override in subclass to enable special Yoga features. + * Defaults to suitable to current device configuration. + */ ++ (YGConfigRef)yogaConfig; + +/** + * RCTComponent interface. + */ +- (NSArray *)reactSubviews NS_REQUIRES_SUPER; +- (RCTShadowView *)reactSuperview NS_REQUIRES_SUPER; +- (void)insertReactSubview:(RCTShadowView *)subview atIndex:(NSInteger)atIndex NS_REQUIRES_SUPER; +- (void)removeReactSubview:(RCTShadowView *)subview NS_REQUIRES_SUPER; + +@property (nonatomic, weak, readonly) RCTRootShadowView *rootView; +@property (nonatomic, weak, readonly) RCTShadowView *superview; +@property (nonatomic, assign, readonly) YGNodeRef yogaNode; +@property (nonatomic, copy) NSString *viewName; +@property (nonatomic, copy) RCTDirectEventBlock onLayout; + +/** + * Computed layout of the view. + */ +@property (nonatomic, assign) RCTLayoutMetrics layoutMetrics; + +/** + * In some cases we need a way to specify some environmental data to shadow view + * to improve layout (or do something similar), so `localData` serves these needs. + * For example, any stateful embedded native views may benefit from this. + * Have in mind that this data is not supposed to interfere with the state of + * the shadow view. + * Please respect one-directional data flow of React. + * Use `-[RCTUIManager setLocalData:forView:]` to set this property + * (to provide local/environmental data for a shadow view) from the main thread. + */ +- (void)setLocalData:(NSObject *)localData; + +/** + * isNewView - Used to track the first time the view is introduced into the hierarchy. It is initialized YES, then is + * set to NO in RCTUIManager after the layout pass is done and all frames have been extracted to be applied to the + * corresponding UIViews. + */ +@property (nonatomic, assign, getter=isNewView) BOOL newView; + +/** + * Position and dimensions. + * Defaults to { 0, 0, NAN, NAN }. + */ +@property (nonatomic, assign) YGValue top; +@property (nonatomic, assign) YGValue left; +@property (nonatomic, assign) YGValue bottom; +@property (nonatomic, assign) YGValue right; +@property (nonatomic, assign) YGValue start; +@property (nonatomic, assign) YGValue end; + +@property (nonatomic, assign) YGValue width; +@property (nonatomic, assign) YGValue height; + +@property (nonatomic, assign) YGValue minWidth; +@property (nonatomic, assign) YGValue maxWidth; +@property (nonatomic, assign) YGValue minHeight; +@property (nonatomic, assign) YGValue maxHeight; + +/** + * Convenient alias to `width` and `height` in pixels. + * Defaults to NAN in case of non-pixel dimension. + */ +@property (nonatomic, assign) CGSize size; + +/** + * Border. Defaults to { 0, 0, 0, 0 }. + */ +@property (nonatomic, assign) float borderWidth; +@property (nonatomic, assign) float borderTopWidth; +@property (nonatomic, assign) float borderLeftWidth; +@property (nonatomic, assign) float borderBottomWidth; +@property (nonatomic, assign) float borderRightWidth; +@property (nonatomic, assign) float borderStartWidth; +@property (nonatomic, assign) float borderEndWidth; + +/** + * Margin. Defaults to { 0, 0, 0, 0 }. + */ +@property (nonatomic, assign) YGValue margin; +@property (nonatomic, assign) YGValue marginVertical; +@property (nonatomic, assign) YGValue marginHorizontal; +@property (nonatomic, assign) YGValue marginTop; +@property (nonatomic, assign) YGValue marginLeft; +@property (nonatomic, assign) YGValue marginBottom; +@property (nonatomic, assign) YGValue marginRight; +@property (nonatomic, assign) YGValue marginStart; +@property (nonatomic, assign) YGValue marginEnd; + +/** + * Padding. Defaults to { 0, 0, 0, 0 }. + */ +@property (nonatomic, assign) YGValue padding; +@property (nonatomic, assign) YGValue paddingVertical; +@property (nonatomic, assign) YGValue paddingHorizontal; +@property (nonatomic, assign) YGValue paddingTop; +@property (nonatomic, assign) YGValue paddingLeft; +@property (nonatomic, assign) YGValue paddingBottom; +@property (nonatomic, assign) YGValue paddingRight; +@property (nonatomic, assign) YGValue paddingStart; +@property (nonatomic, assign) YGValue paddingEnd; + +/** + * Flexbox properties. All zero/disabled by default + */ +@property (nonatomic, assign) YGFlexDirection flexDirection; +@property (nonatomic, assign) YGJustify justifyContent; +@property (nonatomic, assign) YGAlign alignSelf; +@property (nonatomic, assign) YGAlign alignItems; +@property (nonatomic, assign) YGAlign alignContent; +@property (nonatomic, assign) YGPositionType position; +@property (nonatomic, assign) YGWrap flexWrap; +@property (nonatomic, assign) YGDisplay display; + +@property (nonatomic, assign) float flex; +@property (nonatomic, assign) float flexGrow; +@property (nonatomic, assign) float flexShrink; +@property (nonatomic, assign) YGValue flexBasis; + +@property (nonatomic, assign) float aspectRatio; + +/** + * Interface direction (LTR or RTL) + */ +@property (nonatomic, assign) YGDirection direction; + +/** + * Clipping properties + */ +@property (nonatomic, assign) YGOverflow overflow; + +/** + * Represents the natural size of the view, which is used when explicit size is not set or is ambiguous. + * Defaults to `{UIViewNoIntrinsicMetric, UIViewNoIntrinsicMetric}`. + */ +@property (nonatomic, assign) CGSize intrinsicContentSize; + +#pragma mark - Layout + +/** + * Initiates layout starts from the view. + */ +- (void)layoutWithMinimumSize:(CGSize)minimumSize + maximumSize:(CGSize)maximumSize + layoutDirection:(UIUserInterfaceLayoutDirection)layoutDirection + layoutContext:(RCTLayoutContext)layoutContext; + +/** + * Applies computed layout metrics to the view. + */ +- (void)layoutWithMetrics:(RCTLayoutMetrics)layoutMetrics layoutContext:(RCTLayoutContext)layoutContext; + +/** + * Calculates (if needed) and applies layout to subviews. + */ +- (void)layoutSubviewsWithContext:(RCTLayoutContext)layoutContext; + +/** + * Measures shadow view without side-effects. + * Default implementation uses Yoga for measuring. + */ +- (CGSize)sizeThatFitsMinimumSize:(CGSize)minimumSize maximumSize:(CGSize)maximumSize; + +/** + * Returns whether or not this view can have any subviews. + * Adding/inserting a child view to leaf view (`canHaveSubviews` equals `NO`) + * will throw an error. + * Return `NO` for components which must not have any descendants + * (like , for example.) + * Defaults to `YES`. Can be overridden in subclasses. + * Don't confuse this with `isYogaLeafNode`. + */ +- (BOOL)canHaveSubviews; + +/** + * Returns whether or not this node acts as a leaf node in the eyes of Yoga. + * For example `RCTTextShadowView` has children which it does not want Yoga + * to lay out so in the eyes of Yoga it is a leaf node. + * Defaults to `NO`. Can be overridden in subclasses. + * Don't confuse this with `canHaveSubviews`. + */ +- (BOOL)isYogaLeafNode; + +/** + * As described in RCTComponent protocol. + */ +- (void)didUpdateReactSubviews NS_REQUIRES_SUPER; +- (void)didSetProps:(NSArray *)changedProps NS_REQUIRES_SUPER; + +/** + * Computes the recursive offset, meaning the sum of all descendant offsets - + * this is the sum of all positions inset from parents. This is not merely the + * sum of `top`/`left`s, as this function uses the *actual* positions of + * children, not the style specified positions - it computes this based on the + * resulting layout. It does not yet compensate for native scroll view insets or + * transforms or anchor points. + */ +- (CGRect)measureLayoutRelativeToAncestor:(RCTShadowView *)ancestor; + +/** + * Checks if the current shadow view is a descendant of the provided `ancestor` + */ +- (BOOL)viewIsDescendantOf:(RCTShadowView *)ancestor; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSinglelineTextInputView.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSinglelineTextInputView.h new file mode 100644 index 0000000..d9450db --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSinglelineTextInputView.h @@ -0,0 +1,16 @@ +/* + * 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 "RCTBaseTextInputView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTSinglelineTextInputView : RCTBaseTextInputView + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSinglelineTextInputViewManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSinglelineTextInputViewManager.h new file mode 100644 index 0000000..314993a --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSinglelineTextInputViewManager.h @@ -0,0 +1,16 @@ +/* + * 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 "RCTBaseTextInputViewManager.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTSinglelineTextInputViewManager : RCTBaseTextInputViewManager + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSlider.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSlider.h new file mode 100644 index 0000000..355cc36 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSlider.h @@ -0,0 +1,26 @@ +/* + * 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 + +#import + +@interface RCTSlider : UISlider + +@property (nonatomic, copy) RCTBubblingEventBlock onValueChange; +@property (nonatomic, copy) RCTDirectEventBlock onSlidingComplete; + +@property (nonatomic, assign) float step; +@property (nonatomic, assign) float lastValue; + +@property (nonatomic, strong) UIImage *trackImage; +@property (nonatomic, strong) UIImage *minimumTrackImage; +@property (nonatomic, strong) UIImage *maximumTrackImage; + +@property (nonatomic, strong) UIImage *thumbImage; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSliderManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSliderManager.h new file mode 100644 index 0000000..49de42c --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSliderManager.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTSliderManager : RCTViewManager + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSourceCode.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSourceCode.h new file mode 100644 index 0000000..fd0e387 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSourceCode.h @@ -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 + +#import + +@interface RCTSourceCode : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSpringAnimation.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSpringAnimation.h new file mode 100644 index 0000000..0c031ec --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSpringAnimation.h @@ -0,0 +1,12 @@ +/* + * 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 "RCTAnimationDriver.h" + +@interface RCTSpringAnimation : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTStatusBarManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTStatusBarManager.h new file mode 100644 index 0000000..db02b91 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTStatusBarManager.h @@ -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 + +#import +#import + +@interface RCTConvert (UIStatusBar) + ++ (UIStatusBarStyle)UIStatusBarStyle:(id)json; ++ (UIStatusBarAnimation)UIStatusBarAnimation:(id)json; + +@end + +@interface RCTStatusBarManager : RCTEventEmitter + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTStyleAnimatedNode.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTStyleAnimatedNode.h new file mode 100644 index 0000000..cdcaca4 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTStyleAnimatedNode.h @@ -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 "RCTAnimatedNode.h" + +@interface RCTStyleAnimatedNode : RCTAnimatedNode + +- (NSDictionary *)propsDictionary; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSubtractionAnimatedNode.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSubtractionAnimatedNode.h new file mode 100644 index 0000000..e8ec799 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSubtractionAnimatedNode.h @@ -0,0 +1,13 @@ +/* + * 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 "RCTValueAnimatedNode.h" + +@interface RCTSubtractionAnimatedNode : RCTValueAnimatedNode + +@end + diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurface.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurface.h new file mode 100644 index 0000000..b776443 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurface.h @@ -0,0 +1,90 @@ +/* + * 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 + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@class RCTBridge; +@class RCTSurfaceView; +@protocol RCTSurfaceDelegate; + +/** + * RCTSurface instance represents React Native-powered piece of a user interface + * which can be a full-screen app, separate modal view controller, + * or even small widget. + * It is called "Surface". + * + * The RCTSurface instance is completely thread-safe by design; + * it can be created on any thread, and any its method can be called from + * any thread (if the opposite is not mentioned explicitly). + * + * The primary goals of the RCTSurface are: + * * ability to measure and layout the surface in a thread-safe + * and synchronous manner; + * * ability to create a UIView instance on demand (later); + * * ability to communicate the current stage of the surface granularly. + */ +@interface RCTSurface : NSObject + +- (instancetype)initWithBridge:(RCTBridge *)bridge + moduleName:(NSString *)moduleName + initialProperties:(NSDictionary *)initialProperties; + +#pragma mark - Layout: Setting the size constrains + +/** + * Previously set `minimumSize` layout constraint. + * Defaults to `{0, 0}`. + */ +@property (atomic, assign, readonly) CGSize minimumSize; + +/** + * Previously set `maximumSize` layout constraint. + * Defaults to `{CGFLOAT_MAX, CGFLOAT_MAX}`. + */ +@property (atomic, assign, readonly) CGSize maximumSize; + +/** + * Simple shortcut to `-[RCTSurface setMinimumSize:size maximumSize:size]`. + */ +- (void)setSize:(CGSize)size; + +#pragma mark - Synchronous waiting + +/** + * Synchronously blocks the current thread up to given `timeout` until + * the Surface reaches `stage`. + * Limitations: + * - Do nothing, if called on `UIManager` queue. + * - Calling on the main queue with `RCTSurfaceStageSurfaceDidInitialMounting` + * stage temporary is not supported; in this case the stage will be + * downgraded to `RCTSurfaceStageSurfaceDidInitialLayout`. + */ +- (BOOL)synchronouslyWaitForStage:(RCTSurfaceStage)stage timeout:(NSTimeInterval)timeout; + +#pragma mark - Mounting/Unmounting of React components + +/** + * Mount the React component specified by the given moduleName. This is typically + * calling runApplication.js from the native side. + */ +- (void)mountReactComponentWithBridge:(RCTBridge *)bridge + moduleName:(NSString *)moduleName + params:(NSDictionary *)params; + +/** + * Unmount the React component specified by the given rootViewTag, called from native. + */ +- (void)unmountReactComponentWithBridge:(RCTBridge *)bridge rootViewTag:(NSNumber *)rootViewTag; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfaceDelegate.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfaceDelegate.h new file mode 100644 index 0000000..895c2eb --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfaceDelegate.h @@ -0,0 +1,34 @@ +/* + * 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 + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class RCTSurface; + +@protocol RCTSurfaceDelegate + +@optional + +/** + * Notifies a receiver that a surface transitioned to a new stage. + * See `RCTSurfaceStage` for more details. + */ +- (void)surface:(RCTSurface *)surface didChangeStage:(RCTSurfaceStage)stage; + +/** + * Notifies a receiver that root view got a new (intrinsic) size during the last + * layout pass. + */ +- (void)surface:(RCTSurface *)surface didChangeIntrinsicSize:(CGSize)intrinsicSize; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfaceHostingProxyRootView.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfaceHostingProxyRootView.h new file mode 100644 index 0000000..a7077a5 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfaceHostingProxyRootView.h @@ -0,0 +1,64 @@ +/* + * 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 + +#import +#import + +#import "RCTSurfaceHostingView.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * This is a RCTRootView-compatible implementation of RCTSurfaceHostingView. + * Use this class to replace all usages of RCTRootView in the app for easier migration + * to RCTSurfaceHostingView. + * + * WARNING: In the future, RCTRootView will be deprecated in favor of RCTSurfaceHostingView. + */ +@interface RCTSurfaceHostingProxyRootView : RCTSurfaceHostingView + +#pragma mark RCTRootView compatibility - keep these sync'ed with RCTRootView.h + +@property (nonatomic, copy, readonly) NSString *moduleName; +@property (nonatomic, strong, readonly) RCTBridge *bridge; +@property (nonatomic, readonly) BOOL hasBridge; +@property (nonatomic, strong, readonly) RCTModuleRegistry *moduleRegistry; +@property (nonatomic, strong, readonly) id eventDispatcher; +@property (nonatomic, copy, readwrite) NSDictionary *appProperties; +@property (nonatomic, assign) RCTRootViewSizeFlexibility sizeFlexibility; +@property (nonatomic, weak) id delegate; +@property (nonatomic, weak) UIViewController *reactViewController; +@property (nonatomic, strong, readonly) UIView *contentView; +@property (nonatomic, strong) UIView *loadingView; +@property (nonatomic, assign) BOOL passThroughTouches; +@property (nonatomic, assign) NSTimeInterval loadingViewFadeDelay; +@property (nonatomic, assign) NSTimeInterval loadingViewFadeDuration; +@property (nonatomic, assign) CGSize minimumSize; + +- (instancetype)initWithBridge:(RCTBridge *)bridge + moduleName:(NSString *)moduleName + initialProperties:(NSDictionary *)initialProperties NS_DESIGNATED_INITIALIZER; + +- (instancetype)initWithBundleURL:(NSURL *)bundleURL + moduleName:(NSString *)moduleName + initialProperties:(NSDictionary *)initialProperties + launchOptions:(NSDictionary *)launchOptions; + +/** + * Bridgeless mode initializer + */ +- (instancetype)initWithSurface:(id)surface + sizeMeasureMode:(RCTSurfaceSizeMeasureMode)sizeMeasureMode + moduleRegistry:(RCTModuleRegistry *)moduleRegistry; + +- (void)cancelTouches; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfaceHostingView.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfaceHostingView.h new file mode 100644 index 0000000..0fbbdab --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfaceHostingView.h @@ -0,0 +1,78 @@ +/* + * 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 + +#import +#import +#import +#import + +@class RCTBridge; +@class RCTSurface; + +typedef UIView *_Nullable (^RCTSurfaceHostingViewActivityIndicatorViewFactory)(void); + +NS_ASSUME_NONNULL_BEGIN + +/** + * UIView subclass which providers interoperability between UIKit and + * Surface regarding layout and life-cycle. + * This class can be used as easy-to-use general purpose integration point + * of ReactNative-powered experiences in UIKit based apps. + */ +@interface RCTSurfaceHostingView : UIView + +/** + * Create an instance of RCTSurface to be hosted. + */ ++ (RCTSurface *)createSurfaceWithBridge:(RCTBridge *)bridge + moduleName:(NSString *)moduleName + initialProperties:(NSDictionary *)initialProperties; + +/** + * Designated initializer. + * Instanciates a view with given Surface object. + * Note: The view retains the surface object. + */ +- (instancetype)initWithSurface:(id)surface + sizeMeasureMode:(RCTSurfaceSizeMeasureMode)sizeMeasureMode NS_DESIGNATED_INITIALIZER; + +/** + * Convenience initializer. + * Instanciates a Surface object with given `bridge`, `moduleName`, and + * `initialProperties`, and then use it to instanciate a view. + */ +- (instancetype)initWithBridge:(RCTBridge *)bridge + moduleName:(NSString *)moduleName + initialProperties:(NSDictionary *)initialProperties + sizeMeasureMode:(RCTSurfaceSizeMeasureMode)sizeMeasureMode; + +/** + * Surface object which is currently using to power the view. + * Read-only. + */ +@property (nonatomic, strong, readonly) id surface; + +/** + * Size measure mode which are defining relationship between UIKit and ReactNative + * layout approaches. + * Defaults to `RCTSurfaceSizeMeasureModeWidthAtMost | RCTSurfaceSizeMeasureModeHeightAtMost`. + */ +@property (nonatomic, assign) RCTSurfaceSizeMeasureMode sizeMeasureMode; + +/** + * Activity indicator factory. + * A hosting view may use this block to instantiate and display custom activity + * (loading) indicator (aka "spinner") when it needed. + * Defaults to `nil` (no activity indicator). + */ +@property (nonatomic, copy, nullable) RCTSurfaceHostingViewActivityIndicatorViewFactory activityIndicatorViewFactory; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfacePresenterStub.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfacePresenterStub.h new file mode 100644 index 0000000..32a2b80 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfacePresenterStub.h @@ -0,0 +1,43 @@ +/* + * 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 + +#import + +NS_ASSUME_NONNULL_BEGIN + +// TODO: Eventually this should go away and files should just include RCTSurfacePresenter.h, but +// that pulls in all of fabric which doesn't compile in open source yet, so we mirror the protocol +// and duplicate the category here for now. + +@protocol RCTSurfacePresenterObserver + +@optional + +- (void)willMountComponentsWithRootTag:(NSInteger)rootTag; +- (void)didMountComponentsWithRootTag:(NSInteger)rootTag; + +@end + +@protocol RCTSurfacePresenterStub + +- (nullable UIView *)findComponentViewWithTag_DO_NOT_USE_DEPRECATED:(NSInteger)tag; +- (BOOL)synchronouslyUpdateViewOnUIThread:(NSNumber *)reactTag props:(NSDictionary *)props; +- (void)addObserver:(id)observer; +- (void)removeObserver:(id)observer; + +@end + +@interface RCTBridge (RCTSurfacePresenterStub) + +- (id)surfacePresenter; +- (void)setSurfacePresenter:(id)presenter; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfaceProtocol.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfaceProtocol.h new file mode 100644 index 0000000..c274df7 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfaceProtocol.h @@ -0,0 +1,81 @@ +/* + * 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 +#import + +NS_ASSUME_NONNULL_BEGIN + +@class RCTSurfaceView; +@protocol RCTSurfaceDelegate; + +@protocol RCTSurfaceProtocol + +@property (atomic, readonly) RCTSurfaceStage stage; +@property (atomic, readonly) NSString *moduleName; +@property (atomic, readwrite, weak, nullable) id delegate; + +/** + * Deprecated. Use `rootTag` instead. + */ +@property (atomic, readonly) NSNumber *rootViewTag; +@property (atomic, copy, readwrite) NSDictionary *properties; +@property (atomic, readonly) NSInteger rootTag; + +/** + * Sets `minimumSize` and `maximumSize` layout constraints for the Surface. + */ +- (void)setMinimumSize:(CGSize)minimumSize maximumSize:(CGSize)maximumSize; + +/** + * Sets `minimumSize`, `maximumSize`, and `viewportOffset` layout constraints for the Surface. + * `viewportOffset` is ignored in `RCTSurface` but used in `RCTFabricSurface`. + */ +- (void)setMinimumSize:(CGSize)minimumSize maximumSize:(CGSize)maximumSize viewportOffset:(CGPoint)viewportOffset; + +#pragma mark - Dealing with UIView representation, the Main thread only access + +/** + * Creates (if needed) and returns `UIView` instance which represents the Surface. + * The Surface will cache and *retain* this object. + * Returning the UIView instance does not mean that the Surface is ready + * to execute and layout. It can be just a handler which Surface will use later + * to mount the actual views. + * RCTSurface does not control (or influence in any way) the size or origin + * of this view. Some superview (or another owner) must use other methods + * of this class to setup proper layout and interop interactions with UIKit + * or another UI framework. + * This method must be called only from the main queue. + */ +- (RCTSurfaceView *)view; + +#pragma mark - Layout: Measuring + +/** + * Measures the Surface with given constraints. + * This method does not cause any side effects on the surface object. + */ +- (CGSize)sizeThatFitsMinimumSize:(CGSize)minimumSize maximumSize:(CGSize)maximumSize; + +/** + * Return the current size of the root view based on (but not clamp by) current + * size constraints. + */ +@property (atomic, assign, readonly) CGSize intrinsicSize; + +#pragma mark - Start & Stop + +/** + * Starts or stops the Surface. + * Those methods are a no-op for regular RCTSurface (for now), but all call sites must call them appropriately. + */ +- (BOOL)start; +- (BOOL)stop; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfaceRootShadowView.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfaceRootShadowView.h new file mode 100644 index 0000000..cab8b4a --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfaceRootShadowView.h @@ -0,0 +1,32 @@ +/* + * 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 +#import +#import + +@interface RCTSurfaceRootShadowView : RCTShadowView + +@property (nonatomic, assign, readonly) CGSize minimumSize; +@property (nonatomic, assign, readonly) CGSize maximumSize; + +- (void)setMinimumSize:(CGSize)size maximumSize:(CGSize)maximumSize; + +@property (nonatomic, assign, readonly) CGSize intrinsicSize; + +@property (nonatomic, weak) id delegate; + +/** + * Layout direction (LTR or RTL) inherited from native environment and + * is using as a base direction value in layout engine. + * Defaults to value inferred from current locale. + */ +@property (nonatomic, assign) YGDirection baseDirection; + +- (void)layoutWithAffectedShadowViews:(NSHashTable *)affectedShadowViews; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfaceRootShadowViewDelegate.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfaceRootShadowViewDelegate.h new file mode 100644 index 0000000..6ad7337 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfaceRootShadowViewDelegate.h @@ -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 + +NS_ASSUME_NONNULL_BEGIN + +@class RCTSurfaceRootShadowView; + +@protocol RCTSurfaceRootShadowViewDelegate + +- (void)rootShadowView:(RCTSurfaceRootShadowView *)rootShadowView didChangeIntrinsicSize:(CGSize)instrinsicSize; +- (void)rootShadowViewDidStartRendering:(RCTSurfaceRootShadowView *)rootShadowView; +- (void)rootShadowViewDidStartLayingOut:(RCTSurfaceRootShadowView *)rootShadowView; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfaceRootView.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfaceRootView.h new file mode 100644 index 0000000..052476a --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfaceRootView.h @@ -0,0 +1,21 @@ +/* + * 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 + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * Internal class represents Surface's root view. + */ +@interface RCTSurfaceRootView : RCTView + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfaceSizeMeasureMode.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfaceSizeMeasureMode.h new file mode 100644 index 0000000..0ca27cd --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfaceSizeMeasureMode.h @@ -0,0 +1,32 @@ +/* + * 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 + +#import + +/** + * Bitmask defines how size constrains from `-[UIView sizeThatFits:]` + * are translated to `-[RCTSurface sizeThatFitsMinimumSize:maximumSize:]`. + */ +typedef NS_OPTIONS(NSInteger, RCTSurfaceSizeMeasureMode) { + RCTSurfaceSizeMeasureModeWidthUndefined = 0 << 0, + RCTSurfaceSizeMeasureModeWidthExact = 1 << 0, + RCTSurfaceSizeMeasureModeWidthAtMost = 2 << 0, + RCTSurfaceSizeMeasureModeHeightUndefined = 0 << 2, + RCTSurfaceSizeMeasureModeHeightExact = 1 << 2, + RCTSurfaceSizeMeasureModeHeightAtMost = 2 << 2, +}; + +/** + * Returns size constraints based on `size` and `sizeMeasureMode`. + */ +RCT_EXTERN void RCTSurfaceMinimumSizeAndMaximumSizeFromSizeAndSizeMeasureMode( + CGSize size, + RCTSurfaceSizeMeasureMode sizeMeasureMode, + CGSize *minimumSize, + CGSize *maximumSize); diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfaceStage.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfaceStage.h new file mode 100644 index 0000000..87bf915 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfaceStage.h @@ -0,0 +1,42 @@ +/* + * 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 + +#import + +/** + * The stage of the Surface + */ +typedef NS_OPTIONS(NSInteger, RCTSurfaceStage) { + RCTSurfaceStageSurfaceDidInitialize = 1 << 0, // Surface object was created + RCTSurfaceStageBridgeDidLoad = 1 << 1, // Bridge was loaded + RCTSurfaceStageModuleDidLoad = 1 << 2, // Module (JavaScript code) was loaded + RCTSurfaceStageSurfaceDidRun = 1 << 3, // Module (JavaScript code) was run + RCTSurfaceStageSurfaceDidInitialRendering = 1 << 4, // UIManager created the first shadow views + RCTSurfaceStageSurfaceDidInitialLayout = 1 << 5, // UIManager completed the first layout pass + RCTSurfaceStageSurfaceDidInitialMounting = 1 << 6, // UIManager completed the first mounting pass + RCTSurfaceStageSurfaceDidStop = 1 << 7, // Surface stopped + + // Most of the previously existed stages make no sense in the new architecture; + // now Surface exposes only two simple stages: + RCTSurfaceStagePreparing = RCTSurfaceStageSurfaceDidInitialize | RCTSurfaceStageBridgeDidLoad | + RCTSurfaceStageModuleDidLoad, + RCTSurfaceStageRunning = RCTSurfaceStagePreparing | RCTSurfaceStageSurfaceDidRun | + RCTSurfaceStageSurfaceDidInitialRendering | RCTSurfaceStageSurfaceDidInitialLayout | + RCTSurfaceStageSurfaceDidInitialMounting, +}; + +/** + * Returns `YES` if the stage is suitable for displaying normal React Native app. + */ +RCT_EXTERN BOOL RCTSurfaceStageIsRunning(RCTSurfaceStage stage); + +/** + * Returns `YES` if the stage is suitable for displaying activity indicator. + */ +RCT_EXTERN BOOL RCTSurfaceStageIsPreparing(RCTSurfaceStage stage); diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfaceView+Internal.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfaceView+Internal.h new file mode 100644 index 0000000..ac4f59f --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfaceView+Internal.h @@ -0,0 +1,24 @@ +/* + * 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 + +#import +#import + +@class RCTSurfaceRootView; + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTSurfaceView (Internal) + +@property (nonatomic, nullable, strong) RCTSurfaceRootView *rootView; +@property (nonatomic, assign) RCTSurfaceStage stage; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfaceView.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfaceView.h new file mode 100644 index 0000000..a61e28c --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSurfaceView.h @@ -0,0 +1,25 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +@class RCTSurface; + +/** + * UIView instance which represents the Surface + */ +@interface RCTSurfaceView : UIView + +- (instancetype)initWithSurface:(RCTSurface *)surface NS_DESIGNATED_INITIALIZER; + +@property (nonatomic, weak, readonly, nullable) RCTSurface *surface; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSwitch.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSwitch.h new file mode 100644 index 0000000..3b42a50 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSwitch.h @@ -0,0 +1,17 @@ +/* + * 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 + +#import + +@interface RCTSwitch : UISwitch + +@property (nonatomic, assign) BOOL wasOn; +@property (nonatomic, copy) RCTBubblingEventBlock onChange; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSwitchManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSwitchManager.h new file mode 100644 index 0000000..06015b1 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTSwitchManager.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTSwitchManager : RCTViewManager + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTextAttributes.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTextAttributes.h new file mode 100644 index 0000000..ce04362 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTextAttributes.h @@ -0,0 +1,97 @@ +/* + * 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 + +#import + +#import "RCTTextTransform.h" + +NS_ASSUME_NONNULL_BEGIN + +extern NSString *const RCTTextAttributesIsHighlightedAttributeName; +extern NSString *const RCTTextAttributesTagAttributeName; + +/** + * Represents knowledge about all supported *text* attributes + * assigned to some text component such as , , + * and . + */ +@interface RCTTextAttributes : NSObject + +// Color +@property (nonatomic, strong, nullable) UIColor *foregroundColor; +@property (nonatomic, strong, nullable) UIColor *backgroundColor; +@property (nonatomic, assign) CGFloat opacity; +// Font +@property (nonatomic, copy, nullable) NSString *fontFamily; +@property (nonatomic, assign) CGFloat fontSize; +@property (nonatomic, assign) CGFloat fontSizeMultiplier; +@property (nonatomic, assign) CGFloat maxFontSizeMultiplier; +@property (nonatomic, copy, nullable) NSString *fontWeight; +@property (nonatomic, copy, nullable) NSString *fontStyle; +@property (nonatomic, copy, nullable) NSArray *fontVariant; +@property (nonatomic, assign) BOOL allowFontScaling; +@property (nonatomic, assign) CGFloat letterSpacing; +// Paragraph Styles +@property (nonatomic, assign) CGFloat lineHeight; +@property (nonatomic, assign) NSTextAlignment alignment; +@property (nonatomic, assign) NSWritingDirection baseWritingDirection; +// Decoration +@property (nonatomic, strong, nullable) UIColor *textDecorationColor; +@property (nonatomic, assign) NSUnderlineStyle textDecorationStyle; +@property (nonatomic, assign) RCTTextDecorationLineType textDecorationLine; +// Shadow +@property (nonatomic, assign) CGSize textShadowOffset; +@property (nonatomic, assign) CGFloat textShadowRadius; +@property (nonatomic, strong, nullable) UIColor *textShadowColor; +// Special +@property (nonatomic, assign) BOOL isHighlighted; +@property (nonatomic, strong, nullable) NSNumber *tag; +@property (nonatomic, assign) UIUserInterfaceLayoutDirection layoutDirection; +@property (nonatomic, assign) RCTTextTransform textTransform; + +#pragma mark - Inheritance + +- (void)applyTextAttributes:(RCTTextAttributes *)textAttributes; + +#pragma mark - Adapters + +/** + * Text attributes in NSAttributedString terms. + */ +- (NSDictionary *)effectiveTextAttributes; + +/** + * Constructed paragraph style. + */ +- (NSParagraphStyle *_Nullable)effectiveParagraphStyle; + +/** + * Constructed font. + */ +- (UIFont *)effectiveFont; + +/** + * Font size multiplier reflects `allowFontScaling`, `fontSizeMultiplier`, and `maxFontSizeMultiplier`. + */ +- (CGFloat)effectiveFontSizeMultiplier; + +/** + * Foreground and background colors with opacity and right defaults. + */ +- (UIColor *)effectiveForegroundColor; +- (UIColor *)effectiveBackgroundColor; + +/** + * Text transformed per 'none', 'uppercase', 'lowercase', 'capitalize' + */ +- (NSString *)applyTextAttributesToText:(NSString *)text; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTextDecorationLineType.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTextDecorationLineType.h new file mode 100644 index 0000000..ddf9195 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTextDecorationLineType.h @@ -0,0 +1,15 @@ +/* + * 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 + +typedef NS_ENUM(NSInteger, RCTTextDecorationLineType) { + RCTTextDecorationLineTypeNone = 0, + RCTTextDecorationLineTypeUnderline, + RCTTextDecorationLineTypeStrikethrough, + RCTTextDecorationLineTypeUnderlineStrikethrough, +}; diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTextSelection.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTextSelection.h new file mode 100644 index 0000000..0bb7583 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTextSelection.h @@ -0,0 +1,26 @@ +/* + * 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 + +/** + * Object containing information about a TextInput's selection. + */ +@interface RCTTextSelection : NSObject + +@property (nonatomic, assign, readonly) NSInteger start; +@property (nonatomic, assign, readonly) NSInteger end; + +- (instancetype)initWithStart:(NSInteger)start end:(NSInteger)end; + +@end + +@interface RCTConvert (RCTTextSelection) + ++ (RCTTextSelection *)RCTTextSelection:(id)json; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTextShadowView.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTextShadowView.h new file mode 100644 index 0000000..d364db5 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTextShadowView.h @@ -0,0 +1,28 @@ +/* + * 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 + +#import "RCTBaseTextShadowView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTTextShadowView : RCTBaseTextShadowView + +- (instancetype)initWithBridge:(RCTBridge *)bridge; + +@property (nonatomic, assign) NSInteger maximumNumberOfLines; +@property (nonatomic, assign) NSLineBreakMode lineBreakMode; +@property (nonatomic, assign) BOOL adjustsFontSizeToFit; +@property (nonatomic, assign) CGFloat minimumFontScale; +@property (nonatomic, copy) RCTDirectEventBlock onTextLayout; + +- (void)uiManagerWillPerformMounting; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTextTransform.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTextTransform.h new file mode 100644 index 0000000..15d328c --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTextTransform.h @@ -0,0 +1,16 @@ +/* + * 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 + +typedef NS_ENUM(NSInteger, RCTTextTransform) { + RCTTextTransformUndefined = 0, + RCTTextTransformNone, + RCTTextTransformCapitalize, + RCTTextTransformUppercase, + RCTTextTransformLowercase, +}; diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTextView.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTextView.h new file mode 100644 index 0000000..5928b70 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTextView.h @@ -0,0 +1,24 @@ +/* + * 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 + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTTextView : UIView + +@property (nonatomic, assign) BOOL selectable; + +- (void)setTextStorage:(NSTextStorage *)textStorage + contentFrame:(CGRect)contentFrame + descendantViews:(NSArray *)descendantViews; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTextViewManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTextViewManager.h new file mode 100644 index 0000000..446a5db --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTextViewManager.h @@ -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 + +#import "RCTBaseTextViewManager.h" + +@interface RCTTextViewManager : RCTBaseTextViewManager + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTiming.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTiming.h new file mode 100644 index 0000000..7c197aa --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTiming.h @@ -0,0 +1,32 @@ +/* + * 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 + +#import +#import +#import +#import + +@protocol RCTTimingDelegate + +- (void)callTimers:(NSArray *)timers; +- (void)immediatelyCallTimer:(nonnull NSNumber *)callbackID; +- (void)callIdleCallbacks:(nonnull NSNumber *)absoluteFrameStartMS; + +@end + +@interface RCTTiming : NSObject + +- (instancetype)initWithDelegate:(id)delegate; +- (void)createTimerForNextFrame:(nonnull NSNumber *)callbackID + duration:(NSTimeInterval)jsDuration + jsSchedulingTime:(NSDate *)jsSchedulingTime + repeats:(BOOL)repeats; +- (void)deleteTimer:(double)timerID; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTouchEvent.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTouchEvent.h new file mode 100644 index 0000000..9f3cc4f --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTouchEvent.h @@ -0,0 +1,23 @@ +/* + * 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 + +#import + +/** + * Represents a touch event, which may be composed of several touches (one for every finger). + * For more information on contents of passed data structures see RCTTouchHandler. + */ +@interface RCTTouchEvent : NSObject + +- (instancetype)initWithEventName:(NSString *)eventName + reactTag:(NSNumber *)reactTag + reactTouches:(NSArray *)reactTouches + changedIndexes:(NSArray *)changedIndexes + coalescingKey:(uint16_t)coalescingKey NS_DESIGNATED_INITIALIZER; +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTouchHandler.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTouchHandler.h new file mode 100644 index 0000000..8481a27 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTouchHandler.h @@ -0,0 +1,23 @@ +/* + * 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 + +#import + +@class RCTBridge; + +@interface RCTTouchHandler : UIGestureRecognizer + +- (instancetype)initWithBridge:(RCTBridge *)bridge NS_DESIGNATED_INITIALIZER; + +- (void)attachToView:(UIView *)view; +- (void)detachFromView:(UIView *)view; + +- (void)cancel; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTrackingAnimatedNode.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTrackingAnimatedNode.h new file mode 100644 index 0000000..27d61fa --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTrackingAnimatedNode.h @@ -0,0 +1,13 @@ +/* + * 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 "RCTAnimatedNode.h" + + +@interface RCTTrackingAnimatedNode : RCTAnimatedNode + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTransformAnimatedNode.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTransformAnimatedNode.h new file mode 100644 index 0000000..fe16bd2 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTTransformAnimatedNode.h @@ -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 "RCTAnimatedNode.h" + +@interface RCTTransformAnimatedNode : RCTAnimatedNode + +- (NSDictionary *)propsDictionary; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTUIImageViewAnimated.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTUIImageViewAnimated.h new file mode 100644 index 0000000..9af8d4e --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTUIImageViewAnimated.h @@ -0,0 +1,13 @@ +/* + * 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 +#import + +@interface RCTUIImageViewAnimated : UIImageView + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTUIManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTUIManager.h new file mode 100644 index 0000000..65309cc --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTUIManager.h @@ -0,0 +1,174 @@ +/* + * 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 + +#import +#import +#import +#import +#import + +/** + * Posted right before re-render happens. This is a chance for views to invalidate their state so + * next render cycle will pick up updated views and layout appropriately. + */ +RCT_EXTERN NSString *const RCTUIManagerWillUpdateViewsDueToContentSizeMultiplierChangeNotification; + +@class RCTLayoutAnimationGroup; +@class RCTUIManagerObserverCoordinator; + +/** + * The RCTUIManager is the module responsible for updating the view hierarchy. + */ +@interface RCTUIManager : NSObject + +/** + * Register a root view tag and creates corresponding `rootView` and + * `rootShadowView`. + */ +- (void)registerRootViewTag:(NSNumber *)rootTag; + +/** + * Register a root view with the RCTUIManager. + */ +- (void)registerRootView:(UIView *)rootView; + +/** + * Gets the view name associated with a reactTag. + */ +- (NSString *)viewNameForReactTag:(NSNumber *)reactTag; + +/** + * Gets the view associated with a reactTag. + */ +- (UIView *)viewForReactTag:(NSNumber *)reactTag; + +/** + * Gets the shadow view associated with a reactTag. + */ +- (RCTShadowView *)shadowViewForReactTag:(NSNumber *)reactTag; + +/** + * Set the available size (`availableSize` property) for a root view. + * This might be used in response to changes in external layout constraints. + * This value will be directly trasmitted to layout engine and defines how big viewport is; + * this value does not affect root node size style properties. + * Can be considered as something similar to `setSize:forView:` but applicable only for root view. + */ +- (void)setAvailableSize:(CGSize)availableSize forRootView:(UIView *)rootView; + +/** + * Sets local data for a shadow view corresponded with given view. + * In some cases we need a way to specify some environmental data to shadow view + * to improve layout (or do something similar), so `localData` serves these needs. + * For example, any stateful embedded native views may benefit from this. + * Have in mind that this data is not supposed to interfere with the state of + * the shadow view. + * Please respect one-directional data flow of React. + */ +- (void)setLocalData:(NSObject *)localData forView:(UIView *)view; + +/** + * Set the size of a view. This might be in response to a screen rotation + * or some other layout event outside of the React-managed view hierarchy. + */ +- (void)setSize:(CGSize)size forView:(UIView *)view; + +/** + * Set the natural size of a view, which is used when no explicit size is set. + * Use `UIViewNoIntrinsicMetric` to ignore a dimension. + * The `size` must NOT include padding and border. + */ +- (void)setIntrinsicContentSize:(CGSize)intrinsicContentSize forView:(UIView *)view; + +/** + * Sets up layout animation which will perform on next layout pass. + * The animation will affect only one next layout pass. + * Must be called on the main queue. + */ +- (void)setNextLayoutAnimationGroup:(RCTLayoutAnimationGroup *)layoutAnimationGroup; + +/** + * Schedule a block to be executed on the UI thread. Useful if you need to execute + * view logic after all currently queued view updates have completed. + */ +- (void)addUIBlock:(RCTViewManagerUIBlock)block; + +/** + * Schedule a block to be executed on the UI thread. Useful if you need to execute + * view logic before all currently queued view updates have completed. + */ +- (void)prependUIBlock:(RCTViewManagerUIBlock)block; + +/** + * Used by native animated module to bypass the process of updating the values through the shadow + * view hierarchy. This method will directly update native views, which means that updates for + * layout-related propertied won't be handled properly. + * Make sure you know what you're doing before calling this method :) + */ +- (void)synchronouslyUpdateViewOnUIThread:(NSNumber *)reactTag + viewName:(NSString *)viewName + props:(NSDictionary *)props; + +/** + * Given a reactTag from a component, find its root view, if possible. + * Otherwise, this will give back nil. + * + * @param reactTag the component tag + * @param completion the completion block that will hand over the rootView, if any. + * + */ +- (void)rootViewForReactTag:(NSNumber *)reactTag withCompletion:(void (^)(UIView *view))completion; + +/** + * Finds a view that is tagged with nativeID as its nativeID prop + * with the associated rootTag root tag view hierarchy. Returns the + * view if found, nil otherwise. + * + * @param nativeID the id reference to native component relative to root view. + * @param rootTag the react tag of root view hierarchy from which to find the view. + */ +- (UIView *)viewForNativeID:(NSString *)nativeID withRootTag:(NSNumber *)rootTag; + +/** + * Register a view that is tagged with nativeID as its nativeID prop + * + * @param nativeID the id reference to native component relative to root view. + * @param view the view that is tagged with nativeID as its nativeID prop. + */ +- (void)setNativeID:(NSString *)nativeID forView:(UIView *)view; + +/** + * The view that is currently first responder, according to the JS context. + */ ++ (UIView *)JSResponder; + +/** + * In some cases we might want to trigger layout from native side. + * React won't be aware of this, so we need to make sure it happens. + */ +- (void)setNeedsLayout; + +/** + * Dedicated object for subscribing for UIManager events. + * See `RCTUIManagerObserver` protocol for more details. + */ +@property (atomic, retain, readonly) RCTUIManagerObserverCoordinator *observerCoordinator; + +@end + +/** + * This category makes the current RCTUIManager instance available via the + * RCTBridge, which is useful for RCTBridgeModules or RCTViewManagers that + * need to access the RCTUIManager. + */ +@interface RCTBridge (RCTUIManager) + +@property (nonatomic, readonly) RCTUIManager *uiManager; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTUIManagerObserverCoordinator.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTUIManagerObserverCoordinator.h new file mode 100644 index 0000000..f351159 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTUIManagerObserverCoordinator.h @@ -0,0 +1,81 @@ +/* + * 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 + +#import + +typedef dispatch_block_t RCTUIManagerMountingBlock; + +/** + * Allows hooking into UIManager internals. This can be used to execute code at + * specific points during the view updating process. + * New observers must not be added inside observer handlers. + * The particular order of handler invocation is not guaranteed. + * All observer handlers are called on UIManager queue. + */ +@protocol RCTUIManagerObserver + +@optional + +/** + * Called just before the UIManager layout views. + * It allows performing some operation for components which contain custom + * layout logic right before regular Yoga based layout. So, for instance, + * some components which have own React-independent state can compute and cache + * own intrinsic content size (which will be used by Yoga) at this point. + */ +- (void)uiManagerWillPerformLayout:(RCTUIManager *)manager; + +/** + * Called just after the UIManager layout views. + * It allows performing custom layout logic right after regular Yoga based layout. + * So, for instance, this can be used for computing final layout for a component, + * since it has its final frame set by Yoga at this point. + */ +- (void)uiManagerDidPerformLayout:(RCTUIManager *)manager; + +/** + * Called before flushing UI blocks at the end of a batch. + * This is called from the UIManager queue. Can be used to add UI operations in that batch. + */ +- (void)uiManagerWillPerformMounting:(RCTUIManager *)manager; + +/** + * Called right before flushing UI blocks and allows to intercept the mounting process. + * Return `YES` to cancel default execution of the `block` (and perform the + * execution later). + */ +- (BOOL)uiManager:(RCTUIManager *)manager performMountingWithBlock:(RCTUIManagerMountingBlock)block; + +/** + * Called just after flushing UI blocks. + * This is called from the UIManager queue. + */ +- (void)uiManagerDidPerformMounting:(RCTUIManager *)manager; + +@end + +/** + * Simple helper which take care of RCTUIManager's observers. + */ +@interface RCTUIManagerObserverCoordinator : NSObject + +/** + * Add a UIManagerObserver. See the `RCTUIManagerObserver` protocol for more info. + * References to observers are held weakly. + * This method can be called safely from any queue. + */ +- (void)addObserver:(id)observer; + +/** + * Remove a `UIManagerObserver`. + * This method can be called safely from any queue. + */ +- (void)removeObserver:(id)observer; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTUIManagerUtils.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTUIManagerUtils.h new file mode 100644 index 0000000..2bf9f57 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTUIManagerUtils.h @@ -0,0 +1,105 @@ +/* + * 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 + +#import +#import + +/** + * Queues Problem Intro: + * UIManager queue is a special queue because it has a special relationship with + * the Main queue. + * + * This particular relationship comes from two key factors: + * 1. UIManager initiates execution of many blocks on the Main queue; + * 2. In some cases, we want to initiate (and wait for) some UIManager's work *synchronously* from + * the Main queue. + * + * So, how can we meet these criteria? + * "Pseudo UIManager queue" comes to rescue! + * + * "Pseudo UIManager queue" means the safe execution of typical UIManager's work + * on the Main queue while the UIManager queue is explicitly blocked for preventing + * simultaneous/concurrent memory access. + * + * So, how can we technically do this? + * 1. `RCTAssertUIManagerQueue` is okay with execution on both actual UIManager and + * Pseudo UIManager queues. + * 2. Both `RCTExecuteOnUIManagerQueue` and `RCTUnsafeExecuteOnUIManagerQueueSync` + * execute given block *synchronously* if they were called on actual UIManager + * or Pseudo UIManager queues. + * 3. `RCTExecuteOnMainQueue` executes given block *synchronously* if we already on + * the Main queue. + * 4. `RCTUnsafeExecuteOnUIManagerQueueSync` is smart enough to do the trick: + * It detects calling on the Main queue and in this case, instead of doing + * trivial *synchronous* dispatch, it does: + * - Block the Main queue; + * - Dispatch the special block on UIManager queue to block the queue and + * concurrent memory access; + * - Execute the given block on the Main queue; + * - Unblock the UIManager queue. + * + * Imagine the analogy: We have two queues: the Main one and UIManager one. + * And these queues are two lanes of railway that go in parallel. Then, + * at some point, we merge UIManager lane with the Main lane, and all cars use + * the unified the Main lane. + * And then we split lanes again. + * + * This solution assumes that the code running on UIManager queue will never + * *explicitly* block the Main queue via calling `RCTUnsafeExecuteOnMainQueueSync`. + * Otherwise, it can cause a deadlock. + */ + +/** + * Returns UIManager queue. + */ +RCT_EXTERN dispatch_queue_t RCTGetUIManagerQueue(void); + +/** + * Default name for the UIManager queue. + */ +RCT_EXTERN char *const RCTUIManagerQueueName; + +/** + * Check if we are currently on UIManager queue. + * Please do not use this unless you really know what you're doing. + */ +RCT_EXTERN BOOL RCTIsUIManagerQueue(void); + +/** + * Check if we are currently on Pseudo UIManager queue. + * Please do not use this unless you really know what you're doing. + */ +RCT_EXTERN BOOL RCTIsPseudoUIManagerQueue(void); + +/** + * *Asynchronously* executes the specified block on the UIManager queue. + * Unlike `dispatch_async()` this will execute the block immediately + * if we're already on the UIManager queue. + */ +RCT_EXTERN void RCTExecuteOnUIManagerQueue(dispatch_block_t block); + +/** + * *Synchronously* executes the specified block on the UIManager queue. + * Unlike `dispatch_sync()` this will execute the block immediately + * if we're already on the UIManager queue. + * Please do not use this unless you really know what you're doing. + */ +RCT_EXTERN void RCTUnsafeExecuteOnUIManagerQueueSync(dispatch_block_t block); + +/** + * Convenience macro for asserting that we're running on UIManager queue. + */ +#define RCTAssertUIManagerQueue() \ + RCTAssert( \ + RCTIsUIManagerQueue() || RCTIsPseudoUIManagerQueue(), @"This function must be called on the UIManager queue") + +/** + * Returns new unique root view tag. + */ +RCT_EXTERN NSNumber *RCTAllocateRootViewTag(void); diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTUITextField.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTUITextField.h new file mode 100644 index 0000000..f3b3492 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTUITextField.h @@ -0,0 +1,35 @@ +/* + * 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 + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +/* + * Just regular UITextField... but much better! + */ +@interface RCTUITextField : UITextField + +- (instancetype)initWithCoder:(NSCoder *)decoder NS_UNAVAILABLE; + +@property (nonatomic, weak) id textInputDelegate; + +@property (nonatomic, assign) BOOL caretHidden; +@property (nonatomic, assign) BOOL contextMenuHidden; +@property (nonatomic, assign, readonly) BOOL textWasPasted; +@property (nonatomic, strong, nullable) UIColor *placeholderColor; +@property (nonatomic, assign) UIEdgeInsets textContainerInset; +@property (nonatomic, assign, getter=isEditable) BOOL editable; +@property (nonatomic, getter=isScrollEnabled) BOOL scrollEnabled; +@property (nonatomic, strong, nullable) NSString *inputAccessoryViewID; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTUITextView.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTUITextView.h new file mode 100644 index 0000000..5cb03ee --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTUITextView.h @@ -0,0 +1,42 @@ +/* + * 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 + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +/* + * Just regular UITextView... but much better! + */ +@interface RCTUITextView : UITextView + +- (instancetype)initWithFrame:(CGRect)frame textContainer:(nullable NSTextContainer *)textContainer NS_UNAVAILABLE; +- (instancetype)initWithCoder:(NSCoder *)decoder NS_UNAVAILABLE; + +@property (nonatomic, weak) id textInputDelegate; + +@property (nonatomic, assign) BOOL contextMenuHidden; +@property (nonatomic, assign, readonly) BOOL textWasPasted; +@property (nonatomic, copy, nullable) NSString *placeholder; +@property (nonatomic, strong, nullable) UIColor *placeholderColor; + +@property (nonatomic, assign) CGFloat preferredMaxLayoutWidth; + +// The `clearButtonMode` property actually is not supported yet; +// it's declared here only to conform to the interface. +@property (nonatomic, assign) UITextFieldViewMode clearButtonMode; + +@property (nonatomic, assign) BOOL caretHidden; + +@property (nonatomic, strong, nullable) NSString *inputAccessoryViewID; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTUIUtils.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTUIUtils.h new file mode 100644 index 0000000..14fadee --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTUIUtils.h @@ -0,0 +1,34 @@ +/* + * 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 +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +#ifdef __cplusplus +extern "C" { +#endif + +// Get window and screen dimensions +typedef struct { + struct { + CGFloat width, height, scale, fontScale; + } window, screen; +} RCTDimensions; +extern __attribute__((visibility("default"))) RCTDimensions RCTGetDimensions(CGFloat fontScale); + +// Get font size multiplier for font base size (Large) by content size category +extern __attribute__((visibility("default"))) CGFloat RCTGetMultiplierForContentSizeCategory( + UIContentSizeCategory category); + +#ifdef __cplusplus +} +#endif + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTURLRequestDelegate.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTURLRequestDelegate.h new file mode 100644 index 0000000..8a9e03f --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTURLRequestDelegate.h @@ -0,0 +1,40 @@ +/* + * 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 + +/** + * An abstract interface used by request handler modules to send + * data back over the bridge back to JS. + */ +@protocol RCTURLRequestDelegate + +/** + * Call this when you send request data to the server. This is used to track + * upload progress, so should be called multiple times for large request bodies. + */ +- (void)URLRequest:(id)requestToken didSendDataWithProgress:(int64_t)bytesSent; + +/** + * Call this when you first receives a response from the server. This should + * include response headers, etc. + */ +- (void)URLRequest:(id)requestToken didReceiveResponse:(NSURLResponse *)response; + +/** + * Call this when you receive data from the server. This can be called multiple + * times with partial data chunks, or just once with the full data packet. + */ +- (void)URLRequest:(id)requestToken didReceiveData:(NSData *)data; + +/** + * Call this when the request is complete and/or if an error is encountered. + * For a successful request, the error parameter should be nil. + */ +- (void)URLRequest:(id)requestToken didCompleteWithError:(NSError *)error; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTURLRequestHandler.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTURLRequestHandler.h new file mode 100644 index 0000000..89f48f5 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTURLRequestHandler.h @@ -0,0 +1,52 @@ +/* + * 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 +#import + +/** + * Provides the interface needed to register a request handler. Request handlers + * are also bridge modules, so should be registered using RCT_EXPORT_MODULE(). + */ +@protocol RCTURLRequestHandler + +/** + * Indicates whether this handler is capable of processing the specified + * request. Typically the handler would examine the scheme/protocol of the + * request URL (and possibly the HTTP method and/or headers) to determine this. + */ +- (BOOL)canHandleRequest:(NSURLRequest *)request; + +/** + * Send a network request and call the delegate with the response data. The + * method should return a token, which can be anything, including the request + * itself. This will be used later to refer to the request in callbacks. The + * `sendRequest:withDelegate:` method *must* return before calling any of the + * delegate methods, or the delegate won't recognize the token. + * Following common Objective-C pattern, `delegate` will not be retained. + */ +- (id)sendRequest:(NSURLRequest *)request withDelegate:(id)delegate; + +@optional + +/** + * Not all request types can be cancelled, but this method can be implemented + * for ones that can. It should be used to free up any resources on ongoing + * processes associated with the request. + */ +- (void)cancelRequest:(id)requestToken; + +/** + * If more than one RCTURLRequestHandler responds YES to `canHandleRequest:` + * then `handlerPriority` is used to determine which one to use. The handler + * with the highest priority will be selected. Default priority is zero. If + * two or more valid handlers have the same priority, the selection order is + * undefined. + */ +- (float)handlerPriority; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTUtils.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTUtils.h new file mode 100644 index 0000000..ecb7915 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTUtils.h @@ -0,0 +1,189 @@ +/* + * 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 + +#import +#import +#import + +#import +#import + +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 if we are currently on the main queue (not to be confused with +// the main thread, which is not necessarily 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); + +// Legacy function to execute the specified block on the main queue synchronously. +// Please do not use this unless you know what you're doing. +RCT_EXTERN void RCTUnsafeExecuteOnMainQueueSync(dispatch_block_t block); + +// Get screen scale, can be only used on main +RCT_EXTERN void RCTComputeScreenScale(void); + +// Get screen metrics in a thread-safe way +RCT_EXTERN CGFloat RCTScreenScale(void); +RCT_EXTERN CGFloat RCTFontSizeMultiplier(void); +RCT_EXTERN CGSize RCTScreenSize(void); +RCT_EXTERN CGSize RCTViewportSize(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); +RCT_EXTERN void RCTSwapInstanceMethodWithBlock(Class cls, SEL original, id replacementBlock, SEL replacementSelector); + +// 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 + *RCTMakeError(NSString *message, id __nullable toStringify, NSDictionary *__nullable extraData); +RCT_EXTERN NSDictionary * +RCTMakeAndLogError(NSString *message, id __nullable toStringify, NSDictionary *__nullable extraData); +RCT_EXTERN NSDictionary *RCTJSErrorFromNSError(NSError *error); +RCT_EXTERN NSDictionary + *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); + +// Creates an NSError from given an NSException +RCT_EXTERN NSError *RCTErrorWithNSException(NSException *exception); + +// Convert nil values to NSNull, and vice-versa +#define RCTNullIfNil(value) ((value) ?: (id)kCFNull) +#define RCTNilIfNull(value) \ + ({ \ + __typeof__(value) t = (value); \ + (id) t == (id)kCFNull ? (__typeof(value))nil : t; \ + }) + +// Convert NaN or infinite values to zero, as these aren't JSON-safe +RCT_EXTERN double RCTZeroIfNaN(double value); + +// Returns `0` and log special warning if value is NaN or INF. +RCT_EXTERN double RCTSanitizeNaNValue(double value, NSString *property); + +// 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); + +// Returns the Path of Library directory +RCT_EXTERN NSString *__nullable RCTLibraryPath(void); + +// Returns the relative path within the library for an absolute URL +// (or nil, if the URL does not specify a path within the Library directory) +RCT_EXTERN NSString *__nullable RCTLibraryPathForURL(NSURL *__nullable URL); + +// Determines if a given image URL refers to a image in bundle +RCT_EXTERN BOOL RCTIsBundleAssetURL(NSURL *__nullable imageURL); + +// Determines if a given image URL refers to a image in library +RCT_EXTERN BOOL RCTIsLibraryAssetURL(NSURL *__nullable imageURL); + +// Determines if a given image URL refers to a local image +RCT_EXTERN BOOL RCTIsLocalAssetURL(NSURL *__nullable imageURL); + +// Returns an UIImage for a local image asset. Returns nil if the URL +// does not correspond to a local asset. +RCT_EXTERN UIImage *__nullable RCTImageFromLocalAssetURL(NSURL *imageURL); + +// Only used in case when RCTImageFromLocalAssetURL fails to get an image +// This method basically checks for the image in the bundle location, instead +// of the CodePush location +RCT_EXTERN UIImage *__nullable RCTImageFromLocalBundleAssetURL(NSURL *imageURL); + +// Creates a new, unique temporary file path with the specified extension +RCT_EXTERN NSString *__nullable RCTTempFilePath(NSString *__nullable extension, NSError **error); + +// Get RGBA components of CGColor +RCT_EXTERN void RCTGetRGBAColorComponents(CGColorRef color, CGFloat rgba[_Nonnull 4]); + +// 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); + +// Get a human readable type string from an NSObject. For example NSString becomes string +RCT_EXTERN NSString *RCTHumanReadableType(NSObject *obj); + +// 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); + +// Given a string, drop common RN prefixes (RCT, RK, etc.) +RCT_EXTERN NSString *RCTDropReactPrefixes(NSString *s); + +RCT_EXTERN BOOL RCTUIManagerTypeForTagIsFabric(NSNumber *reactTag); + +RCT_EXTERN BOOL RCTValidateTypeOfViewCommandArgument( + NSObject *obj, + id expectedClass, + NSString const *expectedType, + NSString const *componentName, + NSString const *commandName, + NSString const *argPos); + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTUtilsUIOverride.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTUtilsUIOverride.h new file mode 100644 index 0000000..c6988c6 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTUtilsUIOverride.h @@ -0,0 +1,19 @@ +/* + * 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 +#import + +@interface RCTUtilsUIOverride : NSObject +/** + Set the global presented view controller instance override. + */ ++ (void)setPresentedViewController:(UIViewController *)presentedViewController; ++ (UIViewController *)presentedViewController; ++ (BOOL)hasPresentedViewController; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTValueAnimatedNode.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTValueAnimatedNode.h new file mode 100644 index 0000000..a388d00 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTValueAnimatedNode.h @@ -0,0 +1,30 @@ +/* + * 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 + +#import "RCTAnimatedNode.h" + +@class RCTValueAnimatedNode; + +@protocol RCTValueAnimatedNodeObserver + +- (void)animatedNode:(RCTValueAnimatedNode *)node didUpdateValue:(CGFloat)value; + +@end + +@interface RCTValueAnimatedNode : RCTAnimatedNode + +- (void)setOffset:(CGFloat)offset; +- (void)flattenOffset; +- (void)extractOffset; + +@property (nonatomic, assign) CGFloat value; +@property (nonatomic, strong) id animatedObject; +@property (nonatomic, weak) id valueObserver; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTVersion.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTVersion.h new file mode 100644 index 0000000..5bc858d --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTVersion.h @@ -0,0 +1,17 @@ +/* + * 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 + +#import + +RCT_EXTERN NSString *const RCTVersionMajor; +RCT_EXTERN NSString *const RCTVersionMinor; +RCT_EXTERN NSString *const RCTVersionPatch; +RCT_EXTERN NSString *const RCTVersionPrerelease; + +RCT_EXTERN NSDictionary *RCTGetReactNativeVersion(void); diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTVibration.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTVibration.h new file mode 100644 index 0000000..1f6ced3 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTVibration.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTVibration : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTVibrationPlugins.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTVibrationPlugins.h new file mode 100644 index 0000000..0676192 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTVibrationPlugins.h @@ -0,0 +1,40 @@ +/** + * 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 an internal plugin build system + */ + +#ifdef RN_DISABLE_OSS_PLUGIN_HEADER + +// FB Internal: FBRCTVibrationPlugins.h is autogenerated by the build system. +#import + +#else + +// OSS-compatibility layer + +#import + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wreturn-type-c-linkage" + +#ifdef __cplusplus +extern "C" { +#endif + +// RCTTurboModuleManagerDelegate should call this to resolve module classes. +Class RCTVibrationClassProvider(const char *name); + +// Lookup functions +Class RCTVibrationCls(void) __attribute__((used)); + +#ifdef __cplusplus +} +#endif + +#pragma GCC diagnostic pop + +#endif // RN_DISABLE_OSS_PLUGIN_HEADER diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTView.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTView.h new file mode 100644 index 0000000..c82242d --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTView.h @@ -0,0 +1,114 @@ +/* + * 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 + +#import +#import +#import +#import + +extern const UIAccessibilityTraits SwitchAccessibilityTrait; + +@protocol RCTAutoInsetsProtocol; + +@class RCTView; + +@interface RCTView : UIView + +/** + * Accessibility event handlers + */ +@property (nonatomic, copy) RCTDirectEventBlock onAccessibilityAction; +@property (nonatomic, copy) RCTDirectEventBlock onAccessibilityTap; +@property (nonatomic, copy) RCTDirectEventBlock onMagicTap; +@property (nonatomic, copy) RCTDirectEventBlock onAccessibilityEscape; + +/** + * Used to control how touch events are processed. + */ +@property (nonatomic, assign) RCTPointerEvents pointerEvents; + ++ (void)autoAdjustInsetsForView:(UIView *)parentView + withScrollView:(UIScrollView *)scrollView + updateOffset:(BOOL)updateOffset; + +/** + * Find the first view controller whose view, or any subview is the specified view. + */ ++ (UIEdgeInsets)contentInsetsForView:(UIView *)curView; + +/** + * Layout direction of the view. + * This is inherited from UIView+React, but we override it here + * to improve performance and make subclassing/overriding possible/easier. + */ +@property (nonatomic, assign) UIUserInterfaceLayoutDirection reactLayoutDirection; + +/** + * This is an optimization used to improve performance + * for large scrolling views with many subviews, such as a + * list or table. If set to YES, any clipped subviews will + * be removed from the view hierarchy whenever -updateClippedSubviews + * is called. This would typically be triggered by a scroll event + */ +@property (nonatomic, assign) BOOL removeClippedSubviews; + +/** + * Hide subviews if they are outside the view bounds. + * This is an optimisation used predominantly with RKScrollViews + * but it is applied recursively to all subviews that have + * removeClippedSubviews set to YES + */ +- (void)updateClippedSubviews; + +/** + * Border radii. + */ +@property (nonatomic, assign) CGFloat borderRadius; +@property (nonatomic, assign) CGFloat borderTopLeftRadius; +@property (nonatomic, assign) CGFloat borderTopRightRadius; +@property (nonatomic, assign) CGFloat borderTopStartRadius; +@property (nonatomic, assign) CGFloat borderTopEndRadius; +@property (nonatomic, assign) CGFloat borderBottomLeftRadius; +@property (nonatomic, assign) CGFloat borderBottomRightRadius; +@property (nonatomic, assign) CGFloat borderBottomStartRadius; +@property (nonatomic, assign) CGFloat borderBottomEndRadius; + +/** + * Border colors (actually retained). + */ +@property (nonatomic, strong) UIColor *borderTopColor; +@property (nonatomic, strong) UIColor *borderRightColor; +@property (nonatomic, strong) UIColor *borderBottomColor; +@property (nonatomic, strong) UIColor *borderLeftColor; +@property (nonatomic, strong) UIColor *borderStartColor; +@property (nonatomic, strong) UIColor *borderEndColor; +@property (nonatomic, strong) UIColor *borderColor; + +/** + * Border widths. + */ +@property (nonatomic, assign) CGFloat borderTopWidth; +@property (nonatomic, assign) CGFloat borderRightWidth; +@property (nonatomic, assign) CGFloat borderBottomWidth; +@property (nonatomic, assign) CGFloat borderLeftWidth; +@property (nonatomic, assign) CGFloat borderStartWidth; +@property (nonatomic, assign) CGFloat borderEndWidth; +@property (nonatomic, assign) CGFloat borderWidth; + +/** + * Border styles. + */ +@property (nonatomic, assign) RCTBorderStyle borderStyle; + +/** + * Insets used when hit testing inside this view. + */ +@property (nonatomic, assign) UIEdgeInsets hitTestEdgeInsets; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTViewManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTViewManager.h new file mode 100644 index 0000000..5c1eba4 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTViewManager.h @@ -0,0 +1,118 @@ +/* + * 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 + +#import +#import +#import +#import +#import +#import + +@class RCTBridge; +@class RCTShadowView; +@class RCTSparseArray; +@class RCTUIManager; + +typedef void (^RCTViewManagerUIBlock)(RCTUIManager *uiManager, NSDictionary *viewRegistry); + +@interface RCTViewManager : NSObject + +/** + * The bridge can be used to access both the RCTUIIManager and the RCTEventDispatcher, + * allowing the manager (or the views that it manages) to manipulate the view + * hierarchy and send events back to the JS context. + */ +@property (nonatomic, weak) RCTBridge *bridge; + +/** + * This method instantiates a native view to be managed by the module. Override + * this to return a custom view instance, which may be preconfigured with default + * properties, subviews, etc. This method will be called many times, and should + * return a fresh instance each time. The view module MUST NOT cache the returned + * view and return the same instance for subsequent calls. + */ +- (UIView *)view; + +/** + * This method instantiates a shadow view to be managed by the module. If omitted, + * an ordinary RCTShadowView instance will be created, which is typically fine for + * most view types. As with the -view method, the -shadowView method should return + * a fresh instance each time it is called. + */ +- (RCTShadowView *)shadowView; + +/** + * DEPRECATED: declare properties of type RCTBubblingEventBlock instead + * + * Returns an array of names of events that can be sent by native views. This + * should return bubbling, directly-dispatched event types. The event name + * should not include a prefix such as 'on' or 'top', as this will be applied + * as needed. When subscribing to the event, use the 'Captured' suffix to + * indicate the captured form, or omit the suffix for the bubbling form. + * + * Note that this method is not inherited when you subclass a view module, and + * you should not call [super customBubblingEventTypes] when overriding it. + */ +- (NSArray *)customBubblingEventTypes __deprecated_msg("Use RCTBubblingEventBlock props instead."); + +/** + * This handles the simple case, where JS and native property names match. + */ +#define RCT_EXPORT_VIEW_PROPERTY(name, type) \ + +(NSArray *)propConfig_##name RCT_DYNAMIC \ + { \ + return @[ @ #type ]; \ + } + +/** + * This macro maps a named property to an arbitrary key path in the view. + */ +#define RCT_REMAP_VIEW_PROPERTY(name, keyPath, type) \ + +(NSArray *)propConfig_##name RCT_DYNAMIC \ + { \ + return @[ @ #type, @ #keyPath ]; \ + } + +/** + * This macro can be used when you need to provide custom logic for setting + * view properties. The macro should be followed by a method body, which can + * refer to "json", "view" and "defaultView" to implement the required logic. + */ +#define RCT_CUSTOM_VIEW_PROPERTY(name, type, viewClass) \ + RCT_REMAP_VIEW_PROPERTY(name, __custom__, type) \ + -(void)set_##name : (id)json forView : (viewClass *)view withDefaultView : (viewClass *)defaultView RCT_DYNAMIC + +/** + * This macro is used to map properties to the shadow view, instead of the view. + */ +#define RCT_EXPORT_SHADOW_PROPERTY(name, type) \ + +(NSArray *)propConfigShadow_##name RCT_DYNAMIC \ + { \ + return @[ @ #type ]; \ + } + +/** + * This macro maps a named property to an arbitrary key path in the shadow view. + */ +#define RCT_REMAP_SHADOW_PROPERTY(name, keyPath, type) \ + +(NSArray *)propConfigShadow_##name RCT_DYNAMIC \ + { \ + return @[ @ #type, @ #keyPath ]; \ + } + +/** + * This macro can be used when you need to provide custom logic for setting + * shadow view properties. The macro should be followed by a method body, which can + * refer to "json" and "view". + */ +#define RCT_CUSTOM_SHADOW_PROPERTY(name, type, viewClass) \ + RCT_REMAP_SHADOW_PROPERTY(name, __custom__, type) \ + -(void)set_##name : (id)json forShadowView : (viewClass *)view RCT_DYNAMIC + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTVirtualTextShadowView.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTVirtualTextShadowView.h new file mode 100644 index 0000000..bce9ea8 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTVirtualTextShadowView.h @@ -0,0 +1,12 @@ +/* + * 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 "RCTBaseTextShadowView.h" + +@interface RCTVirtualTextShadowView : RCTBaseTextShadowView + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTVirtualTextViewManager.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTVirtualTextViewManager.h new file mode 100644 index 0000000..91d4f78 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTVirtualTextViewManager.h @@ -0,0 +1,12 @@ +/* + * 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 "RCTBaseTextViewManager.h" + +@interface RCTVirtualTextViewManager : RCTBaseTextViewManager + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTWeakProxy.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTWeakProxy.h new file mode 100644 index 0000000..472f7f0 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTWeakProxy.h @@ -0,0 +1,16 @@ +/* + * 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 + +@interface RCTWeakProxy : NSObject + +@property (nonatomic, weak, readonly) id target; + ++ (instancetype)weakProxyWithTarget:(id)target; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTWeakViewHolder.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTWeakViewHolder.h new file mode 100644 index 0000000..ce39eee --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTWeakViewHolder.h @@ -0,0 +1,19 @@ +/* + * 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. + */ + +/* + * THIS IS A HACK + * This protocol should only be used for Paper ViewManagers which need to + * use the Fabric Interop layer, and also need to reference their created + * views. This protocol allows the view manager to store a weak reference to + * any created views. It will not affect view lifecycle in any way. + */ +@protocol RCTWeakViewHolder + +@property (nonatomic, strong) NSMapTable *weakViews; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTWebSocketExecutor.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTWebSocketExecutor.h new file mode 100644 index 0000000..499664b --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTWebSocketExecutor.h @@ -0,0 +1,19 @@ +/* + * 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 +#import + +#if RCT_DEV // Debug executors are only supported in dev mode + +@interface RCTWebSocketExecutor : NSObject + +- (instancetype)initWithURL:(NSURL *)URL; + +@end + +#endif diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTWebSocketModule.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTWebSocketModule.h new file mode 100644 index 0000000..c1a48d3 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTWebSocketModule.h @@ -0,0 +1,35 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +@protocol RCTWebSocketContentHandler + +- (id)processWebsocketMessage:(id __nullable)message + forSocketID:(NSNumber *)socketID + withType:(NSString *__nonnull __autoreleasing *__nonnull)type; + +@end + +@interface RCTWebSocketModule : RCTEventEmitter + +// Register a custom handler for a specific websocket. The handler will be strongly held by the WebSocketModule. +- (void)setContentHandler:(id __nullable)handler forSocketID:(NSNumber *)socketID; + +- (void)sendData:(NSData *)data forSocketID:(nonnull NSNumber *)socketID; + +@end + +@interface RCTBridge (RCTWebSocketModule) + +- (RCTWebSocketModule *)webSocketModule; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTWrapperViewController.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTWrapperViewController.h new file mode 100644 index 0000000..dc9b0d6 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/RCTWrapperViewController.h @@ -0,0 +1,16 @@ +/* + * 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 + +@class RCTWrapperViewController; + +@interface RCTWrapperViewController : UIViewController + +- (instancetype)initWithContentView:(UIView *)contentView NS_DESIGNATED_INITIALIZER; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/UIView+Private.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/UIView+Private.h new file mode 100644 index 0000000..a5cb440 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/UIView+Private.h @@ -0,0 +1,17 @@ +/* + * 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 + +@interface UIView (Private) + +// remove clipped subviews implementation +- (void)react_remountAllSubviews; +- (void)react_updateClippedSubviewsWithClipRect:(CGRect)clipRect relativeToView:(UIView *)clipView; +- (UIView *)react_findClipView; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/UIView+React.h b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/UIView+React.h new file mode 100644 index 0000000..67c665b --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64/Headers/React/UIView+React.h @@ -0,0 +1,130 @@ +/* + * 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 + +#import +#import + +@class RCTShadowView; + +@interface UIView (React) + +/** + * RCTComponent interface. + */ +- (NSArray *)reactSubviews NS_REQUIRES_SUPER; +- (UIView *)reactSuperview NS_REQUIRES_SUPER; +- (void)insertReactSubview:(UIView *)subview atIndex:(NSInteger)atIndex NS_REQUIRES_SUPER; +- (void)removeReactSubview:(UIView *)subview NS_REQUIRES_SUPER; + +/** + * The native id of the view, used to locate view from native codes + */ +@property (nonatomic, copy) NSString *nativeID; + +/** + * Determines whether or not a view should ignore inverted colors or not. Used to set + * UIView property accessibilityIgnoresInvertColors in iOS 11+. + */ +@property (nonatomic, assign) BOOL shouldAccessibilityIgnoresInvertColors; + +/** + * Layout direction of the view. + * Internally backed to `semanticContentAttribute` property. + * Defaults to `LeftToRight` in case of ambiguity. + */ +@property (nonatomic, assign) UIUserInterfaceLayoutDirection reactLayoutDirection; + +/** + * Yoga `display` style property. Can be `flex` or `none`. + * Defaults to `flex`. + * May be used to temporary hide the view in a very efficient way. + */ +@property (nonatomic, assign) YGDisplay reactDisplay; + +/** + * The z-index of the view. + */ +@property (nonatomic, assign) NSInteger reactZIndex; + +/** + * Subviews sorted by z-index. Note that this method doesn't do any caching (yet) + * and sorts all the views each call. + */ +- (NSArray *)reactZIndexSortedSubviews; + +/** + * Updates the subviews array based on the reactSubviews. Default behavior is + * to insert the sortedReactSubviews into the UIView. + */ +- (void)didUpdateReactSubviews; + +/** + * Called each time props have been set. + * The default implementation does nothing. + */ +- (void)didSetProps:(NSArray *)changedProps; + +/** + * Used by the UIIManager to set the view frame. + * May be overridden to disable animation, etc. + */ +- (void)reactSetFrame:(CGRect)frame; + +/** + * This method finds and returns the containing view controller for the view. + */ +- (UIViewController *)reactViewController; + +/** + * This method attaches the specified controller as a child of the + * the owning view controller of this view. Returns NO if no view + * controller is found (which may happen if the view is not currently + * attached to the view hierarchy). + */ +- (void)reactAddControllerToClosestParent:(UIViewController *)controller; + +/** + * Focus manipulation. + */ +- (void)reactFocus; +- (void)reactFocusIfNeeded; +- (void)reactBlur; + +/** + * Useful properties for computing layout. + */ +@property (nonatomic, readonly) UIEdgeInsets reactBorderInsets; +@property (nonatomic, readonly) UIEdgeInsets reactPaddingInsets; +@property (nonatomic, readonly) UIEdgeInsets reactCompoundInsets; +@property (nonatomic, readonly) CGRect reactContentFrame; + +/** + * The (sub)view which represents this view in terms of accessibility. + * ViewManager will apply all accessibility properties directly to this view. + * May be overridden in view subclass which needs to be accessiblitywise + * transparent in favour of some subview. + * Defaults to `self`. + */ +@property (nonatomic, readonly) UIView *reactAccessibilityElement; + +/** + * Accessibility properties + */ +@property (nonatomic, copy) NSString *accessibilityRole; +@property (nonatomic, copy) NSDictionary *accessibilityState; +@property (nonatomic, copy) NSArray *accessibilityActions; +@property (nonatomic, copy) NSDictionary *accessibilityValueInternal; + +/** + * Used in debugging to get a description of the view hierarchy rooted at + * the current view. + */ +- (NSString *)react_recursiveDescription; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64/libReact-Core.a b/Frameworks/React-Core.xcframework/ios-arm64/libReact-Core.a new file mode 100644 index 0000000..f3383e4 Binary files /dev/null and b/Frameworks/React-Core.xcframework/ios-arm64/libReact-Core.a differ diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/CoreModulesPlugins.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/CoreModulesPlugins.h new file mode 100644 index 0000000..0dd2130 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/CoreModulesPlugins.h @@ -0,0 +1,64 @@ +/** + * 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 an internal plugin build system + */ + +#ifdef RN_DISABLE_OSS_PLUGIN_HEADER + +// FB Internal: FBCoreModulesPlugins.h is autogenerated by the build system. +#import + +#else + +// OSS-compatibility layer + +#import + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wreturn-type-c-linkage" + +#ifdef __cplusplus +extern "C" { +#endif + +// RCTTurboModuleManagerDelegate should call this to resolve module classes. +Class RCTCoreModulesClassProvider(const char *name); + +// Lookup functions +Class RCTAccessibilityManagerCls(void) __attribute__((used)); +Class RCTAppearanceCls(void) __attribute__((used)); +Class RCTDeviceInfoCls(void) __attribute__((used)); +Class RCTExceptionsManagerCls(void) __attribute__((used)); +Class RCTPlatformCls(void) __attribute__((used)); +Class RCTClipboardCls(void) __attribute__((used)); +Class RCTI18nManagerCls(void) __attribute__((used)); +Class RCTSourceCodeCls(void) __attribute__((used)); +Class RCTActionSheetManagerCls(void) __attribute__((used)); +Class RCTAlertManagerCls(void) __attribute__((used)); +Class RCTAsyncLocalStorageCls(void) __attribute__((used)); +Class RCTTimingCls(void) __attribute__((used)); +Class RCTStatusBarManagerCls(void) __attribute__((used)); +Class RCTKeyboardObserverCls(void) __attribute__((used)); +Class RCTAppStateCls(void) __attribute__((used)); +Class RCTPerfMonitorCls(void) __attribute__((used)); +Class RCTDevMenuCls(void) __attribute__((used)); +Class RCTDevSettingsCls(void) __attribute__((used)); +Class RCTRedBoxCls(void) __attribute__((used)); +Class RCTLogBoxCls(void) __attribute__((used)); +Class RCTWebSocketExecutorCls(void) __attribute__((used)); +Class RCTWebSocketModuleCls(void) __attribute__((used)); +Class RCTDevLoadingViewCls(void) __attribute__((used)); +Class RCTDevSplitBundleLoaderCls(void) __attribute__((used)); +Class RCTEventDispatcherCls(void) __attribute__((used)); + +#ifdef __cplusplus +} +#endif + +#pragma GCC diagnostic pop + +#endif // RN_DISABLE_OSS_PLUGIN_HEADER diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/NSTextStorage+FontScaling.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/NSTextStorage+FontScaling.h new file mode 100644 index 0000000..61b1634 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/NSTextStorage+FontScaling.h @@ -0,0 +1,20 @@ +/* + * 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 + +@interface NSTextStorage (FontScaling) + +- (void)scaleFontSizeToFitSize:(CGSize)size + minimumFontSize:(CGFloat)minimumFontSize + maximumFontSize:(CGFloat)maximumFontSize; + +- (void)scaleFontSizeWithRatio:(CGFloat)ratio + minimumFontSize:(CGFloat)minimumFontSize + maximumFontSize:(CGFloat)maximumFontSize; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAccessibilityManager+Internal.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAccessibilityManager+Internal.h new file mode 100644 index 0000000..e01e800 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAccessibilityManager+Internal.h @@ -0,0 +1,24 @@ +/* + * 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 "RCTAccessibilityManager.h" + +#import + +NS_ASSUME_NONNULL_BEGIN + +RCT_EXTERN_C_BEGIN + +// Only to be used for testing and internal tooling. Do not use this in +// production. +void RCTAccessibilityManagerSetIsVoiceOverEnabled( + RCTAccessibilityManager *accessibiltyManager, + BOOL isVoiceOverEnabled); + +RCT_EXTERN_C_END + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAccessibilityManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAccessibilityManager.h new file mode 100644 index 0000000..7b5a132 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAccessibilityManager.h @@ -0,0 +1,35 @@ +/* + * 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 + +#import +#import + +extern NSString *const RCTAccessibilityManagerDidUpdateMultiplierNotification; // posted when multiplier is changed + +@interface RCTAccessibilityManager : NSObject + +@property (nonatomic, readonly) CGFloat multiplier; + +/// map from UIKit categories to multipliers +@property (nonatomic, copy) NSDictionary *multipliers; + +@property (nonatomic, assign) BOOL isBoldTextEnabled; +@property (nonatomic, assign) BOOL isGrayscaleEnabled; +@property (nonatomic, assign) BOOL isInvertColorsEnabled; +@property (nonatomic, assign) BOOL isReduceMotionEnabled; +@property (nonatomic, assign) BOOL isReduceTransparencyEnabled; +@property (nonatomic, assign) BOOL isVoiceOverEnabled; + +@end + +@interface RCTBridge (RCTAccessibilityManager) + +@property (nonatomic, readonly) RCTAccessibilityManager *accessibilityManager; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTActionSheetManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTActionSheetManager.h new file mode 100644 index 0000000..858afcf --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTActionSheetManager.h @@ -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 + +#import + +@interface RCTActionSheetManager : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTActivityIndicatorView.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTActivityIndicatorView.h new file mode 100644 index 0000000..62d5f32 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTActivityIndicatorView.h @@ -0,0 +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. + */ + +#import + +@interface RCTActivityIndicatorView : UIActivityIndicatorView +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTActivityIndicatorViewManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTActivityIndicatorViewManager.h new file mode 100644 index 0000000..61bbd72 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTActivityIndicatorViewManager.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +@interface RCTConvert (UIActivityIndicatorView) + ++ (UIActivityIndicatorViewStyle)UIActivityIndicatorViewStyle:(id)json; + +@end + +@interface RCTActivityIndicatorViewManager : RCTViewManager + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAdditionAnimatedNode.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAdditionAnimatedNode.h new file mode 100644 index 0000000..50f3bc1 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAdditionAnimatedNode.h @@ -0,0 +1,12 @@ +/* + * 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 "RCTValueAnimatedNode.h" + +@interface RCTAdditionAnimatedNode : RCTValueAnimatedNode + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAlertController.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAlertController.h new file mode 100644 index 0000000..f5c206c --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAlertController.h @@ -0,0 +1,15 @@ +/* + * 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 + +@interface RCTAlertController : UIAlertController + +- (void)show:(BOOL)animated completion:(void (^)(void))completion; +- (void)hide; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAlertManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAlertManager.h new file mode 100644 index 0000000..8ea1d9b --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAlertManager.h @@ -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 + +#import +#import + +typedef NS_ENUM(NSInteger, RCTAlertViewStyle) { + RCTAlertViewStyleDefault = 0, + RCTAlertViewStyleSecureTextInput, + RCTAlertViewStylePlainTextInput, + RCTAlertViewStyleLoginAndPasswordInput +}; + +@interface RCTAlertManager : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAnimatedImage.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAnimatedImage.h new file mode 100644 index 0000000..933a492 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAnimatedImage.h @@ -0,0 +1,21 @@ +/* + * 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 + +@protocol RCTAnimatedImage +@property (nonatomic, assign, readonly) NSUInteger animatedImageFrameCount; +@property (nonatomic, assign, readonly) NSUInteger animatedImageLoopCount; + +- (nullable UIImage *)animatedImageFrameAtIndex:(NSUInteger)index; +- (NSTimeInterval)animatedImageDurationAtIndex:(NSUInteger)index; + +@end + +@interface RCTAnimatedImage : UIImage + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAnimatedNode.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAnimatedNode.h new file mode 100644 index 0000000..24c0fb3 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAnimatedNode.h @@ -0,0 +1,51 @@ +/* + * 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 + +@class RCTNativeAnimatedNodesManager; + +@interface RCTAnimatedNode : NSObject + +- (instancetype)initWithTag:(NSNumber *)tag + config:(NSDictionary *)config NS_DESIGNATED_INITIALIZER; + +@property (nonatomic, readonly) NSNumber *nodeTag; +@property (nonatomic, weak) RCTNativeAnimatedNodesManager *manager; +@property (nonatomic, copy, readonly) NSDictionary *config; + +@property (nonatomic, copy, readonly) NSMapTable *childNodes; +@property (nonatomic, copy, readonly) NSMapTable *parentNodes; + +@property (nonatomic, readonly) BOOL needsUpdate; + +-(BOOL)isManagedByFabric; + +/** + * Marks a node and its children as needing update. + */ +- (void)setNeedsUpdate NS_REQUIRES_SUPER; + +/** + * The node will update its value if necessary and only after its parents have updated. + */ +- (void)updateNodeIfNecessary NS_REQUIRES_SUPER; + +/** + * Where the actual update code lives. Called internally from updateNodeIfNecessary + */ +- (void)performUpdate NS_REQUIRES_SUPER; + +- (void)addChild:(RCTAnimatedNode *)child NS_REQUIRES_SUPER; +- (void)removeChild:(RCTAnimatedNode *)child NS_REQUIRES_SUPER; + +- (void)onAttachedToNode:(RCTAnimatedNode *)parent NS_REQUIRES_SUPER; +- (void)onDetachedFromNode:(RCTAnimatedNode *)parent NS_REQUIRES_SUPER; + +- (void)detachNode NS_REQUIRES_SUPER; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAnimationDriver.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAnimationDriver.h new file mode 100644 index 0000000..256464b --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAnimationDriver.h @@ -0,0 +1,38 @@ +/* + * 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 +#import + +#import + +static CGFloat RCTSingleFrameInterval = (CGFloat)(1.0 / 60.0); + +@class RCTValueAnimatedNode; + +NS_ASSUME_NONNULL_BEGIN + +@protocol RCTAnimationDriver + +@property (nonatomic, readonly) NSNumber *animationId; +@property (nonatomic, readonly) RCTValueAnimatedNode *valueNode; +@property (nonatomic, readonly) BOOL animationHasBegun; +@property (nonatomic, readonly) BOOL animationHasFinished; + +- (instancetype)initWithId:(NSNumber *)animationId + config:(NSDictionary *)config + forNode:(RCTValueAnimatedNode *)valueNode + callBack:(nullable RCTResponseSenderBlock)callback; + +- (void)startAnimation; +- (void)stepAnimationWithTime:(NSTimeInterval)currentTime; +- (void)stopAnimation; +- (void)resetAnimationConfig:(NSDictionary *)config; + +NS_ASSUME_NONNULL_END + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAnimationPlugins.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAnimationPlugins.h new file mode 100644 index 0000000..406eb68 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAnimationPlugins.h @@ -0,0 +1,41 @@ +/** + * 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 an internal plugin build system + */ + +#ifdef RN_DISABLE_OSS_PLUGIN_HEADER + +// FB Internal: FBRCTAnimationPlugins.h is autogenerated by the build system. +#import + +#else + +// OSS-compatibility layer + +#import + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wreturn-type-c-linkage" + +#ifdef __cplusplus +extern "C" { +#endif + +// RCTTurboModuleManagerDelegate should call this to resolve module classes. +Class RCTAnimationClassProvider(const char *name); + +// Lookup functions +Class RCTNativeAnimatedModuleCls(void) __attribute__((used)); +Class RCTNativeAnimatedTurboModuleCls(void) __attribute__((used)); + +#ifdef __cplusplus +} +#endif + +#pragma GCC diagnostic pop + +#endif // RN_DISABLE_OSS_PLUGIN_HEADER diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAnimationType.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAnimationType.h new file mode 100644 index 0000000..4dcb316 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAnimationType.h @@ -0,0 +1,17 @@ +/* + * 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 + +typedef NS_ENUM(NSInteger, RCTAnimationType) { + RCTAnimationTypeSpring = 0, + RCTAnimationTypeLinear, + RCTAnimationTypeEaseIn, + RCTAnimationTypeEaseOut, + RCTAnimationTypeEaseInEaseOut, + RCTAnimationTypeKeyboard, +}; diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAnimationUtils.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAnimationUtils.h new file mode 100644 index 0000000..1f1afa9 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAnimationUtils.h @@ -0,0 +1,38 @@ +/* + * 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 +#import + +#import + +static NSString *const EXTRAPOLATE_TYPE_IDENTITY = @"identity"; +static NSString *const EXTRAPOLATE_TYPE_CLAMP = @"clamp"; +static NSString *const EXTRAPOLATE_TYPE_EXTEND = @"extend"; + +RCT_EXTERN CGFloat RCTInterpolateValueInRange(CGFloat value, + NSArray *inputRange, + NSArray *outputRange, + NSString *extrapolateLeft, + NSString *extrapolateRight); + +RCT_EXTERN CGFloat RCTInterpolateValue(CGFloat value, + CGFloat inputMin, + CGFloat inputMax, + CGFloat outputMin, + CGFloat outputMax, + NSString *extrapolateLeft, + NSString *extrapolateRight); + +RCT_EXTERN CGFloat RCTRadiansToDegrees(CGFloat radians); +RCT_EXTERN CGFloat RCTDegreesToRadians(CGFloat degrees); + +/** + * Coefficient to slow down animations, respects the ios + * simulator `Slow Animations (⌘T)` option. + */ +RCT_EXTERN CGFloat RCTAnimationDragCoefficient(void); diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAppState.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAppState.h new file mode 100644 index 0000000..0921f70 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAppState.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTAppState : RCTEventEmitter + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAppearance.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAppearance.h new file mode 100644 index 0000000..d8c3585 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAppearance.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +#import +#import + +RCT_EXTERN void RCTEnableAppearancePreference(BOOL enabled); +RCT_EXTERN void RCTOverrideAppearancePreference(NSString *const); +RCT_EXTERN NSString *RCTColorSchemePreference(UITraitCollection *traitCollection); + +@interface RCTAppearance : RCTEventEmitter +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAssert.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAssert.h new file mode 100644 index 0000000..e4c7790 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAssert.h @@ -0,0 +1,189 @@ +/* + * 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 + +#import + +/* + * Defined in RCTUtils.m + */ +RCT_EXTERN BOOL RCTIsMainQueue(void); + +/** + * This is the main assert macro that you should use. Asserts should be compiled out + * in production builds. You can customize the assert behaviour by setting a custom + * assert handler through `RCTSetAssertFunction`. + */ +#ifndef NS_BLOCK_ASSERTIONS +#define RCTAssert(condition, ...) \ + do { \ + if ((condition) == 0) { \ + _RCTAssertFormat(#condition, __FILE__, __LINE__, __func__, __VA_ARGS__); \ + if (RCT_NSASSERT) { \ + [[NSAssertionHandler currentHandler] handleFailureInFunction:(NSString *_Nonnull)@(__func__) \ + file:(NSString *_Nonnull)@(__FILE__) \ + lineNumber:__LINE__ \ + description:__VA_ARGS__]; \ + } \ + } \ + } while (false) +#else +#define RCTAssert(condition, ...) \ + do { \ + } while (false) +#endif +RCT_EXTERN void _RCTAssertFormat(const char *, const char *, int, const char *, NSString *, ...) + NS_FORMAT_FUNCTION(5, 6); + +/** + * Report a fatal condition when executing. These calls will _NOT_ be compiled out + * in production, and crash the app by default. You can customize the fatal behaviour + * by setting a custom fatal handler through `RCTSetFatalHandler` and + * `RCTSetFatalExceptionHandler`. + */ +RCT_EXTERN void RCTFatal(NSError *error); +RCT_EXTERN void RCTFatalException(NSException *exception); + +/** + * The default error domain to be used for React errors. + */ +RCT_EXTERN NSString *const RCTErrorDomain; + +/** + * JS Stack trace provided as part of an NSError's userInfo + */ +RCT_EXTERN NSString *const RCTJSStackTraceKey; + +/** + * Raw JS Stack trace string provided as part of an NSError's userInfo + */ +RCT_EXTERN NSString *const RCTJSRawStackTraceKey; + +/** + * Objective-C stack trace string provided as part of an NSError's userInfo + */ +RCT_EXTERN NSString *const RCTObjCStackTraceKey; + +/** + * Name of fatal exceptions generated by RCTFatal + */ +RCT_EXTERN NSString *const RCTFatalExceptionName; + +/** + * A block signature to be used for custom assertion handling. + */ +typedef void (^RCTAssertFunction)( + NSString *condition, + NSString *fileName, + NSNumber *lineNumber, + NSString *function, + NSString *message); + +typedef void (^RCTFatalHandler)(NSError *error); +typedef void (^RCTFatalExceptionHandler)(NSException *exception); + +/** + * Convenience macro for asserting that a parameter is non-nil/non-zero. + */ +#define RCTAssertParam(name) RCTAssert(name, @"'%s' is a required parameter", #name) + +/** + * Convenience macro for asserting that we're running on main queue. + */ +#define RCTAssertMainQueue() RCTAssert(RCTIsMainQueue(), @"This function must be called on the main queue") + +/** + * Convenience macro for asserting that we're running off the main queue. + */ +#define RCTAssertNotMainQueue() RCTAssert(!RCTIsMainQueue(), @"This function must not be called on the main queue") + +/** + * These methods get and set the current assert function called by the RCTAssert + * macros. You can use these to replace the standard behavior with custom assert + * functionality. + */ +RCT_EXTERN void RCTSetAssertFunction(RCTAssertFunction assertFunction); +RCT_EXTERN RCTAssertFunction RCTGetAssertFunction(void); + +/** + * This appends additional code to the existing assert function, without + * replacing the existing functionality. Useful if you just want to forward + * assert info to an extra service without changing the default behavior. + */ +RCT_EXTERN void RCTAddAssertFunction(RCTAssertFunction assertFunction); + +/** + * This method temporarily overrides the assert function while performing the + * specified block. This is useful for testing purposes (to detect if a given + * function asserts something) or to suppress or override assertions temporarily. + */ +RCT_EXTERN void RCTPerformBlockWithAssertFunction(void (^block)(void), RCTAssertFunction assertFunction); + +/** + * These methods get and set the current fatal handler called by the `RCTFatal` + * and `RCTFatalException` methods. + */ +RCT_EXTERN void RCTSetFatalHandler(RCTFatalHandler fatalHandler); +RCT_EXTERN RCTFatalHandler RCTGetFatalHandler(void); +RCT_EXTERN void RCTSetFatalExceptionHandler(RCTFatalExceptionHandler fatalExceptionHandler); +RCT_EXTERN RCTFatalExceptionHandler RCTGetFatalExceptionHandler(void); + +/** + * Get the current thread's name (or the current queue, if in debug mode) + */ +RCT_EXTERN NSString *RCTCurrentThreadName(void); + +/** + * Helper to get generate exception message from NSError + */ +RCT_EXTERN NSString * +RCTFormatError(NSString *message, NSArray *> *stacktrace, NSUInteger maxMessageLength); + +/** + * Formats a JS stack trace for logging. + */ +RCT_EXTERN NSString *RCTFormatStackTrace(NSArray *> *stackTrace); + +/** + * Convenience macro to assert which thread is currently running (DEBUG mode only) + */ +#if DEBUG + +#define RCTAssertThread(thread, format...) \ + _Pragma("clang diagnostic push") _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") RCTAssert( \ + [(id)thread isKindOfClass:[NSString class]] ? [RCTCurrentThreadName() isEqualToString:(NSString *)thread] \ + : [(id)thread isKindOfClass:[NSThread class]] ? [NSThread currentThread] == (NSThread *)thread \ + : dispatch_get_current_queue() == (dispatch_queue_t)thread, \ + format); \ + _Pragma("clang diagnostic pop") + +#else + +#define RCTAssertThread(thread, format...) \ + do { \ + } while (0) + +#endif + +/** + * Controls for ensuring the new architecture runtime assumption holds. + * Note: this is work in progress. + */ + +// Enable reporting of any violation related to the new React Native architecture. +// If RCT_NEW_ARCHITECTURE is defined, it is already enabled by default, otherwise, no violation will be +// reported until enabled. +// Note: enabling this at runtime is not early enough to report issues within ObjC class +load execution. +__attribute__((used)) RCT_EXTERN void RCTEnableNewArchitectureViolationReporting(BOOL enabled); + +// When reporting is enabled, trigger an assertion. +__attribute__((used)) RCT_EXTERN void RCTEnforceNotAllowedForNewArchitecture(id context, NSString *extra); + +// When reporting is enabled, warn about the violation. Use this to prepare a specific callsite +// for stricter enforcement. When ready, switch it to use the variant above. +__attribute__((used)) RCT_EXTERN void RCTWarnNotAllowedForNewArchitecture(id context, NSString *extra); diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAsyncLocalStorage.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAsyncLocalStorage.h new file mode 100644 index 0000000..d43281c --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAsyncLocalStorage.h @@ -0,0 +1,41 @@ +/* + * 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 +#import + +/** + * A simple, asynchronous, persistent, key-value storage system designed as a + * backend to the AsyncStorage JS module, which is modeled after LocalStorage. + * + * Current implementation stores small values in serialized dictionary and + * larger values in separate files. Since we use a serial file queue + * `RKFileQueue`, reading/writing from multiple threads should be perceived as + * being atomic, unless someone bypasses the `RCTAsyncLocalStorage` API. + * + * Keys and values must always be strings or an error is returned. + */ +@interface RCTAsyncLocalStorage : NSObject + +@property (nonatomic, assign) BOOL clearOnInvalidate; + +@property (nonatomic, readonly, getter=isValid) BOOL valid; + +// Clear the RCTAsyncLocalStorage data from native code +- (void)clearAllData; + +// For clearing data when the bridge may not exist, e.g. when logging out. ++ (void)clearAllData; + +// Grab data from the cache. ResponseBlock result array will have an error at position 0, and an array of arrays at +// position 1. +- (void)multiGet:(NSArray *)keys callback:(RCTResponseSenderBlock)callback; + +// Add multiple key value pairs to the cache. +- (void)multiSet:(NSArray *> *)kvPairs callback:(RCTResponseSenderBlock)callback; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAutoInsetsProtocol.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAutoInsetsProtocol.h new file mode 100644 index 0000000..fc18a9a --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTAutoInsetsProtocol.h @@ -0,0 +1,27 @@ +/* + * 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 + +/** + * Defines a View that wants to support auto insets adjustment + */ +@protocol RCTAutoInsetsProtocol + +@property (nonatomic, assign, readwrite) UIEdgeInsets contentInset; +@property (nonatomic, assign, readwrite) BOOL automaticallyAdjustContentInsets; + +/** + * Automatically adjusted content inset depends on view controller's top and bottom + * layout guides so if you've changed one of them (e.g. after rotation or manually) you should call this method + * to recalculate and refresh content inset. + * To handle case with changing navigation bar height call this method from viewDidLayoutSubviews: + * of your view controller. + */ +- (void)refreshContentInset; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBackedTextInputDelegate.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBackedTextInputDelegate.h new file mode 100644 index 0000000..3e1839b --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBackedTextInputDelegate.h @@ -0,0 +1,42 @@ +/* + * 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 + +@protocol RCTBackedTextInputViewProtocol; + +NS_ASSUME_NONNULL_BEGIN + +@protocol RCTBackedTextInputDelegate + +- (BOOL)textInputShouldBeginEditing; // Return `NO` to disallow editing. +- (void)textInputDidBeginEditing; + +- (BOOL)textInputShouldEndEditing; // Return `YES` to allow editing to stop and to resign first responder status. `NO` to disallow the editing session to end. +- (void)textInputDidEndEditing; // May be called if forced even if `textInputShouldEndEditing` returns `NO` (e.g. view removed from window) or `[textInput endEditing:YES]` called. + +- (BOOL)textInputShouldReturn; // May be called right before `textInputShouldEndEditing` if "Return" button was pressed. +- (void)textInputDidReturn; + +/* + * Called before any change in the TextInput. The delegate has the opportunity to change the replacement string or reject the change completely. + * To change the replacement, return the changed version of the `text`. + * To accept the change, return `text` argument as-is. + * To reject the change, return `nil`. + */ +- (NSString *)textInputShouldChangeText:(NSString *)text inRange:(NSRange)range; +- (void)textInputDidChange; + +- (void)textInputDidChangeSelection; + +@optional + +- (void)scrollViewDidScroll:(UIScrollView *)scrollView; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBackedTextInputDelegateAdapter.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBackedTextInputDelegateAdapter.h new file mode 100644 index 0000000..a7f3251 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBackedTextInputDelegateAdapter.h @@ -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 + +#import "RCTBackedTextInputViewProtocol.h" +#import "RCTBackedTextInputDelegate.h" + +NS_ASSUME_NONNULL_BEGIN + +#pragma mark - RCTBackedTextFieldDelegateAdapter (for UITextField) + +@interface RCTBackedTextFieldDelegateAdapter : NSObject + +- (instancetype)initWithTextField:(UITextField *)backedTextInputView; + +- (void)skipNextTextInputDidChangeSelectionEventWithTextRange:(UITextRange *)textRange; +- (void)selectedTextRangeWasSet; + +@end + +#pragma mark - RCTBackedTextViewDelegateAdapter (for UITextView) + +@interface RCTBackedTextViewDelegateAdapter : NSObject + +- (instancetype)initWithTextView:(UITextView *)backedTextInputView; + +- (void)skipNextTextInputDidChangeSelectionEventWithTextRange:(UITextRange *)textRange; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBackedTextInputViewProtocol.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBackedTextInputViewProtocol.h new file mode 100644 index 0000000..09f4fe2 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBackedTextInputViewProtocol.h @@ -0,0 +1,50 @@ +/* + * 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 + +@protocol RCTBackedTextInputDelegate; +@class RCTTextAttributes; + +NS_ASSUME_NONNULL_BEGIN + +@protocol RCTBackedTextInputViewProtocol + +@property (nonatomic, copy, nullable) NSAttributedString *attributedText; +@property (nonatomic, copy, nullable) NSString *placeholder; +@property (nonatomic, strong, nullable) UIColor *placeholderColor; +@property (nonatomic, assign, readonly) BOOL textWasPasted; +@property (nonatomic, assign) UIEdgeInsets textContainerInset; +@property (nonatomic, strong, nullable) UIView *inputAccessoryView; +@property (nonatomic, strong, nullable) UIView *inputView; +@property (nonatomic, weak, nullable) id textInputDelegate; +@property (nonatomic, readonly) CGSize contentSize; +@property (nonatomic, strong, nullable) NSDictionary *defaultTextAttributes; +@property (nonatomic, assign) BOOL contextMenuHidden; +@property (nonatomic, assign, getter=isEditable) BOOL editable; +@property (nonatomic, assign) BOOL caretHidden; +@property (nonatomic, assign) BOOL enablesReturnKeyAutomatically; +@property (nonatomic, assign) UITextFieldViewMode clearButtonMode; +@property (nonatomic, getter=isScrollEnabled) BOOL scrollEnabled; +@property (nonatomic, strong, nullable) NSString *inputAccessoryViewID; + +// This protocol disallows direct access to `selectedTextRange` property because +// unwise usage of it can break the `delegate` behavior. So, we always have to +// explicitly specify should `delegate` be notified about the change or not. +// If the change was initiated programmatically, we must NOT notify the delegate. +// If the change was a result of user actions (like typing or touches), we MUST notify the delegate. +- (void)setSelectedTextRange:(nullable UITextRange *)selectedTextRange NS_UNAVAILABLE; +- (void)setSelectedTextRange:(nullable UITextRange *)selectedTextRange notifyDelegate:(BOOL)notifyDelegate; + +// This protocol disallows direct access to `text` property because +// unwise usage of it can break the `attributeText` behavior. +// Use `attributedText.string` instead. +@property (nonatomic, copy, nullable) NSString *text NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBaseTextInputShadowView.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBaseTextInputShadowView.h new file mode 100644 index 0000000..44b46db --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBaseTextInputShadowView.h @@ -0,0 +1,25 @@ +/* + * 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 "RCTBaseTextShadowView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTBaseTextInputShadowView : RCTBaseTextShadowView + +- (instancetype)initWithBridge:(RCTBridge *)bridge; + +@property (nonatomic, copy, nullable) NSString *text; +@property (nonatomic, copy, nullable) NSString *placeholder; +@property (nonatomic, assign) NSInteger maximumNumberOfLines; +@property (nonatomic, copy, nullable) RCTDirectEventBlock onContentSizeChange; + +- (void)uiManagerWillPerformMounting; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBaseTextInputView.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBaseTextInputView.h new file mode 100644 index 0000000..d73f082 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBaseTextInputView.h @@ -0,0 +1,63 @@ +/* + * 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 + +#import + +#import "RCTBackedTextInputDelegate.h" +#import "RCTBackedTextInputViewProtocol.h" + +@class RCTBridge; +@class RCTTextAttributes; +@class RCTTextSelection; + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTBaseTextInputView : RCTView + +- (instancetype)initWithBridge:(RCTBridge *)bridge NS_DESIGNATED_INITIALIZER; + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithCoder:(NSCoder *)decoder NS_UNAVAILABLE; +- (instancetype)initWithFrame:(CGRect)frame NS_UNAVAILABLE; + +@property (nonatomic, readonly) UIView *backedTextInputView; + +@property (nonatomic, strong, nullable) RCTTextAttributes *textAttributes; +@property (nonatomic, assign) UIEdgeInsets reactPaddingInsets; +@property (nonatomic, assign) UIEdgeInsets reactBorderInsets; + +@property (nonatomic, copy, nullable) RCTDirectEventBlock onContentSizeChange; +@property (nonatomic, copy, nullable) RCTDirectEventBlock onSelectionChange; +@property (nonatomic, copy, nullable) RCTDirectEventBlock onChange; +@property (nonatomic, copy, nullable) RCTDirectEventBlock onTextInput; +@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; +@property (nonatomic, assign) BOOL clearTextOnFocus; +@property (nonatomic, assign) BOOL secureTextEntry; +@property (nonatomic, copy) RCTTextSelection *selection; +@property (nonatomic, strong, nullable) NSNumber *maxLength; +@property (nonatomic, copy, nullable) NSAttributedString *attributedText; +@property (nonatomic, copy) NSString *inputAccessoryViewID; +@property (nonatomic, assign) UIKeyboardType keyboardType; +@property (nonatomic, assign) BOOL showSoftInputOnFocus; + +/** + Sets selection intext input if both start and end are within range of the text input. + **/ +- (void)setSelectionStart:(NSInteger)start + selectionEnd:(NSInteger)end; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBaseTextInputViewManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBaseTextInputViewManager.h new file mode 100644 index 0000000..5201bdb --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBaseTextInputViewManager.h @@ -0,0 +1,12 @@ +/* + * 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 "RCTBaseTextViewManager.h" + +@interface RCTBaseTextInputViewManager : RCTBaseTextViewManager + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBaseTextShadowView.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBaseTextShadowView.h new file mode 100644 index 0000000..9f2c944 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBaseTextShadowView.h @@ -0,0 +1,27 @@ +/* + * 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 + +#import "RCTTextAttributes.h" + +NS_ASSUME_NONNULL_BEGIN + +extern NSString *const RCTBaseTextShadowViewEmbeddedShadowViewAttributeName; + +@interface RCTBaseTextShadowView : RCTShadowView { + @protected NSAttributedString *_Nullable cachedAttributedText; + @protected RCTTextAttributes *_Nullable cachedTextAttributes; +} + +@property (nonatomic, strong) RCTTextAttributes *textAttributes; + +- (NSAttributedString *)attributedTextWithBaseTextAttributes:(nullable RCTTextAttributes *)baseTextAttributes; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBaseTextViewManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBaseTextViewManager.h new file mode 100644 index 0000000..b0f9470 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBaseTextViewManager.h @@ -0,0 +1,16 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTBaseTextViewManager : RCTViewManager + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBlobManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBlobManager.h new file mode 100755 index 0000000..04b905c --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBlobManager.h @@ -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 +#import +#import +#import + +@interface RCTBlobManager : NSObject + +- (NSString *)store:(NSData *)data; + +- (void)store:(NSData *)data withId:(NSString *)blobId; + +- (NSData *)resolve:(NSDictionary *)blob; + +- (NSData *)resolve:(NSString *)blobId offset:(NSInteger)offset size:(NSInteger)size; + +- (NSData *)resolveURL:(NSURL *)url; + +- (void)remove:(NSString *)blobId; + +- (void)createFromParts:(NSArray *> *)parts withId:(NSString *)blobId; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBorderDrawing.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBorderDrawing.h new file mode 100644 index 0000000..884aa79 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBorderDrawing.h @@ -0,0 +1,67 @@ +/* + * 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 + +#import +#import + +typedef struct { + CGFloat topLeft; + CGFloat topRight; + CGFloat bottomLeft; + CGFloat bottomRight; +} RCTCornerRadii; + +typedef struct { + CGSize topLeft; + CGSize topRight; + CGSize bottomLeft; + CGSize bottomRight; +} RCTCornerInsets; + +typedef struct { + CGColorRef top; + CGColorRef left; + CGColorRef bottom; + CGColorRef right; +} RCTBorderColors; + +/** + * Determine if the border widths, colors and radii are all equal. + */ +RCT_EXTERN BOOL RCTBorderInsetsAreEqual(UIEdgeInsets borderInsets); +RCT_EXTERN BOOL RCTCornerRadiiAreEqual(RCTCornerRadii cornerRadii); +RCT_EXTERN BOOL RCTBorderColorsAreEqual(RCTBorderColors borderColors); + +/** + * Convert RCTCornerRadii to RCTCornerInsets by applying border insets. + * Effectively, returns radius - inset, with a lower bound of 0.0. + */ +RCT_EXTERN RCTCornerInsets RCTGetCornerInsets(RCTCornerRadii cornerRadii, UIEdgeInsets borderInsets); + +/** + * Create a CGPath representing a rounded rectangle with the specified bounds + * and corner insets. Note that the CGPathRef must be released by the caller. + */ +RCT_EXTERN CGPathRef +RCTPathCreateWithRoundedRect(CGRect bounds, RCTCornerInsets cornerInsets, const CGAffineTransform *transform); + +/** + * Draw a CSS-compliant border as an image. You can determine if it's scalable + * by inspecting the image's `capInsets`. + * + * `borderInsets` defines the border widths for each edge. + */ +RCT_EXTERN UIImage *RCTGetBorderImage( + RCTBorderStyle borderStyle, + CGSize viewSize, + RCTCornerRadii cornerRadii, + UIEdgeInsets borderInsets, + RCTBorderColors borderColors, + CGColorRef backgroundColor, + BOOL drawToEdge); diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBorderStyle.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBorderStyle.h new file mode 100644 index 0000000..70d6d72 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBorderStyle.h @@ -0,0 +1,15 @@ +/* + * 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 + +typedef NS_ENUM(NSInteger, RCTBorderStyle) { + RCTBorderStyleUnset = 0, + RCTBorderStyleSolid, + RCTBorderStyleDotted, + RCTBorderStyleDashed, +}; diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBridge+Private.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBridge+Private.h new file mode 100644 index 0000000..9dd96a5 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBridge+Private.h @@ -0,0 +1,157 @@ +/* + * 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 + +@class RCTModuleRegistry; +@class RCTModuleData; +@protocol RCTJavaScriptExecutor; + +RCT_EXTERN NSArray *RCTGetModuleClasses(void); +RCT_EXTERN void RCTRegisterModule(Class); + +@interface RCTBridge () + +// Private designated initializer +- (instancetype)initWithDelegate:(id)delegate + bundleURL:(NSURL *)bundleURL + moduleProvider:(RCTBridgeModuleListProvider)block + launchOptions:(NSDictionary *)launchOptions NS_DESIGNATED_INITIALIZER; + +// Used for the profiler flow events between JS and native +@property (nonatomic, assign) int64_t flowID; +@property (nonatomic, assign) CFMutableDictionaryRef flowIDMap; +@property (nonatomic, strong) NSLock *flowIDMapLock; + +// Used by RCTDevMenu +@property (nonatomic, copy) NSString *bridgeDescription; + ++ (instancetype)currentBridge; ++ (void)setCurrentBridge:(RCTBridge *)bridge; + +/** + * Bridge setup code - creates an instance of RCTBachedBridge. Exposed for + * test only + */ +- (void)setUp; + +/** + * This method is used to invoke a callback that was registered in the + * JavaScript application context. Safe to call from any thread. + */ +- (void)enqueueCallback:(NSNumber *)cbID args:(NSArray *)args; + +/** + * This property is mostly used on the main thread, but may be touched from + * a background thread if the RCTBridge happens to deallocate on a background + * thread. Therefore, we want all writes to it to be seen atomically. + */ +@property (atomic, strong) RCTBridge *batchedBridge; + +/** + * The block that creates the modules' instances to be added to the bridge. + * Exposed for RCTCxxBridge + */ +@property (nonatomic, copy, readonly) RCTBridgeModuleListProvider moduleProvider; + +/** + * Used by RCTDevMenu to override the `hot` param of the current bundleURL. + */ +@property (nonatomic, strong, readwrite) NSURL *bundleURL; + +/** + * An object that allows one to require NativeModules/TurboModules. + * RCTModuleRegistry is implemented in bridgeless mode and bridge mode. + * Used by RCTRootView. + */ +@property (nonatomic, strong, readonly) RCTModuleRegistry *moduleRegistry; + +@end + +@interface RCTBridge (RCTCxxBridge) + +/** + * Used by RCTModuleData + */ + +@property (nonatomic, weak, readonly) RCTBridge *parentBridge; + +/** + * Used by RCTModuleData + */ +@property (nonatomic, assign, readonly) BOOL moduleSetupComplete; + +/** + * Called on the child bridge to run the executor and start loading. + */ +- (void)start; + +/** + * Used by RCTModuleData to register the module for frame updates after it is + * lazily initialized. + */ +- (void)registerModuleForFrameUpdates:(id)module withModuleData:(RCTModuleData *)moduleData; + +/** + * Dispatch work to a module's queue - this is also suports the fake RCTJSThread + * queue. Exposed for the RCTProfiler + */ +- (void)dispatchBlock:(dispatch_block_t)block queue:(dispatch_queue_t)queue; + +/** + * Get the module data for a given module name. Used by UIManager to implement + * the `dispatchViewManagerCommand` method. + */ +- (RCTModuleData *)moduleDataForName:(NSString *)moduleName; + +/** + * Registers additional classes with the ModuleRegistry. + */ +- (void)registerAdditionalModuleClasses:(NSArray *)newModules; + +/** + * Updates the ModuleRegistry with a pre-initialized instance. + */ +- (void)updateModuleWithInstance:(id)instance; + +/** + * Systrace profiler toggling methods exposed for the RCTDevMenu + */ +- (void)startProfiling; +- (void)stopProfiling:(void (^)(NSData *))callback; + +/** + * Synchronously call a specific native module's method and return the result + */ +- (id)callNativeModule:(NSUInteger)moduleID method:(NSUInteger)methodID params:(NSArray *)params; + +/** + * Hook exposed for RCTLog to send logs to JavaScript when not running in JSC + */ +- (void)logMessage:(NSString *)message level:(NSString *)level; + +/** + * Allow super fast, one time, timers to skip the queue and be directly executed + */ +- (void)_immediatelyCallTimer:(NSNumber *)timer; + +@end + +@interface RCTBridge (Inspector) + +@property (nonatomic, readonly, getter=isInspectable) BOOL inspectable; + +@end + +@interface RCTCxxBridge : RCTBridge + +// TODO(cjhopman): this seems unsafe unless we require that it is only called on the main js queue. +@property (nonatomic, readonly) void *runtime; + +- (instancetype)initWithParentBridge:(RCTBridge *)bridge NS_DESIGNATED_INITIALIZER; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBridge.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBridge.h new file mode 100644 index 0000000..8eef1ce --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBridge.h @@ -0,0 +1,337 @@ +/* + * 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 + +#import +#import +#import +#import +#import + +@class JSValue; +@class RCTBridge; +@class RCTPerformanceLogger; + +/** + * This notification fires when the bridge initializes. + */ +RCT_EXTERN NSString *const RCTJavaScriptWillStartLoadingNotification; + +/** + * This notification fires when the bridge starts executing the JS bundle. + */ +RCT_EXTERN NSString *const RCTJavaScriptWillStartExecutingNotification; + +/** + * This notification fires when the bridge has finished loading the JS bundle. + */ +RCT_EXTERN NSString *const RCTJavaScriptDidLoadNotification; + +/** + * This notification fires when the bridge failed to load the JS bundle. The + * `error` key can be used to determine the error that occurred. + */ +RCT_EXTERN NSString *const RCTJavaScriptDidFailToLoadNotification; + +/** + * This notification fires each time a native module is instantiated. The + * `module` key will contain a reference to the newly-created module instance. + * Note that this notification may be fired before the module is available via + * the `[bridge moduleForClass:]` method. + */ +RCT_EXTERN NSString *const RCTDidInitializeModuleNotification; + +/** + * This notification fires each time a module is setup after it is initialized. The + * `RCTDidSetupModuleNotificationModuleNameKey` key will contain a reference to the module name and + * `RCTDidSetupModuleNotificationSetupTimeKey` will contain the setup time in ms. + */ +RCT_EXTERN NSString *const RCTDidSetupModuleNotification; + +/** + * Key for the module name (NSString) in the + * RCTDidSetupModuleNotification userInfo dictionary. + */ +RCT_EXTERN NSString *const RCTDidSetupModuleNotificationModuleNameKey; + +/** + * Key for the setup time (NSNumber) in the + * RCTDidSetupModuleNotification userInfo dictionary. + */ +RCT_EXTERN NSString *const RCTDidSetupModuleNotificationSetupTimeKey; + +/** + * DEPRECATED - Use RCTReloadCommand instead. This notification fires just before the bridge starts + * processing a request to reload. + */ +RCT_EXTERN NSString *const RCTBridgeWillReloadNotification; + +/** + * This notification fires whenever a fast refresh happens. + */ +RCT_EXTERN NSString *const RCTBridgeFastRefreshNotification; + +/** + * This notification fires just before the bridge begins downloading a script + * from the packager. + */ +RCT_EXTERN NSString *const RCTBridgeWillDownloadScriptNotification; + +/** + * This notification fires just after the bridge finishes downloading a script + * from the packager. + */ +RCT_EXTERN NSString *const RCTBridgeDidDownloadScriptNotification; + +/** + * This notification fires right after the bridge is about to invalidate NativeModule + * instances during teardown. Handle this notification to perform additional invalidation. + */ +RCT_EXTERN NSString *const RCTBridgeWillInvalidateModulesNotification; + +/** + * This notification fires right after the bridge finishes invalidating NativeModule + * instances during teardown. Handle this notification to perform additional invalidation. + */ +RCT_EXTERN NSString *const RCTBridgeDidInvalidateModulesNotification; + +/** + * This notification fires right before the bridge starting invalidation process. + * Handle this notification to perform additional invalidation. + * The notification can be issued on any thread. + */ +RCT_EXTERN NSString *const RCTBridgeWillBeInvalidatedNotification; + +/** + * Key for the RCTSource object in the RCTBridgeDidDownloadScriptNotification + * userInfo dictionary. + */ +RCT_EXTERN NSString *const RCTBridgeDidDownloadScriptNotificationSourceKey; + +/** + * Key for the reload reason in the RCTBridgeWillReloadNotification userInfo dictionary. + */ +RCT_EXTERN NSString *const RCTBridgeDidDownloadScriptNotificationReasonKey; + +/** + * Key for the bridge description (NSString_ in the + * RCTBridgeDidDownloadScriptNotification userInfo dictionary. + */ +RCT_EXTERN NSString *const RCTBridgeDidDownloadScriptNotificationBridgeDescriptionKey; + +/** + * This block can be used to instantiate modules that require additional + * init parameters, or additional configuration prior to being used. + * The bridge will call this block to instantiate the modules, and will + * be responsible for invalidating/releasing them when the bridge is destroyed. + * For this reason, the block should always return new module instances, and + * module instances should not be shared between bridges. + */ +typedef NSArray> * (^RCTBridgeModuleListProvider)(void); + +/** + * These blocks are used to report whether an additional bundle + * fails or succeeds loading. + */ +typedef void (^RCTLoadAndExecuteErrorBlock)(NSError *error); + +/** + * This function returns the module name for a given class. + */ +RCT_EXTERN NSString *RCTBridgeModuleNameForClass(Class bridgeModuleClass); + +/** + * Experimental. + * Check/set if JSI-bound NativeModule is enabled. By default it's off. + */ +RCT_EXTERN BOOL RCTTurboModuleEnabled(void); +RCT_EXTERN void RCTEnableTurboModule(BOOL enabled); + +// Turn on TurboModule eager initialization +RCT_EXTERN BOOL RCTTurboModuleEagerInitEnabled(void); +RCT_EXTERN void RCTEnableTurboModuleEagerInit(BOOL enabled); + +// Turn on TurboModule shared mutex initialization +RCT_EXTERN BOOL RCTTurboModuleSharedMutexInitEnabled(void); +RCT_EXTERN void RCTEnableTurboModuleSharedMutexInit(BOOL enabled); + +// Turn off TurboModule delegate locking +RCT_EXTERN BOOL RCTTurboModuleManagerDelegateLockingDisabled(void); +RCT_EXTERN void RCTDisableTurboModuleManagerDelegateLocking(BOOL enabled); + +typedef enum { + kRCTGlobalScope, + kRCTGlobalScopeUsingRetainJSCallback, + kRCTTurboModuleManagerScope, +} RCTTurboModuleCleanupMode; + +RCT_EXTERN RCTTurboModuleCleanupMode RCTGetTurboModuleCleanupMode(void); +RCT_EXTERN void RCTSetTurboModuleCleanupMode(RCTTurboModuleCleanupMode mode); + +/** + * Async batched bridge used to communicate with the JavaScript application. + */ +@interface RCTBridge : NSObject + +/** + * Creates a new bridge with a custom RCTBridgeDelegate. + * + * All the interaction with the JavaScript context should be done using the bridge + * instance of the RCTBridgeModules. Modules will be automatically instantiated + * using the default contructor, but you can optionally pass in an array of + * pre-initialized module instances if they require additional init parameters + * or configuration. + */ +- (instancetype)initWithDelegate:(id)delegate launchOptions:(NSDictionary *)launchOptions; + +/** + * DEPRECATED: Use initWithDelegate:launchOptions: instead + * + * The designated initializer. This creates a new bridge on top of the specified + * executor. The bridge should then be used for all subsequent communication + * with the JavaScript code running in the executor. Modules will be automatically + * instantiated using the default contructor, but you can optionally pass in an + * array of pre-initialized module instances if they require additional init + * parameters or configuration. + */ +- (instancetype)initWithBundleURL:(NSURL *)bundleURL + moduleProvider:(RCTBridgeModuleListProvider)block + launchOptions:(NSDictionary *)launchOptions; + +/** + * This method is used to call functions in the JavaScript application context. + * It is primarily intended for use by modules that require two-way communication + * with the JavaScript code. Safe to call from any thread. + */ +- (void)enqueueJSCall:(NSString *)moduleDotMethod args:(NSArray *)args; +- (void)enqueueJSCall:(NSString *)module + method:(NSString *)method + args:(NSArray *)args + completion:(dispatch_block_t)completion; + +/** + * This method registers the file path of an additional JS segment by its ID. + * + * @experimental + */ +- (void)registerSegmentWithId:(NSUInteger)segmentId path:(NSString *)path; + +/** + * Retrieve a bridge module instance by name or class. Note that modules are + * lazily instantiated, so calling these methods for the first time with a given + * module name/class may cause the class to be synchronously instantiated, + * potentially blocking both the calling thread and main thread for a short time. + * + * Note: This method does NOT lazily load the particular module if it's not yet loaded. + */ +- (id)moduleForName:(NSString *)moduleName; +- (id)moduleForName:(NSString *)moduleName lazilyLoadIfNecessary:(BOOL)lazilyLoad; +// Note: This method lazily load the module as necessary. +- (id)moduleForClass:(Class)moduleClass; + +/** + * When a NativeModule performs a lookup for a TurboModule, we need to query + * the TurboModuleRegistry. + */ +- (void)setRCTTurboModuleRegistry:(id)turboModuleRegistry; + +/** + * This hook is called by the TurboModule infra with every TurboModule that's created. + * It allows the bridge to attach properties to TurboModules that give TurboModules + * access to Bridge APIs. + */ +- (void)attachBridgeAPIsToTurboModule:(id)module; + +/** + * Convenience method for retrieving all modules conforming to a given protocol. + * Modules will be synchronously instantiated if they haven't already been, + * potentially blocking both the calling thread and main thread for a short time. + */ +- (NSArray *)modulesConformingToProtocol:(Protocol *)protocol; + +/** + * Test if a module has been initialized. Use this prior to calling + * `moduleForClass:` or `moduleForName:` if you do not want to cause the module + * to be instantiated if it hasn't been already. + */ +- (BOOL)moduleIsInitialized:(Class)moduleClass; + +/** + * All registered bridge module classes. + */ +@property (nonatomic, copy, readonly) NSArray *moduleClasses; + +/** + * URL of the script that was loaded into the bridge. + */ +@property (nonatomic, strong, readonly) NSURL *bundleURL; + +/** + * The class of the executor currently being used. Changes to this value will + * take effect after the bridge is reloaded. + */ +@property (nonatomic, strong) Class executorClass; + +/** + * The delegate provided during the bridge initialization + */ +@property (nonatomic, weak, readonly) id delegate; + +/** + * The launch options that were used to initialize the bridge. + */ +@property (nonatomic, copy, readonly) NSDictionary *launchOptions; + +/** + * Use this to check if the bridge is currently loading. + */ +@property (nonatomic, readonly, getter=isLoading) BOOL loading; + +/** + * Use this to check if the bridge has been invalidated. + */ +@property (nonatomic, readonly, getter=isValid) BOOL valid; + +/** + * Link to the Performance Logger that logs React Native perf events. + */ +@property (nonatomic, readonly, strong) RCTPerformanceLogger *performanceLogger; + +/** + * Reload the bundle and reset executor & modules. Safe to call from any thread. + */ +- (void)reload __deprecated_msg("Use RCTReloadCommand instead"); + +/** + * Reload the bundle and reset executor & modules. Safe to call from any thread. + */ +- (void)reloadWithReason:(NSString *)reason __deprecated_msg("Use RCTReloadCommand instead"); + +/** + * Handle notifications for a fast refresh. Safe to call from any thread. + */ +- (void)onFastRefresh; + +/** + * Inform the bridge, and anything subscribing to it, that it should reload. + */ +- (void)requestReload __deprecated_msg("Use RCTReloadCommand instead"); + +/** + * Says whether bridge has started receiving calls from JavaScript. + */ +- (BOOL)isBatchActive; + +/** + * Loads and executes additional bundles in the VM for development. + */ +- (void)loadAndExecuteSplitBundleURL:(NSURL *)bundleURL + onError:(RCTLoadAndExecuteErrorBlock)onError + onComplete:(dispatch_block_t)onComplete; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBridgeDelegate.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBridgeDelegate.h new file mode 100644 index 0000000..00c26f2 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBridgeDelegate.h @@ -0,0 +1,79 @@ +/* + * 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 + +@class RCTBridge; +@protocol RCTBridgeModule; + +@protocol RCTBridgeDelegate + +/** + * The location of the JavaScript source file. When running from the packager + * this should be an absolute URL, e.g. `http://localhost:8081/index.ios.bundle`. + * When running from a locally bundled JS file, this should be a `file://` url + * pointing to a path inside the app resources, e.g. `file://.../main.jsbundle`. + */ +- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge; + +@optional + +/** + * The bridge initializes any registered RCTBridgeModules automatically, however + * if you wish to instantiate your own module instances, you can return them + * from this method. + * + * Note: You should always return a new instance for each call, rather than + * returning the same instance each time the bridge is reloaded. Module instances + * should not be shared between bridges, and this may cause unexpected behavior. + * + * It is also possible to override standard modules with your own implementations + * by returning a class with the same `moduleName` from this method, but this is + * not recommended in most cases - if the module methods and behavior do not + * match exactly, it may lead to bugs or crashes. + */ +- (NSArray> *)extraModulesForBridge:(RCTBridge *)bridge; + +/** + * Configure whether the JSCExecutor created should use the system JSC API or + * alternative hooks provided. When returning YES from this method, you must have + * previously called facebook::react::setCustomJSCWrapper. + * + * @experimental + */ +- (BOOL)shouldBridgeUseCustomJSC:(RCTBridge *)bridge; + +/** + * The bridge will call this method when a module been called from JS + * cannot be found among registered modules. + * It should return YES if the module with name 'moduleName' was registered + * in the implementation, and the system must attempt to look for it again among registered. + * If the module was not registered, return NO to prevent further searches. + */ +- (BOOL)bridge:(RCTBridge *)bridge didNotFindModule:(NSString *)moduleName; + +/** + * The bridge will automatically attempt to load the JS source code from the + * location specified by the `sourceURLForBridge:` method, however, if you want + * to handle loading the JS yourself, you can do so by implementing this method. + */ +- (void)loadSourceForBridge:(RCTBridge *)bridge + onProgress:(RCTSourceLoadProgressBlock)onProgress + onComplete:(RCTSourceLoadBlock)loadCallback; + +/** + * Similar to loadSourceForBridge:onProgress:onComplete: but without progress + * reporting. + */ +- (void)loadSourceForBridge:(RCTBridge *)bridge withBlock:(RCTSourceLoadBlock)loadCallback; + +/** + * Retrieve the list of lazy-native-modules names for the given bridge. + */ +- (NSDictionary *)extraLazyModuleClassesForBridge:(RCTBridge *)bridge; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBridgeMethod.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBridgeMethod.h new file mode 100644 index 0000000..35d2b89 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBridgeMethod.h @@ -0,0 +1,37 @@ +/* + * 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 + +@class RCTBridge; + +typedef NS_ENUM(NSUInteger, RCTFunctionType) { + RCTFunctionTypeNormal, + RCTFunctionTypePromise, + RCTFunctionTypeSync, +}; + +static inline const char *RCTFunctionDescriptorFromType(RCTFunctionType type) +{ + switch (type) { + case RCTFunctionTypeNormal: + return "async"; + case RCTFunctionTypePromise: + return "promise"; + case RCTFunctionTypeSync: + return "sync"; + } +}; + +@protocol RCTBridgeMethod + +@property (nonatomic, readonly) const char *JSMethodName; +@property (nonatomic, readonly) RCTFunctionType functionType; + +- (id)invokeWithBridge:(RCTBridge *)bridge module:(id)module arguments:(NSArray *)arguments; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBridgeModule.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBridgeModule.h new file mode 100644 index 0000000..fff361a --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBridgeModule.h @@ -0,0 +1,469 @@ +/* + * 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 +#import + +#import +#import + +@class RCTBridge; +@protocol RCTBridgeMethod; +@class RCTModuleRegistry; +@class RCTViewRegistry; +@class RCTBundleManager; +@class RCTCallableJSModules; + +/** + * The type of a block that is capable of sending a response to a bridged + * operation. Use this for returning callback methods to JS. + */ +typedef void (^RCTResponseSenderBlock)(NSArray *response); + +/** + * The type of a block that is capable of sending an error response to a + * bridged operation. Use this for returning error information to JS. + */ +typedef void (^RCTResponseErrorBlock)(NSError *error); + +/** + * Block that bridge modules use to resolve the JS promise waiting for a result. + * Nil results are supported and are converted to JS's undefined value. + */ +typedef void (^RCTPromiseResolveBlock)(id result); + +/** + * Block that bridge modules use to reject the JS promise waiting for a result. + * The error may be nil but it is preferable to pass an NSError object for more + * precise error messages. + */ +typedef void (^RCTPromiseRejectBlock)(NSString *code, NSString *message, NSError *error); + +RCT_EXTERN_C_BEGIN + +typedef struct RCTMethodInfo { + const char *const jsName; + const char *const objcName; + const BOOL isSync; +} RCTMethodInfo; + +RCT_EXTERN_C_END + +/** + * Provides the interface needed to register a bridge module. + */ +@protocol RCTBridgeModule + +/** + * Place this macro in your class implementation to automatically register + * your module with the bridge when it loads. The optional js_name argument + * will be used as the JS module name. If omitted, the JS module name will + * match the Objective-C class name. + */ +#define RCT_EXPORT_MODULE(js_name) \ + RCT_EXTERN void RCTRegisterModule(Class); \ + +(NSString *)moduleName \ + { \ + return @ #js_name; \ + } \ + +(void)load \ + { \ + RCTRegisterModule(self); \ + } + +/** + * Same as RCT_EXPORT_MODULE, but uses __attribute__((constructor)) for module + * registration. Useful for registering swift classes that forbids use of load + * Used in RCT_EXTERN_REMAP_MODULE + */ +#define RCT_EXPORT_MODULE_NO_LOAD(js_name, objc_name) \ + RCT_EXTERN void RCTRegisterModule(Class); \ + +(NSString *)moduleName \ + { \ + return @ #js_name; \ + } \ + __attribute__((constructor)) static void RCT_CONCAT(initialize_, objc_name)() \ + { \ + RCTRegisterModule([objc_name class]); \ + } + +/** + * To improve startup performance users may want to generate their module lists + * at build time and hook the delegate to merge with the runtime list. This + * macro takes the place of the above for those cases by omitting the +load + * generation. + * + */ +#define RCT_EXPORT_PRE_REGISTERED_MODULE(js_name) \ + +(NSString *)moduleName \ + { \ + return @ #js_name; \ + } + +// Implemented by RCT_EXPORT_MODULE ++ (NSString *)moduleName; + +@optional + +/** + * A reference to the RCTModuleRegistry. Useful for modules that require access + * to other NativeModules. To implement this in your module, just add `@synthesize + * moduleRegistry = _moduleRegistry;`. If using Swift, add + * `@objc var moduleRegistry: RCTModuleRegistry!` to your module. + */ +@property (nonatomic, weak, readwrite) RCTModuleRegistry *moduleRegistry; + +/** + * A reference to the RCTViewRegistry. Useful for modules that query UIViews, + * given a react tag. This API is deprecated, and only exists to help migrate + * NativeModules to Venice. + * + * To implement this in your module, just add `@synthesize + * viewRegistry_DEPRECATED = _viewRegistry_DEPRECATED;`. If using Swift, add + * `@objc var viewRegistry_DEPRECATED: RCTViewRegistry!` to your module. + */ +@property (nonatomic, weak, readwrite) RCTViewRegistry *viewRegistry_DEPRECATED; + +/** + * A reference to the RCTBundleManager. Useful for modules that need to read + * or write to the app's bundle URL. + * + * To implement this in your module, just add `@synthesize bundleManager = + * _bundleManager;`. If using Swift, add `@objc var bundleManager: + * RCTBundleManager!` to your module. + */ +@property (nonatomic, weak, readwrite) RCTBundleManager *bundleManager; + +/** + * A reference to an RCTCallableJSModules. Useful for modules that need to + * call into methods on JavaScript modules registered as callable with + * React Native. + * + * To implement this in your module, just add `@synthesize callableJSModules = + * _callableJSModules;`. If using Swift, add `@objc var callableJSModules: + * RCTCallableJSModules!` to your module. + */ +@property (nonatomic, weak, readwrite) RCTCallableJSModules *callableJSModules; + +/** + * A reference to the RCTBridge. Useful for modules that require access + * to bridge features, such as sending events or making JS calls. This + * will be set automatically by the bridge when it initializes the module. + * To implement this in your module, just add `@synthesize bridge = _bridge;` + * If using Swift, add `@objc var bridge: RCTBridge!` to your module. + */ +@property (nonatomic, weak, readonly) RCTBridge *bridge; + +/** + * The queue that will be used to call all exported methods. If omitted, this + * will call on a default background queue, which is avoids blocking the main + * thread. + * + * If the methods in your module need to interact with UIKit methods, they will + * probably need to call those on the main thread, as most of UIKit is main- + * thread-only. You can tell React Native to call your module methods on the + * main thread by returning a reference to the main queue, like this: + * + * - (dispatch_queue_t)methodQueue + * { + * return dispatch_get_main_queue(); + * } + * + * If you don't want to specify the queue yourself, but you need to use it + * inside your class (e.g. if you have internal methods that need to dispatch + * onto that queue), you can just add `@synthesize methodQueue = _methodQueue;` + * and the bridge will populate the methodQueue property for you automatically + * when it initializes the module. + */ +@property (nonatomic, strong, readonly) dispatch_queue_t methodQueue; + +/** + * Wrap the parameter line of your method implementation with this macro to + * expose it to JS. By default the exposed method will match the first part of + * the Objective-C method selector name (up to the first colon). Use + * RCT_REMAP_METHOD to specify the JS name of the method. + * + * For example, in ModuleName.m: + * + * - (void)doSomething:(NSString *)aString withA:(NSInteger)a andB:(NSInteger)b + * { ... } + * + * becomes + * + * RCT_EXPORT_METHOD(doSomething:(NSString *)aString + * withA:(NSInteger)a + * andB:(NSInteger)b) + * { ... } + * + * and is exposed to JavaScript as `NativeModules.ModuleName.doSomething`. + * + * ## Promises + * + * Bridge modules can also define methods that are exported to JavaScript as + * methods that return a Promise, and are compatible with JS async functions. + * + * Declare the last two parameters of your native method to be a resolver block + * and a rejecter block. The resolver block must precede the rejecter block. + * + * For example: + * + * RCT_EXPORT_METHOD(doSomethingAsync:(NSString *)aString + * resolver:(RCTPromiseResolveBlock)resolve + * rejecter:(RCTPromiseRejectBlock)reject + * { ... } + * + * Calling `NativeModules.ModuleName.doSomethingAsync(aString)` from + * JavaScript will return a promise that is resolved or rejected when your + * native method implementation calls the respective block. + * + */ +#define RCT_EXPORT_METHOD(method) RCT_REMAP_METHOD(, method) + +/** + * Same as RCT_EXPORT_METHOD but the method is called from JS + * synchronously **on the JS thread**, possibly returning a result. + * + * WARNING: in the vast majority of cases, you should use RCT_EXPORT_METHOD which + * allows your native module methods to be called asynchronously: calling + * methods synchronously can have strong performance penalties and introduce + * threading-related bugs to your native modules. + * + * The return type must be of object type (id) and should be serializable + * to JSON. This means that the hook can only return nil or JSON values + * (e.g. NSNumber, NSString, NSArray, NSDictionary). + * + * Calling these methods when running under the websocket executor + * is currently not supported. + */ +#define RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(method) RCT_EXPORT_SYNCHRONOUS_TYPED_METHOD(id, method) + +#define RCT_EXPORT_SYNCHRONOUS_TYPED_METHOD(returnType, method) \ + RCT_REMAP_BLOCKING_SYNCHRONOUS_METHOD(, returnType, method) + +/** + * Similar to RCT_EXPORT_METHOD but lets you set the JS name of the exported + * method. Example usage: + * + * RCT_REMAP_METHOD(executeQueryWithParameters, + * executeQuery:(NSString *)query parameters:(NSDictionary *)parameters) + * { ... } + */ +#define RCT_REMAP_METHOD(js_name, method) \ + _RCT_EXTERN_REMAP_METHOD(js_name, method, NO) \ + -(void)method RCT_DYNAMIC; + +/** + * Similar to RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD but lets you set + * the JS name of the exported method. Example usage: + * + * RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(executeQueryWithParameters, + * executeQuery:(NSString *)query parameters:(NSDictionary *)parameters) + * { ... } + */ +#define RCT_REMAP_BLOCKING_SYNCHRONOUS_METHOD(js_name, returnType, method) \ + _RCT_EXTERN_REMAP_METHOD(js_name, method, YES) \ + -(returnType)method RCT_DYNAMIC; + +/** + * Use this macro in a private Objective-C implementation file to automatically + * register an external module with the bridge when it loads. This allows you to + * register Swift or private Objective-C classes with the bridge. + * + * For example if one wanted to export a Swift class to the bridge: + * + * MyModule.swift: + * + * @objc(MyModule) class MyModule: NSObject { + * + * @objc func doSomething(string: String! withFoo a: Int, bar b: Int) { ... } + * + * } + * + * MyModuleExport.m: + * + * #import + * + * @interface RCT_EXTERN_MODULE(MyModule, NSObject) + * + * RCT_EXTERN_METHOD(doSomething:(NSString *)string withFoo:(NSInteger)a bar:(NSInteger)b) + * + * @end + * + * This will now expose MyModule and the method to JavaScript via + * `NativeModules.MyModule.doSomething` + */ +#define RCT_EXTERN_MODULE(objc_name, objc_supername) RCT_EXTERN_REMAP_MODULE(, objc_name, objc_supername) + +/** + * Like RCT_EXTERN_MODULE, but allows setting a custom JavaScript name. + */ +#define RCT_EXTERN_REMAP_MODULE(js_name, objc_name, objc_supername) \ + objc_name: \ + objc_supername @ \ + end @interface objc_name(RCTExternModule) \ + @end \ + @implementation objc_name (RCTExternModule) \ + RCT_EXPORT_MODULE_NO_LOAD(js_name, objc_name) + +/** + * Use this macro in accordance with RCT_EXTERN_MODULE to export methods + * of an external module. + */ +#define RCT_EXTERN_METHOD(method) _RCT_EXTERN_REMAP_METHOD(, method, NO) + +/** + * Use this macro in accordance with RCT_EXTERN_MODULE to export methods + * of an external module that should be invoked synchronously. + */ +#define RCT_EXTERN__BLOCKING_SYNCHRONOUS_METHOD(method) _RCT_EXTERN_REMAP_METHOD(, method, YES) + +/** + * Like RCT_EXTERN_REMAP_METHOD, but allows setting a custom JavaScript name + * and also whether this method is synchronous. + */ +#define _RCT_EXTERN_REMAP_METHOD(js_name, method, is_blocking_synchronous_method) \ + +(const RCTMethodInfo *)RCT_CONCAT(__rct_export__, RCT_CONCAT(js_name, RCT_CONCAT(__LINE__, __COUNTER__))) \ + { \ + static RCTMethodInfo config = {#js_name, #method, is_blocking_synchronous_method}; \ + return &config; \ + } + +/** + * Most modules can be used from any thread. All of the modules exported non-sync method will be called on its + * methodQueue, and the module will be constructed lazily when its first invoked. Some modules have main need to access + * information that's main queue only (e.g. most UIKit classes). Since we don't want to dispatch synchronously to the + * main thread to this safely, we construct these modules and export their constants ahead-of-time. + * + * Note that when set to false, the module constructor will be called from any thread. + * + * This requirement is currently inferred by checking if the module has a custom initializer or if there's exported + * constants. In the future, we'll stop automatically inferring this and instead only rely on this method. + */ ++ (BOOL)requiresMainQueueSetup; + +/** + * Injects methods into JS. Entries in this array are used in addition to any + * methods defined using the macros above. This method is called only once, + * before registration. + */ +- (NSArray> *)methodsToExport; + +/** + * Injects constants into JS. These constants are made accessible via NativeModules.ModuleName.X. It is only called once + * for the lifetime of the bridge, so it is not suitable for returning dynamic values, but may be used for long-lived + * values such as session keys, that are regenerated only as part of a reload of the entire React application. + * + * If you implement this method and do not implement `requiresMainQueueSetup`, you will trigger deprecated logic + * that eagerly initializes your module on bridge startup. In the future, this behaviour will be changed to default + * to initializing lazily, and even modules with constants will be initialized lazily. + */ +- (NSDictionary *)constantsToExport; + +/** + * Notifies the module that a batch of JS method invocations has just completed. + */ +- (void)batchDidComplete; + +/** + * Notifies the module that the active batch of JS method invocations has been + * partially flushed. + * + * This occurs before -batchDidComplete, and more frequently. + */ +- (void)partialBatchDidFlush; + +@end + +/** + * A protocol that allows TurboModules to do lookup on other TurboModules. + * Calling these methods may cause a module to be synchronously instantiated. + */ +@protocol RCTTurboModuleRegistry +- (id)moduleForName:(const char *)moduleName; + +/** + * Rationale: + * When TurboModules lookup other modules by name, we first check the TurboModule + * registry to see if a TurboModule exists with the respective name. In this case, + * we don't want a RedBox to be raised if the TurboModule isn't found. + * + * This method is deprecated and will be deleted after the migration from + * TurboModules to TurboModules is complete. + */ +- (id)moduleForName:(const char *)moduleName warnOnLookupFailure:(BOOL)warnOnLookupFailure; +- (BOOL)moduleIsInitialized:(const char *)moduleName; + +- (NSArray *)eagerInitModuleNames; +- (NSArray *)eagerInitMainQueueModuleNames; +@end + +/** + * Experimental. + * A protocol to declare that a class supports TurboModule. + * This may be removed in the future. + * See RCTTurboModule.h for actual signature. + */ +@protocol RCTTurboModule; + +/** + * A class that allows NativeModules and TurboModules to look up one another. + */ +@interface RCTModuleRegistry : NSObject +- (void)setBridge:(RCTBridge *)bridge; +- (void)setTurboModuleRegistry:(id)turboModuleRegistry; + +- (id)moduleForName:(const char *)moduleName; +- (id)moduleForName:(const char *)moduleName lazilyLoadIfNecessary:(BOOL)lazilyLoad; +@end + +typedef void (^RCTBridgelessBundleURLSetter)(NSURL *bundleURL); +typedef NSURL * (^RCTBridgelessBundleURLGetter)(void); + +/** + * A class that allows NativeModules/TurboModules to read/write the bundleURL, with or without the bridge. + */ +@interface RCTBundleManager : NSObject +- (void)setBridge:(RCTBridge *)bridge; +- (void)setBridgelessBundleURLGetter:(RCTBridgelessBundleURLGetter)getter + andSetter:(RCTBridgelessBundleURLSetter)setter + andDefaultGetter:(RCTBridgelessBundleURLGetter)defaultGetter; +- (void)resetBundleURL; +@property NSURL *bundleURL; +@end + +typedef UIView * (^RCTBridgelessComponentViewProvider)(NSNumber *); + +/** + * A class that allows NativeModules to query for views, given React Tags. + */ +@interface RCTViewRegistry : NSObject +- (void)setBridge:(RCTBridge *)bridge; +- (void)setBridgelessComponentViewProvider:(RCTBridgelessComponentViewProvider)bridgelessComponentViewProvider; + +- (UIView *)viewForReactTag:(NSNumber *)reactTag; +@end + +typedef void (^RCTBridgelessJSModuleMethodInvoker)( + NSString *moduleName, + NSString *methodName, + NSArray *args, + dispatch_block_t onComplete); + +/** + * A class that allows NativeModules to call methods on JavaScript modules registered + * as callable with React Native. + */ +@interface RCTCallableJSModules : NSObject +- (void)setBridge:(RCTBridge *)bridge; +- (void)setBridgelessJSModuleMethodInvoker:(RCTBridgelessJSModuleMethodInvoker)bridgelessJSModuleMethodInvoker; + +- (void)invokeModule:(NSString *)moduleName method:(NSString *)methodName withArgs:(NSArray *)args; +- (void)invokeModule:(NSString *)moduleName + method:(NSString *)methodName + withArgs:(NSArray *)args + onComplete:(dispatch_block_t)onComplete; +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBundleURLProvider.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBundleURLProvider.h new file mode 100644 index 0000000..26fbbd0 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTBundleURLProvider.h @@ -0,0 +1,164 @@ +/* + * 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 + +#import "RCTDefines.h" + +RCT_EXTERN NSString *const RCTBundleURLProviderUpdatedNotification; +RCT_EXTERN const NSUInteger kRCTBundleURLProviderDefaultPort; + +#if RCT_DEV_MENU | RCT_PACKAGER_LOADING_FUNCTIONALITY +/** + * Allow/disallow accessing the packager server for various runtime scenario. + * For instance, if a test run should never access the packager, disable it + * by calling this function before initializing React Native (RCTBridge etc). + * By default the access is enabled. + */ +RCT_EXTERN void RCTBundleURLProviderAllowPackagerServerAccess(BOOL allowed); +#endif + +@interface RCTBundleURLProvider : NSObject + +/** + * Set default settings on NSUserDefaults. + */ +- (void)setDefaults; + +/** + * Reset every settings to default. + */ +- (void)resetToDefaults; + +/** + * Return the server host. If its a development build and there's no jsLocation defined, + * it will return the server host IP address + */ +- (NSString *)packagerServerHost; + +/** + * Return the server host with optional port. If its a development build and there's no jsLocation defined, + * it will return the server host IP address + */ +- (NSString *)packagerServerHostPort; + +/** + * Returns if there's a packager running at the given host port. + * The port is optional, if not specified, kRCTBundleURLProviderDefaultPort will be used + */ ++ (BOOL)isPackagerRunning:(NSString *)hostPort; + +/** + * Returns if there's a packager running at the given scheme://host:port. + * The port is optional, if not specified, kRCTBundleURLProviderDefaultPort will be used + * The scheme is also optional, if not specified, a default http protocol will be used + */ ++ (BOOL)isPackagerRunning:(NSString *)hostPort scheme:(NSString *)scheme; + +/** + * Returns the jsBundleURL for a given bundle entrypoint and + * the fallback offline JS bundle if the packager is not running. + */ +- (NSURL *)jsBundleURLForBundleRoot:(NSString *)bundleRoot fallbackURLProvider:(NSURL * (^)(void))fallbackURLProvider; + +/** + * Returns the jsBundleURL for a given split bundle entrypoint in development + */ +- (NSURL *)jsBundleURLForSplitBundleRoot:(NSString *)bundleRoot; + +/** + * Returns the jsBundleURL for a given bundle entrypoint and + * the fallback offline JS bundle if the packager is not running. + * if resourceName or extension are nil, "main" and "jsbundle" will be + * used, respectively. + */ +- (NSURL *)jsBundleURLForBundleRoot:(NSString *)bundleRoot + fallbackResource:(NSString *)resourceName + fallbackExtension:(NSString *)extension; + +/** + * Returns the jsBundleURL for a given bundle entrypoint and + * the fallback offline JS bundle if the packager is not running. + */ +- (NSURL *)jsBundleURLForBundleRoot:(NSString *)bundleRoot fallbackResource:(NSString *)resourceName; + +/** + * Returns the jsBundleURL for a given bundle entrypoint and + * the fallback offline JS bundle. If resourceName or extension + * are nil, "main" and "jsbundle" will be used, respectively. + */ +- (NSURL *)jsBundleURLForFallbackResource:(NSString *)resourceName fallbackExtension:(NSString *)extension; + +/** + * Returns the resourceURL for a given bundle entrypoint and + * the fallback offline resource file if the packager is not running. + */ +- (NSURL *)resourceURLForResourceRoot:(NSString *)root + resourceName:(NSString *)name + resourceExtension:(NSString *)extension + offlineBundle:(NSBundle *)offlineBundle; + +/** + * The IP address or hostname of the packager. + */ +@property (nonatomic, copy) NSString *jsLocation; + +@property (nonatomic, assign) BOOL enableMinification; +@property (nonatomic, assign) BOOL enableDev; + +/** + * The scheme/protocol used of the packager, the default is the http protocol + */ +@property (nonatomic, copy) NSString *packagerScheme; + ++ (instancetype)sharedSettings; + +/** + * Given a hostname for the packager and a bundle root, returns the URL to the js bundle. Generally you should use the + * instance method -jsBundleURLForBundleRoot:fallbackResource: which includes logic to guess if the packager is running + * and fall back to a pre-packaged bundle if it is not. + * + * The options here mirror some of Metro's Bundling Options: + * - enableDev: Whether to keep or remove `__DEV__` blocks from the bundle. + * - enableMinification: Enables or disables minification. Usually production bundles are minified and development + * bundles are not. + * - modulesOnly: When true, will only send module definitions without polyfills and without the require-runtime. + * - runModule: When true, will run the main module after defining all modules. This is used in the main bundle but not + * in split bundles. + */ ++ (NSURL *)jsBundleURLForBundleRoot:(NSString *)bundleRoot + packagerHost:(NSString *)packagerHost + enableDev:(BOOL)enableDev + enableMinification:(BOOL)enableMinification; + ++ (NSURL *)jsBundleURLForBundleRoot:(NSString *)bundleRoot + packagerHost:(NSString *)packagerHost + enableDev:(BOOL)enableDev + enableMinification:(BOOL)enableMinification + modulesOnly:(BOOL)modulesOnly + runModule:(BOOL)runModule; + ++ (NSURL *)jsBundleURLForBundleRoot:(NSString *)bundleRoot + packagerHost:(NSString *)packagerHost + packagerScheme:(NSString *)scheme + enableDev:(BOOL)enableDev + enableMinification:(BOOL)enableMinification + modulesOnly:(BOOL)modulesOnly + runModule:(BOOL)runModule; +/** + * Given a hostname for the packager and a resource path (including "/"), return the URL to the resource. + * In general, please use the instance method to decide if the packager is running and fallback to the pre-packaged + * resource if it is not: -resourceURLForResourceRoot:resourceName:resourceExtension:offlineBundle: + */ ++ (NSURL *)resourceURLForResourcePath:(NSString *)path packagerHost:(NSString *)packagerHost query:(NSString *)query; + ++ (NSURL *)resourceURLForResourcePath:(NSString *)path + packagerHost:(NSString *)packagerHost + scheme:(NSString *)scheme + query:(NSString *)query; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTClipboard.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTClipboard.h new file mode 100644 index 0000000..1dd9789 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTClipboard.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTClipboard : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTComponent.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTComponent.h new file mode 100644 index 0000000..4258334 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTComponent.h @@ -0,0 +1,57 @@ +/* + * 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 + +#import + +/** + * These block types can be used for mapping input event handlers from JS to view + * properties. Unlike JS method callbacks, these can be called multiple times. + */ +typedef void (^RCTDirectEventBlock)(NSDictionary *body); +typedef void (^RCTBubblingEventBlock)(NSDictionary *body); + +/** + * Logical node in a tree of application components. Both `ShadowView` and + * `UIView` conforms to this. Allows us to write utilities that reason about + * trees generally. + */ +@protocol RCTComponent + +@property (nonatomic, copy) NSNumber *reactTag; +@property (nonatomic, copy) NSNumber *rootTag; + +- (void)insertReactSubview:(id)subview atIndex:(NSInteger)atIndex; +- (void)removeReactSubview:(id)subview; +- (NSArray> *)reactSubviews; +- (id)reactSuperview; +- (NSNumber *)reactTagAtPoint:(CGPoint)point; + +// View/ShadowView is a root view +- (BOOL)isReactRootView; + +/** + * Called each time props have been set. + * Not all props have to be set - React can set only changed ones. + * @param changedProps String names of all set props. + */ +- (void)didSetProps:(NSArray *)changedProps; + +/** + * Called each time subviews have been updated + */ +- (void)didUpdateReactSubviews; + +@end + +// TODO: this is kinda dumb - let's come up with a +// better way of identifying root React views please! +static inline BOOL RCTIsReactRootView(NSNumber *reactTag) +{ + return reactTag.integerValue % 10 == 1; +} diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTComponentData.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTComponentData.h new file mode 100644 index 0000000..6a1fdb7 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTComponentData.h @@ -0,0 +1,49 @@ +/* + * 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 + +#import +#import +#import + +@class RCTBridge; +@class RCTShadowView; +@class UIView; +@class RCTEventDispatcherProtocol; + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTComponentData : NSObject + +@property (nonatomic, readonly) Class managerClass; +@property (nonatomic, copy, readonly) NSString *name; +@property (nonatomic, weak, readonly) RCTViewManager *manager; +/* + * When running React Native with the bridge, view managers are retained by the + * bridge. When running in bridgeless mode, allocate and retain view managers + * in this class. + */ +@property (nonatomic, strong, readonly) RCTViewManager *bridgelessViewManager; + +- (instancetype)initWithManagerClass:(Class)managerClass + bridge:(RCTBridge *)bridge + eventDispatcher:(id)eventDispatcher NS_DESIGNATED_INITIALIZER; + +- (UIView *)createViewWithTag:(nullable NSNumber *)tag rootTag:(nullable NSNumber *)rootTag; +- (RCTShadowView *)createShadowViewWithTag:(NSNumber *)tag; +- (void)setProps:(NSDictionary *)props forView:(id)view; +- (void)setProps:(NSDictionary *)props forShadowView:(RCTShadowView *)shadowView; + +@property (nonatomic, copy, nullable) void (^eventInterceptor) + (NSString *eventName, NSDictionary *event, NSNumber *reactTag); + +- (NSDictionary *)viewConfig; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTComponentEvent.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTComponentEvent.h new file mode 100644 index 0000000..0467f8c --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTComponentEvent.h @@ -0,0 +1,23 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +/** + * Generic untyped event for Components. Used internally by RCTDirectEventBlock and + * RCTBubblingEventBlock, for other use cases prefer using a class that implements + * RCTEvent to have a type safe way to initialize it. + */ +@interface RCTComponentEvent : NSObject + +- (instancetype)initWithName:(NSString *)name viewTag:(NSNumber *)viewTag body:(NSDictionary *)body; + +NS_ASSUME_NONNULL_END + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTConstants.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTConstants.h new file mode 100644 index 0000000..c92fc10 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTConstants.h @@ -0,0 +1,23 @@ +/* + * 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 + +RCT_EXTERN NSString *const RCTUserInterfaceStyleDidChangeNotification; +RCT_EXTERN NSString *const RCTUserInterfaceStyleDidChangeNotificationTraitCollectionKey; + +/* + * Preemptive View Allocation + */ +RCT_EXTERN BOOL RCTExperimentGetPreemptiveViewAllocationDisabled(void); +RCT_EXTERN void RCTExperimentSetPreemptiveViewAllocationDisabled(BOOL value); + +/* + * Remove clipped subviews + */ +RCT_EXTERN BOOL RCTGetRemoveClippedSubviewsEnabled(void); +RCT_EXTERN void RCTSetRemoveClippedSubviewsEnabled(BOOL value); diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTConvert+CoreLocation.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTConvert+CoreLocation.h new file mode 100644 index 0000000..251202f --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTConvert+CoreLocation.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +#import + +@interface RCTConvert (CoreLocation) + ++ (CLLocationDegrees)CLLocationDegrees:(id)json; ++ (CLLocationDistance)CLLocationDistance:(id)json; ++ (CLLocationCoordinate2D)CLLocationCoordinate2D:(id)json; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTConvert+Text.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTConvert+Text.h new file mode 100644 index 0000000..eafbdb3 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTConvert+Text.h @@ -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 + +#import "RCTTextTransform.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTConvert (Text) + ++ (UITextAutocorrectionType)UITextAutocorrectionType:(nullable id)json; ++ (UITextSpellCheckingType)UITextSpellCheckingType:(nullable id)json; ++ (RCTTextTransform)RCTTextTransform:(nullable id)json; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTConvert+Transform.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTConvert+Transform.h new file mode 100644 index 0000000..07a7b2c --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTConvert+Transform.h @@ -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 "RCTConvert.h" + +@interface RCTConvert (Transform) + ++ (CATransform3D)CATransform3D:(id)json; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTConvert.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTConvert.h new file mode 100644 index 0000000..09a380e --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTConvert.h @@ -0,0 +1,263 @@ +/* + * 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 +#import + +#import +#import +#import +#import +#import +#import +#import +#if TARGET_OS_IPHONE +#import +#endif + +/** + * This class provides a collection of conversion functions for mapping + * JSON objects to native types and classes. These are useful when writing + * custom RCTViewManager setter methods. + */ +@interface RCTConvert : NSObject + ++ (id)id:(id)json; + ++ (BOOL)BOOL:(id)json; ++ (double)double:(id)json; ++ (float)float:(id)json; ++ (int)int:(id)json; + ++ (int64_t)int64_t:(id)json; ++ (uint64_t)uint64_t:(id)json; + ++ (NSInteger)NSInteger:(id)json; ++ (NSUInteger)NSUInteger:(id)json; + ++ (NSArray *)NSArray:(id)json; ++ (NSDictionary *)NSDictionary:(id)json; ++ (NSString *)NSString:(id)json; ++ (NSNumber *)NSNumber:(id)json; + ++ (NSSet *)NSSet:(id)json; ++ (NSData *)NSData:(id)json; ++ (NSIndexSet *)NSIndexSet:(id)json; + ++ (NSURLRequestCachePolicy)NSURLRequestCachePolicy:(id)json; ++ (NSURL *)NSURL:(id)json; ++ (NSURLRequest *)NSURLRequest:(id)json; + +typedef NSURL RCTFileURL; ++ (RCTFileURL *)RCTFileURL:(id)json; + ++ (NSDate *)NSDate:(id)json; ++ (NSLocale *)NSLocale:(id)json; ++ (NSTimeZone *)NSTimeZone:(id)json; ++ (NSTimeInterval)NSTimeInterval:(id)json; + ++ (NSLineBreakMode)NSLineBreakMode:(id)json; ++ (NSTextAlignment)NSTextAlignment:(id)json; ++ (NSUnderlineStyle)NSUnderlineStyle:(id)json; ++ (NSWritingDirection)NSWritingDirection:(id)json; ++ (UITextAutocapitalizationType)UITextAutocapitalizationType:(id)json; ++ (UITextFieldViewMode)UITextFieldViewMode:(id)json; ++ (UIKeyboardType)UIKeyboardType:(id)json; ++ (UIKeyboardAppearance)UIKeyboardAppearance:(id)json; ++ (UIReturnKeyType)UIReturnKeyType:(id)json; +#if !TARGET_OS_TV ++ (UIDataDetectorTypes)UIDataDetectorTypes:(id)json; +#endif + +#if TARGET_OS_IPHONE ++ (WKDataDetectorTypes)WKDataDetectorTypes:(id)json; +#endif + ++ (UIViewContentMode)UIViewContentMode:(id)json; +#if !TARGET_OS_TV ++ (UIBarStyle)UIBarStyle:(id)json; +#endif + ++ (CGFloat)CGFloat:(id)json; ++ (CGPoint)CGPoint:(id)json; ++ (CGSize)CGSize:(id)json; ++ (CGRect)CGRect:(id)json; ++ (UIEdgeInsets)UIEdgeInsets:(id)json; + ++ (CGLineCap)CGLineCap:(id)json; ++ (CGLineJoin)CGLineJoin:(id)json; + ++ (CGAffineTransform)CGAffineTransform:(id)json; + ++ (UIColor *)UIColor:(id)json; ++ (CGColorRef)CGColor:(id)json CF_RETURNS_NOT_RETAINED; + ++ (YGValue)YGValue:(id)json; + ++ (NSArray *)NSArrayArray:(id)json; ++ (NSArray *)NSStringArray:(id)json; ++ (NSArray *> *)NSStringArrayArray:(id)json; ++ (NSArray *)NSDictionaryArray:(id)json; ++ (NSArray *)NSURLArray:(id)json; ++ (NSArray *)RCTFileURLArray:(id)json; ++ (NSArray *)NSNumberArray:(id)json; ++ (NSArray *)UIColorArray:(id)json; + +typedef NSArray CGColorArray; ++ (CGColorArray *)CGColorArray:(id)json; + +/** + * Convert a JSON object to a Plist-safe equivalent by stripping null values. + */ +typedef id NSPropertyList; ++ (NSPropertyList)NSPropertyList:(id)json; + +typedef BOOL css_backface_visibility_t; ++ (YGOverflow)YGOverflow:(id)json; ++ (YGDisplay)YGDisplay:(id)json; ++ (css_backface_visibility_t)css_backface_visibility_t:(id)json; ++ (YGFlexDirection)YGFlexDirection:(id)json; ++ (YGJustify)YGJustify:(id)json; ++ (YGAlign)YGAlign:(id)json; ++ (YGPositionType)YGPositionType:(id)json; ++ (YGWrap)YGWrap:(id)json; ++ (YGDirection)YGDirection:(id)json; + ++ (RCTPointerEvents)RCTPointerEvents:(id)json; ++ (RCTAnimationType)RCTAnimationType:(id)json; ++ (RCTBorderStyle)RCTBorderStyle:(id)json; ++ (RCTTextDecorationLineType)RCTTextDecorationLineType:(id)json; + +@end + +@interface RCTConvert (Deprecated) + +/** + * Use lightweight generics syntax instead, e.g. NSArray + */ +typedef NSArray NSArrayArray __deprecated_msg("Use NSArray"); +typedef NSArray NSStringArray __deprecated_msg("Use NSArray"); +typedef NSArray NSStringArrayArray __deprecated_msg("Use NSArray *>"); +typedef NSArray NSDictionaryArray __deprecated_msg("Use NSArray"); +typedef NSArray NSURLArray __deprecated_msg("Use NSArray"); +typedef NSArray RCTFileURLArray __deprecated_msg("Use NSArray"); +typedef NSArray NSNumberArray __deprecated_msg("Use NSArray"); +typedef NSArray UIColorArray __deprecated_msg("Use NSArray"); + +/** + * Synchronous image loading is generally a bad idea for performance reasons. + * If you need to pass image references, try to use `RCTImageSource` and then + * `RCTImageLoader` instead of converting directly to a UIImage. + */ ++ (UIImage *)UIImage:(id)json; ++ (CGImageRef)CGImage:(id)json CF_RETURNS_NOT_RETAINED; + +@end + +/** + * Underlying implementations of RCT_XXX_CONVERTER macros. Ignore these. + */ +RCT_EXTERN NSNumber *RCTConvertEnumValue(const char *, NSDictionary *, NSNumber *, id); +RCT_EXTERN NSNumber *RCTConvertMultiEnumValue(const char *, NSDictionary *, NSNumber *, id); +RCT_EXTERN NSArray *RCTConvertArrayValue(SEL, id); + +/** + * This macro is used for logging conversion errors. This is just used to + * avoid repeating the same boilerplate for every error message. + */ +#define RCTLogConvertError(json, typeName) \ + RCTLogError(@"JSON value '%@' of type %@ cannot be converted to %@", json, [json classForCoder], typeName) + +/** + * This macro is used for creating simple converter functions that just call + * the specified getter method on the json value. + */ +#define RCT_CONVERTER(type, name, getter) RCT_CUSTOM_CONVERTER(type, name, [json getter]) + +/** + * This macro is used for creating converter functions with arbitrary logic. + */ +#define RCT_CUSTOM_CONVERTER(type, name, code) \ + +(type)name : (id)json RCT_DYNAMIC \ + { \ + if (!RCT_DEBUG) { \ + return code; \ + } else { \ + @try { \ + return code; \ + } @catch (__unused NSException * e) { \ + RCTLogConvertError(json, @ #type); \ + json = nil; \ + return code; \ + } \ + } \ + } + +/** + * This macro is similar to RCT_CONVERTER, but specifically geared towards + * numeric types. It will handle string input correctly, and provides more + * detailed error reporting if an invalid value is passed in. + */ +#define RCT_NUMBER_CONVERTER(type, getter) \ + RCT_CUSTOM_CONVERTER(type, type, [RCT_DEBUG ? [self NSNumber:json] : json getter]) + +/** + * When using RCT_ENUM_CONVERTER in ObjC, the compiler is OK with us returning + * the underlying NSInteger/NSUInteger. In ObjC++, this is a type mismatch and + * we need to explicitly cast the return value to expected enum return type. + */ +#ifdef __cplusplus +#define _RCT_CAST(type, expr) static_cast(expr) +#else +#define _RCT_CAST(type, expr) expr +#endif + +/** + * This macro is used for creating converters for enum types. + */ +#define RCT_ENUM_CONVERTER(type, values, default, getter) \ + +(type)type : (id)json RCT_DYNAMIC \ + { \ + static NSDictionary *mapping; \ + static dispatch_once_t onceToken; \ + dispatch_once(&onceToken, ^{ \ + mapping = values; \ + }); \ + return _RCT_CAST(type, [RCTConvertEnumValue(#type, mapping, @(default), json) getter]); \ + } + +/** + * This macro is used for creating converters for enum types for + * multiple enum values combined with | operator + */ +#define RCT_MULTI_ENUM_CONVERTER(type, values, default, getter) \ + +(type)type : (id)json RCT_DYNAMIC \ + { \ + static NSDictionary *mapping; \ + static dispatch_once_t onceToken; \ + dispatch_once(&onceToken, ^{ \ + mapping = values; \ + }); \ + return _RCT_CAST(type, [RCTConvertMultiEnumValue(#type, mapping, @(default), json) getter]); \ + } + +/** + * This macro is used for creating explicitly-named converter functions + * for typed arrays. + */ +#define RCT_ARRAY_CONVERTER_NAMED(type, name) \ + +(NSArray *)name##Array : (id)json RCT_DYNAMIC \ + { \ + return RCTConvertArrayValue(@selector(name:), json); \ + } + +/** + * This macro is used for creating converter functions for typed arrays. + * RCT_ARRAY_CONVERTER_NAMED may be used when type contains characters + * which are disallowed in selector names. + */ +#define RCT_ARRAY_CONVERTER(type) RCT_ARRAY_CONVERTER_NAMED(type, type) diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTCxxConvert.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTCxxConvert.h new file mode 100644 index 0000000..261e61f --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTCxxConvert.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +/** + * This class provides a collection of conversion functions for mapping + * JSON objects to cxx types. Extensible via categories. + * Convert methods are expected to return cxx objects wrapped in RCTManagedPointer. + */ + +@interface RCTCxxConvert : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDataRequestHandler.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDataRequestHandler.h new file mode 100644 index 0000000..f0b2c68 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDataRequestHandler.h @@ -0,0 +1,16 @@ +/* + * 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 +#import + +/** + * This is the default RCTURLRequestHandler implementation for data URL requests. + */ +@interface RCTDataRequestHandler : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDatePicker.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDatePicker.h new file mode 100644 index 0000000..14f9a2e --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDatePicker.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTDatePicker : UIDatePicker + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDatePickerManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDatePickerManager.h new file mode 100644 index 0000000..bd14cd3 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDatePickerManager.h @@ -0,0 +1,19 @@ +/* + * 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 +#import + +@interface RCTConvert (UIDatePicker) + ++ (UIDatePickerMode)UIDatePickerMode:(id)json; + +@end + +@interface RCTDatePickerManager : RCTViewManager + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDecayAnimation.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDecayAnimation.h new file mode 100644 index 0000000..e68450e --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDecayAnimation.h @@ -0,0 +1,12 @@ +/* + * 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 "RCTAnimationDriver.h" + +@interface RCTDecayAnimation : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDefines.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDefines.h new file mode 100644 index 0000000..4b9517e --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDefines.h @@ -0,0 +1,163 @@ +/* + * 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. + */ + +#if __OBJC__ +#import +#endif + +/** + * Make global functions usable in C++ + */ +#if defined(__cplusplus) +#define RCT_EXTERN extern "C" __attribute__((visibility("default"))) +#define RCT_EXTERN_C_BEGIN extern "C" { +#define RCT_EXTERN_C_END } +#else +#define RCT_EXTERN extern __attribute__((visibility("default"))) +#define RCT_EXTERN_C_BEGIN +#define RCT_EXTERN_C_END +#endif + +/** + * The RCT_DEBUG macro can be used to exclude error checking and logging code + * from release builds to improve performance and reduce binary size. + */ +#ifndef RCT_DEBUG +#if DEBUG +#define RCT_DEBUG 1 +#else +#define RCT_DEBUG 0 +#endif +#endif + +/** + * The RCT_DEV macro can be used to enable or disable development tools + * such as the debug executors, dev menu, red box, etc. + */ +#ifndef RCT_DEV +#if DEBUG +#define RCT_DEV 1 +#else +#define RCT_DEV 0 +#endif +#endif + +/** + * RCT_DEV_MENU can be used to toggle the dev menu separately from RCT_DEV. + * By default though, it will inherit from RCT_DEV. + */ +#ifndef RCT_DEV_MENU +#define RCT_DEV_MENU RCT_DEV +#endif + +/** + * Controls for the core packgaer loading functionality + * By default, this inherits from RCT_DEV_MENU but it also gives the capability to + * enable the packager functionality without the rest of the dev tools from RCT_DEV_MENU + */ +#ifndef RCT_ENABLE_LOADING_FROM_PACKAGER +#define RCT_ENABLE_LOADING_FROM_PACKAGER RCT_DEV_MENU +#endif + +#ifndef RCT_ENABLE_INSPECTOR +#if RCT_DEV && __has_include() +#define RCT_ENABLE_INSPECTOR 1 +#else +#define RCT_ENABLE_INSPECTOR 0 +#endif +#endif + +#ifndef RCT_DEV_SETTINGS_ENABLE_PACKAGER_CONNECTION +#if RCT_DEV && (__has_include("RCTPackagerConnection.h") || __has_include()) +#define RCT_DEV_SETTINGS_ENABLE_PACKAGER_CONNECTION 1 +#else +#define RCT_DEV_SETTINGS_ENABLE_PACKAGER_CONNECTION 0 +#endif +#endif + +#if RCT_DEV +#define RCT_IF_DEV(...) __VA_ARGS__ +#else +#define RCT_IF_DEV(...) +#endif + +#ifndef RCT_PROFILE +#define RCT_PROFILE RCT_DEV +#endif + +/** + * Add the default Metro packager port number + */ +#ifndef RCT_METRO_PORT +#define RCT_METRO_PORT 8081 +#else +// test if RCT_METRO_PORT is empty +#define RCT_METRO_PORT_DO_EXPAND(VAL) VAL##1 +#define RCT_METRO_PORT_EXPAND(VAL) RCT_METRO_PORT_DO_EXPAND(VAL) +#if !defined(RCT_METRO_PORT) || (RCT_METRO_PORT_EXPAND(RCT_METRO_PORT) == 1) +// Only here if RCT_METRO_PORT is not defined +// OR RCT_METRO_PORT is the empty string +#undef RCT_METRO_PORT +#define RCT_METRO_PORT 8081 +#endif +#endif + +/** + * Add the default packager name + */ +#ifndef RCT_PACKAGER_NAME +#define RCT_PACKAGER_NAME @"Metro" +#endif + +/** + * By default, only raise an NSAssertion in debug mode + * (custom assert functions will still be called). + */ +#ifndef RCT_NSASSERT +#define RCT_NSASSERT RCT_DEBUG +#endif + +/** + * Concat two literals. Supports macro expansions, + * e.g. RCT_CONCAT(foo, __FILE__). + */ +#define RCT_CONCAT2(A, B) A##B +#define RCT_CONCAT(A, B) RCT_CONCAT2(A, B) + +/** + * This attribute is used for static analysis. + */ +#if !defined RCT_DYNAMIC +#if __has_attribute(objc_dynamic) +#define RCT_DYNAMIC __attribute__((objc_dynamic)) +#else +#define RCT_DYNAMIC +#endif +#endif + +/** + * Throw an assertion for unimplemented methods. + */ +#define RCT_NOT_IMPLEMENTED(method) \ + _Pragma("clang diagnostic push") _Pragma("clang diagnostic ignored \"-Wmissing-method-return-type\"") \ + _Pragma("clang diagnostic ignored \"-Wunused-parameter\"") \ + RCT_EXTERN NSException *_RCTNotImplementedException(SEL, Class); \ + method NS_UNAVAILABLE \ + { \ + @throw _RCTNotImplementedException(_cmd, [self class]); \ + } \ + _Pragma("clang diagnostic pop") + +/** + * Controls for activating the new architecture without the legacy system. + * Note: this is work in progress. + */ +#ifdef REACT_NATIVE_FORCE_NEW_ARCHITECTURE +#define RCT_NEW_ARCHITECTURE 1 +#else +#define RCT_NEW_ARCHITECTURE 0 +#endif diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDevLoadingView.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDevLoadingView.h new file mode 100644 index 0000000..da5ad2d --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDevLoadingView.h @@ -0,0 +1,13 @@ +/* + * 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 +#import +#import + +@interface RCTDevLoadingView : NSObject +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDevLoadingViewProtocol.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDevLoadingViewProtocol.h new file mode 100644 index 0000000..001a18e --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDevLoadingViewProtocol.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +@class RCTLoadingProgress; + +@protocol RCTDevLoadingViewProtocol ++ (void)setEnabled:(BOOL)enabled; +- (void)showMessage:(NSString *)message color:(UIColor *)color backgroundColor:(UIColor *)backgroundColor; +- (void)showWithURL:(NSURL *)URL; +- (void)updateProgress:(RCTLoadingProgress *)progress; +- (void)hide; +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDevLoadingViewSetEnabled.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDevLoadingViewSetEnabled.h new file mode 100644 index 0000000..1ad1825 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDevLoadingViewSetEnabled.h @@ -0,0 +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. + */ + +#import + +RCT_EXTERN void RCTDevLoadingViewSetEnabled(BOOL enabled); +RCT_EXTERN BOOL RCTDevLoadingViewGetEnabled(void); diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDevMenu.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDevMenu.h new file mode 100644 index 0000000..b322afb --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDevMenu.h @@ -0,0 +1,105 @@ +/* + * 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 + +#import +#import +#import + +#if RCT_DEV_MENU + +RCT_EXTERN NSString *const RCTShowDevMenuNotification; + +#endif + +@class RCTDevMenuItem; + +/** + * Developer menu, useful for exposing extra functionality when debugging. + */ +@interface RCTDevMenu : NSObject + +/** + * Deprecated, use RCTDevSettings instead. + */ +@property (nonatomic, assign) BOOL shakeToShow DEPRECATED_ATTRIBUTE; + +/** + * Deprecated, use RCTDevSettings instead. + */ +@property (nonatomic, assign) BOOL profilingEnabled DEPRECATED_ATTRIBUTE; + +/** + * Deprecated, use RCTDevSettings instead. + */ +@property (nonatomic, assign) BOOL hotLoadingEnabled DEPRECATED_ATTRIBUTE; + +/** + * Presented items in development menu + */ +@property (nonatomic, copy, readonly) NSArray *presentedItems; + +/** + * Detect if actions sheet (development menu) is shown + */ +- (BOOL)isActionSheetShown; + +/** + * Manually show the dev menu (can be called from JS). + */ +- (void)show; + +/** + * Deprecated, use `RCTReloadCommand` instead. + */ +- (void)reload DEPRECATED_ATTRIBUTE; + +/** + * Deprecated. Use the `-addItem:` method instead. + */ +- (void)addItem:(NSString *)title handler:(void (^)(void))handler DEPRECATED_ATTRIBUTE; + +/** + * Add custom item to the development menu. The handler will be called + * when user selects the item. + */ +- (void)addItem:(RCTDevMenuItem *)item; + +@end + +typedef NSString * (^RCTDevMenuItemTitleBlock)(void); + +/** + * Developer menu item, used to expose additional functionality via the menu. + */ +@interface RCTDevMenuItem : NSObject + +/** + * This creates an item with a simple push-button interface, used to trigger an + * action. + */ ++ (instancetype)buttonItemWithTitle:(NSString *)title handler:(dispatch_block_t)handler; + +/** + * This creates an item with a simple push-button interface, used to trigger an + * action. getTitleForPresentation is called each time the item is about to be + * presented, and should return the item's title. + */ ++ (instancetype)buttonItemWithTitleBlock:(RCTDevMenuItemTitleBlock)titleBlock handler:(dispatch_block_t)handler; + +@end + +/** + * This category makes the developer menu instance available via the + * RCTBridge, which is useful for any class that needs to access the menu. + */ +@interface RCTBridge (RCTDevMenu) + +@property (nonatomic, readonly) RCTDevMenu *devMenu; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDevSettings.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDevSettings.h new file mode 100644 index 0000000..9661caf --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDevSettings.h @@ -0,0 +1,120 @@ +/* + * 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 +#import +#import +#import + +@protocol RCTPackagerClientMethod; + +/** + * An abstraction for a key-value store to manage RCTDevSettings behavior. + * The default implementation persists settings using NSUserDefaults. + */ +@protocol RCTDevSettingsDataSource + +/** + * Updates the setting with the given key to the given value. + * How the data source's state changes depends on the implementation. + */ +- (void)updateSettingWithValue:(id)value forKey:(NSString *)key; + +/** + * Returns the value for the setting with the given key. + */ +- (id)settingForKey:(NSString *)key; + +@end + +@protocol RCTDevSettingsInspectable + +/** + * Whether current jsi::Runtime is inspectable. + * Only set when using as a bridgeless turbo module. + */ +@property (nonatomic, assign, readwrite) BOOL isInspectable; + +@end + +@interface RCTDevSettings : RCTEventEmitter + +- (instancetype)initWithDataSource:(id)dataSource; + +@property (nonatomic, readonly) BOOL isHotLoadingAvailable; +@property (nonatomic, readonly) BOOL isRemoteDebuggingAvailable; +@property (nonatomic, readonly) BOOL isDeviceDebuggingAvailable; +@property (nonatomic, readonly) BOOL isJSCSamplingProfilerAvailable; + +/** + * Whether the bridge is connected to a remote JS executor. + */ +@property (nonatomic, assign) BOOL isDebuggingRemotely; + +/* + * Whether shaking will show RCTDevMenu. The menu is enabled by default if RCT_DEV=1, but + * you may wish to disable it so that you can provide your own shake handler. + */ +@property (nonatomic, assign) BOOL isShakeToShowDevMenuEnabled; + +/** + * Whether performance profiling is enabled. + */ +@property (nonatomic, assign, setter=setProfilingEnabled:) BOOL isProfilingEnabled; + +/** + * Whether hot loading is enabled. + */ +@property (nonatomic, assign, setter=setHotLoadingEnabled:) BOOL isHotLoadingEnabled; + +/** + * Enables starting of profiling sampler on launch + */ +@property (nonatomic, assign) BOOL startSamplingProfilerOnLaunch; + +/** + * Whether the element inspector is visible. + */ +@property (nonatomic, readonly) BOOL isElementInspectorShown; + +/** + * Whether the performance monitor is visible. + */ +@property (nonatomic, assign) BOOL isPerfMonitorShown; + +/** + * Toggle the element inspector. + */ +- (void)toggleElementInspector; + +/** + * Set up the HMRClient if loading the bundle from Metro. + */ +- (void)setupHMRClientWithBundleURL:(NSURL *)bundleURL; + +/** + * Register additional bundles with the HMRClient. + */ +- (void)setupHMRClientWithAdditionalBundleURL:(NSURL *)bundleURL; + +#if RCT_DEV_MENU +- (void)addHandler:(id)handler + forPackagerMethod:(NSString *)name __deprecated_msg("Use RCTPackagerConnection directly instead"); +#endif + +@end + +@interface RCTBridge (RCTDevSettings) + +@property (nonatomic, readonly) RCTDevSettings *devSettings; + +@end + +// In debug builds, the dev menu is enabled by default but it is further customizable using this method. +// However, this method only has an effect in builds where the dev menu is actually compiled in. +// (i.e. RCT_DEV or RCT_DEV_MENU is set) +RCT_EXTERN void RCTDevSettingsSetEnabled(BOOL enabled); diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDevSplitBundleLoader.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDevSplitBundleLoader.h new file mode 100644 index 0000000..52a115c --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDevSplitBundleLoader.h @@ -0,0 +1,13 @@ +/* + * 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 +#import +#import + +@interface RCTDevSplitBundleLoader : NSObject +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDeviceInfo.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDeviceInfo.h new file mode 100644 index 0000000..cef03be --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDeviceInfo.h @@ -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 + +#import + +@interface RCTDeviceInfo : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDiffClampAnimatedNode.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDiffClampAnimatedNode.h new file mode 100644 index 0000000..085fb3d --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDiffClampAnimatedNode.h @@ -0,0 +1,12 @@ +/* + * 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 "RCTValueAnimatedNode.h" + +@interface RCTDiffClampAnimatedNode : RCTValueAnimatedNode + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDisplayLink.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDisplayLink.h new file mode 100644 index 0000000..1e79c0b --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDisplayLink.h @@ -0,0 +1,20 @@ +/* + * 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 + +@protocol RCTBridgeModule; +@class RCTModuleData; + +@interface RCTDisplayLink : NSObject + +- (instancetype)init; +- (void)invalidate; +- (void)registerModuleForFrameUpdates:(id)module withModuleData:(RCTModuleData *)moduleData; +- (void)addToRunLoop:(NSRunLoop *)runLoop; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDisplayWeakRefreshable.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDisplayWeakRefreshable.h new file mode 100644 index 0000000..c1ea105 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDisplayWeakRefreshable.h @@ -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 + +@protocol RCTDisplayRefreshable + +- (void)displayDidRefresh:(CADisplayLink *)displayLink; + +@end + +@interface RCTDisplayWeakRefreshable : NSObject + +@property (nonatomic, weak) id refreshable; + ++ (CADisplayLink *)displayLinkWithWeakRefreshable:(id)refreshable; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDivisionAnimatedNode.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDivisionAnimatedNode.h new file mode 100644 index 0000000..006fd5a --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTDivisionAnimatedNode.h @@ -0,0 +1,12 @@ +/* + * 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 "RCTValueAnimatedNode.h" + +@interface RCTDivisionAnimatedNode : RCTValueAnimatedNode + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTErrorCustomizer.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTErrorCustomizer.h new file mode 100644 index 0000000..aa65296 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTErrorCustomizer.h @@ -0,0 +1,23 @@ +/* + * 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 + +@class RCTErrorInfo; + +/** + * Provides an interface to customize React Native error messages and stack + * traces from exceptions. + */ +@protocol RCTErrorCustomizer + +/** + * Customizes the given error, returning the passed info argument if no + * customization is required. + */ +- (nonnull RCTErrorInfo *)customizeErrorInfo:(nonnull RCTErrorInfo *)info; +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTErrorInfo.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTErrorInfo.h new file mode 100644 index 0000000..a5d74d8 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTErrorInfo.h @@ -0,0 +1,21 @@ +/* + * 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 + +@class RCTJSStackFrame; + +/** + * An ObjC wrapper for React Native errors. + */ +@interface RCTErrorInfo : NSObject +@property (nonatomic, copy, readonly) NSString *errorMessage; +@property (nonatomic, copy, readonly) NSArray *stack; + +- (instancetype)initWithErrorMessage:(NSString *)errorMessage stack:(NSArray *)stack; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTEventAnimation.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTEventAnimation.h new file mode 100644 index 0000000..c63c1f4 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTEventAnimation.h @@ -0,0 +1,21 @@ +/* + * 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 + +#import "RCTValueAnimatedNode.h" + +@interface RCTEventAnimation : NSObject + +@property (nonatomic, readonly, weak) RCTValueAnimatedNode *valueNode; + +- (instancetype)initWithEventPath:(NSArray *)eventPath + valueNode:(RCTValueAnimatedNode *)valueNode; + +- (void)updateWithEvent:(id)event; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTEventDispatcher.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTEventDispatcher.h new file mode 100644 index 0000000..bbcd643 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTEventDispatcher.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +#import +#import +#import +/** + * This class wraps the -[RCTBridge enqueueJSCall:args:] method, and + * provides some convenience methods for generating event calls. + */ +@interface RCTEventDispatcher : NSObject +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTEventDispatcherProtocol.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTEventDispatcherProtocol.h new file mode 100644 index 0000000..913cf85 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTEventDispatcherProtocol.h @@ -0,0 +1,129 @@ +/* + * 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 + +#import + +/** + * The threshold at which text inputs will start warning that the JS thread + * has fallen behind (resulting in poor input performance, missed keys, etc.) + */ +RCT_EXTERN const NSInteger RCTTextUpdateLagWarningThreshold; + +/** + * Takes an input event name and normalizes it to the form that is required + * by the events system (currently that means starting with the "top" prefix, + * but that's an implementation detail that may change in future). + */ +RCT_EXTERN NSString *RCTNormalizeInputEventName(NSString *eventName); + +typedef NS_ENUM(NSInteger, RCTTextEventType) { + RCTTextEventTypeFocus, + RCTTextEventTypeBlur, + RCTTextEventTypeChange, + RCTTextEventTypeSubmit, + RCTTextEventTypeEnd, + RCTTextEventTypeKeyPress +}; + +@protocol RCTEvent +@required + +@property (nonatomic, strong, readonly) NSNumber *viewTag; +@property (nonatomic, copy, readonly) NSString *eventName; + +- (BOOL)canCoalesce; + +/** used directly for doing a JS call */ ++ (NSString *)moduleDotMethod; + +/** must contain only JSON compatible values */ +- (NSArray *)arguments; + +@optional + +/** + * Coalescing related methods must only be implemented if canCoalesce + * returns YES. + */ +@property (nonatomic, assign, readonly) uint16_t coalescingKey; +- (id)coalesceWithEvent:(id)newEvent; + +@end + +/** + * This protocol allows observing events dispatched by RCTEventDispatcher. + */ +@protocol RCTEventDispatcherObserver + +/** + * Called before dispatching an event, on the same thread the event was + * dispatched from. + */ +- (void)eventDispatcherWillDispatchEvent:(id)event; + +@end + +@protocol RCTJSDispatcherModule + +@property (nonatomic, copy) void (^dispatchToJSThread)(dispatch_block_t block); + +@end + +/** + * This class wraps the -[RCTBridge enqueueJSCall:args:] method, and + * provides some convenience methods for generating event calls. + */ +@protocol RCTEventDispatcherProtocol + +- (void)sendViewEventWithName:(NSString *)name reactTag:(NSNumber *)reactTag; + +/** + * Deprecated, do not use. + */ +- (void)sendAppEventWithName:(NSString *)name body:(id)body __deprecated_msg("Subclass RCTEventEmitter instead"); + +/** + * Deprecated, do not use. + */ +- (void)sendDeviceEventWithName:(NSString *)name body:(id)body __deprecated_msg("Subclass RCTEventEmitter instead"); + +/** + * Send a text input/focus event. For internal use only. + */ +- (void)sendTextEventWithType:(RCTTextEventType)type + reactTag:(NSNumber *)reactTag + text:(NSString *)text + key:(NSString *)key + eventCount:(NSInteger)eventCount; + +/** + * Send a pre-prepared event object. + * + * Events are sent to JS as soon as the thread is free to process them. + * If an event can be coalesced and there is another compatible event waiting, the coalescing will happen immediately. + */ +- (void)sendEvent:(id)event; + +/** + * Add an event dispatcher observer. + */ +- (void)addDispatchObserver:(id)observer; + +/** + * Remove an event dispatcher observer. + */ +- (void)removeDispatchObserver:(id)observer; + +@end + +@interface RCTBridge (RCTEventDispatcher) + +- (id)eventDispatcher; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTEventEmitter.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTEventEmitter.h new file mode 100644 index 0000000..e3bb12f --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTEventEmitter.h @@ -0,0 +1,48 @@ +/* + * 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 + +/** + * RCTEventEmitter is an abstract base class to be used for modules that emit + * events to be observed by JS. + */ +@interface RCTEventEmitter : NSObject + +@property (nonatomic, weak) RCTBridge *bridge; +@property (nonatomic, weak) RCTModuleRegistry *moduleRegistry; +@property (nonatomic, weak) RCTViewRegistry *viewRegistry_DEPRECATED; + +- (instancetype)initWithDisabledObservation; + +/** + * Override this method to return an array of supported event names. Attempting + * to observe or send an event that isn't included in this list will result in + * an error. + */ +- (NSArray *)supportedEvents; + +/** + * Send an event that does not relate to a specific view, e.g. a navigation + * or data update notification. + */ +- (void)sendEventWithName:(NSString *)name body:(id)body; + +/** + * These methods will be called when the first observer is added and when the + * last observer is removed (or when dealloc is called), respectively. These + * should be overridden in your subclass in order to start/stop sending events. + */ +- (void)startObserving; +- (void)stopObserving; + +- (void)invalidate NS_REQUIRES_SUPER; + +- (void)addListener:(NSString *)eventName; +- (void)removeListeners:(double)count; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTExceptionsManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTExceptionsManager.h new file mode 100644 index 0000000..28ae105 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTExceptionsManager.h @@ -0,0 +1,47 @@ +/* + * 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 + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol RCTExceptionsManagerDelegate + +- (void)handleSoftJSExceptionWithMessage:(nullable NSString *)message + stack:(nullable NSArray *)stack + exceptionId:(NSNumber *)exceptionId; +- (void)handleFatalJSExceptionWithMessage:(nullable NSString *)message + stack:(nullable NSArray *)stack + exceptionId:(NSNumber *)exceptionId; + +@optional +- (void)updateJSExceptionWithMessage:(nullable NSString *)message + stack:(nullable NSArray *)stack + exceptionId:(NSNumber *)exceptionId; + +@end + +@interface RCTExceptionsManager : NSObject + +- (instancetype)initWithDelegate:(id)delegate; + +- (void)reportSoftException:(nullable NSString *)message + stack:(nullable NSArray *)stack + exceptionId:(double)exceptionId; +- (void)reportFatalException:(nullable NSString *)message + stack:(nullable NSArray *)stack + exceptionId:(double)exceptionId; + +@property (nonatomic, weak) id delegate; + +@property (nonatomic, assign) NSUInteger maxReloadAttempts; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTFPSGraph.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTFPSGraph.h new file mode 100644 index 0000000..73dd6bd --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTFPSGraph.h @@ -0,0 +1,26 @@ +/* + * 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 + +#import + +#if RCT_DEV + +@interface RCTFPSGraph : UIView + +@property (nonatomic, assign, readonly) NSUInteger FPS; +@property (nonatomic, assign, readonly) NSUInteger maxFPS; +@property (nonatomic, assign, readonly) NSUInteger minFPS; + +- (instancetype)initWithFrame:(CGRect)frame color:(UIColor *)color NS_DESIGNATED_INITIALIZER; + +- (void)onTick:(NSTimeInterval)timestamp; + +@end + +#endif diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTFileReaderModule.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTFileReaderModule.h new file mode 100644 index 0000000..0eb246b --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTFileReaderModule.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTFileReaderModule : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTFileRequestHandler.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTFileRequestHandler.h new file mode 100644 index 0000000..7faf39d --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTFileRequestHandler.h @@ -0,0 +1,16 @@ +/* + * 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 +#import + +/** + * This is the default RCTURLRequestHandler implementation for file requests. + */ +@interface RCTFileRequestHandler : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTFont.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTFont.h new file mode 100644 index 0000000..15437dd --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTFont.h @@ -0,0 +1,49 @@ +/* + * 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 + +#import + +typedef UIFont * (^RCTFontHandler)(CGFloat fontSize, NSString *fontWeightDescription); + +/** + * React Native will use the System font for rendering by default. If you want to + * provide a different base font, use this override. The font weight supplied to your + * handler will be one of "ultralight", "thin", "light", "regular", "medium", + * "semibold", "extrabold", "bold", "heavy", or "black". + */ +RCT_EXTERN void RCTSetDefaultFontHandler(RCTFontHandler handler); +RCT_EXTERN BOOL RCTHasFontHandlerSet(void); + +@interface RCTFont : NSObject + +/** + * Update a font with a given font-family, size, weight and style. + * If parameters are not specified, they'll be kept as-is. + * If font is nil, the default system font of size 14 will be used. + */ ++ (UIFont *)updateFont:(UIFont *)font + withFamily:(NSString *)family + size:(NSNumber *)size + weight:(NSString *)weight + style:(NSString *)style + variant:(NSArray *)variant + scaleMultiplier:(CGFloat)scaleMultiplier; + ++ (UIFont *)updateFont:(UIFont *)font withFamily:(NSString *)family; ++ (UIFont *)updateFont:(UIFont *)font withSize:(NSNumber *)size; ++ (UIFont *)updateFont:(UIFont *)font withWeight:(NSString *)weight; ++ (UIFont *)updateFont:(UIFont *)font withStyle:(NSString *)style; + +@end + +@interface RCTConvert (RCTFont) + ++ (UIFont *)UIFont:(id)json; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTFrameAnimation.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTFrameAnimation.h new file mode 100644 index 0000000..610d3ff --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTFrameAnimation.h @@ -0,0 +1,12 @@ +/* + * 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 "RCTAnimationDriver.h" + +@interface RCTFrameAnimation : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTFrameUpdate.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTFrameUpdate.h new file mode 100644 index 0000000..07f0889 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTFrameUpdate.h @@ -0,0 +1,52 @@ +/* + * 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 + +@class CADisplayLink; + +/** + * Interface containing the information about the last screen refresh. + */ +@interface RCTFrameUpdate : NSObject + +/** + * Timestamp for the actual screen refresh + */ +@property (nonatomic, readonly) NSTimeInterval timestamp; + +/** + * Time since the last frame update ( >= 16.6ms ) + */ +@property (nonatomic, readonly) NSTimeInterval deltaTime; + +- (instancetype)initWithDisplayLink:(CADisplayLink *)displayLink NS_DESIGNATED_INITIALIZER; + +@end + +/** + * Protocol that must be implemented for subscribing to display refreshes (DisplayLink updates) + */ +@protocol RCTFrameUpdateObserver + +/** + * Method called on every screen refresh (if paused != YES) + */ +- (void)didUpdateFrame:(RCTFrameUpdate *)update; + +/** + * Synthesize and set to true to pause the calls to -[didUpdateFrame:] + */ +@property (nonatomic, readonly, getter=isPaused) BOOL paused; + +/** + * Callback for pause/resume observer. + * Observer should call it when paused property is changed. + */ +@property (nonatomic, copy) dispatch_block_t pauseCallback; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTGIFImageDecoder.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTGIFImageDecoder.h new file mode 100644 index 0000000..2d56637 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTGIFImageDecoder.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTGIFImageDecoder : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTHTTPRequestHandler.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTHTTPRequestHandler.h new file mode 100644 index 0000000..5a91bd0 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTHTTPRequestHandler.h @@ -0,0 +1,21 @@ +/* + * 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 +#import + +typedef NSURLSessionConfiguration* (^NSURLSessionConfigurationProvider)(void); +/** + * The block provided via this function will provide the NSURLSessionConfiguration for all HTTP requests made by the app. +*/ +RCT_EXTERN void RCTSetCustomNSURLSessionConfigurationProvider(NSURLSessionConfigurationProvider); +/** + * This is the default RCTURLRequestHandler implementation for HTTP requests. + */ +@interface RCTHTTPRequestHandler : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTI18nManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTI18nManager.h new file mode 100644 index 0000000..5f21ec4 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTI18nManager.h @@ -0,0 +1,17 @@ +/* + * 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 + +/** + * @experimental + * This is a experimental module for RTL support + * This module bridges the i18n utility from RCTI18nUtil + */ +@interface RCTI18nManager : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTI18nUtil.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTI18nUtil.h new file mode 100644 index 0000000..f3a1550 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTI18nUtil.h @@ -0,0 +1,28 @@ +/* + * 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 + +/** + * @experimental + * This is a experimental module for to expose constance IsRTL to js about the RTL status. + * And it allows js to force RLT status for development propose. + * This will also provide other i18n related utilities in the future. + */ +@interface RCTI18nUtil : NSObject + ++ (instancetype)sharedInstance; + +- (BOOL)isRTL; +- (BOOL)isRTLAllowed; +- (void)allowRTL:(BOOL)value; +- (BOOL)isRTLForced; +- (void)forceRTL:(BOOL)value; +- (BOOL)doLeftAndRightSwapInRTL; +- (void)swapLeftAndRightInRTL:(BOOL)value; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageBlurUtils.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageBlurUtils.h new file mode 100644 index 0000000..18a286e --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageBlurUtils.h @@ -0,0 +1,13 @@ +/* + * 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 +#import + +#import + +RCT_EXTERN UIImage *RCTBlurredImageWithRadius(UIImage *inputImage, CGFloat radius); diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageCache.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageCache.h new file mode 100644 index 0000000..a4d15b4 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageCache.h @@ -0,0 +1,42 @@ +/* + * 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 +#import + +#import + +@interface UIImage (React) + +/** + * Memory bytes of the image with the default calculation of static image or GIF. Custom calculations of decoded bytes can be assigned manually. + */ +@property (nonatomic, assign) NSInteger reactDecodedImageBytes; + +@end + +/** + * Provides an interface to use for providing a image caching strategy. + */ +@protocol RCTImageCache + +- (UIImage *)imageForUrl:(NSString *)url + size:(CGSize)size + scale:(CGFloat)scale + resizeMode:(RCTResizeMode)resizeMode; + +- (void)addImageToCache:(UIImage *)image + URL:(NSString *)url + size:(CGSize)size + scale:(CGFloat)scale + resizeMode:(RCTResizeMode)resizeMode + response:(NSURLResponse *)response; + +@end + +@interface RCTImageCache : NSObject +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageDataDecoder.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageDataDecoder.h new file mode 100644 index 0000000..b7fbb00 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageDataDecoder.h @@ -0,0 +1,53 @@ +/* + * 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 + +#import +#import +#import +#import + +/** + * Provides the interface needed to register an image decoder. Image decoders + * are also bridge modules, so should be registered using RCT_EXPORT_MODULE(). + */ +@protocol RCTImageDataDecoder + +/** + * Indicates whether this handler is capable of decoding the specified data. + * Typically the handler would examine some sort of header data to determine + * this. + */ +- (BOOL)canDecodeImageData:(NSData *)imageData; + +/** + * Decode an image from the data object. The method should call the + * completionHandler when the decoding operation has finished. The method + * should also return a cancellation block, if applicable. + * + * If you provide a custom image decoder, you most implement scheduling yourself, + * to avoid decoding large amounts of images at the same time. + */ +- (RCTImageLoaderCancellationBlock)decodeImageData:(NSData *)imageData + size:(CGSize)size + scale:(CGFloat)scale + resizeMode:(RCTResizeMode)resizeMode + completionHandler:(RCTImageLoaderCompletionBlock)completionHandler; + +@optional + +/** + * If more than one RCTImageDataDecoder responds YES to `-canDecodeImageData:` + * then `decoderPriority` is used to determine which one to use. The decoder + * with the highest priority will be selected. Default priority is zero. + * If two or more valid decoders have the same priority, the selection order is + * undefined. + */ +- (float)decoderPriority; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageEditingManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageEditingManager.h new file mode 100644 index 0000000..216b622 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageEditingManager.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTImageEditingManager : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageLoader.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageLoader.h new file mode 100644 index 0000000..da0df28 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageLoader.h @@ -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 + +#import +#import +#import +#import +#import +#import +#import +#import +#import + +@interface RCTImageLoader : NSObject +- (instancetype)init; +- (instancetype)initWithRedirectDelegate:(id)redirectDelegate NS_DESIGNATED_INITIALIZER; +- (instancetype)initWithRedirectDelegate:(id)redirectDelegate + loadersProvider:(NSArray> * (^)(RCTModuleRegistry *))getLoaders + decodersProvider:(NSArray> * (^)(RCTModuleRegistry *))getDecoders; +@end + +/** + * DEPRECATED!! DO NOT USE + * Instead use `[_bridge moduleForClass:[RCTImageLoader class]]` + */ +@interface RCTBridge (RCTImageLoader) + +@property (nonatomic, readonly) RCTImageLoader *imageLoader; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageLoaderLoggable.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageLoaderLoggable.h new file mode 100644 index 0000000..3b78c48 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageLoaderLoggable.h @@ -0,0 +1,30 @@ +/* + * 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. + */ + +/** + * The image loader (i.e. RCTImageLoader) implement this to declare whether image performance should be logged. + */ +@protocol RCTImageLoaderLoggableProtocol + +/** + * Image instrumentation - declares whether its caller should log images + */ +- (BOOL)shouldEnablePerfLoggingForRequestUrl:(NSURL *)url; + +@end + +/** + * Image handlers in the image loader implement this to declare whether image performance should be logged. + */ +@protocol RCTImageLoaderLoggable + +/** + * Image instrumentation - declares whether its caller should log images + */ +- (BOOL)shouldEnablePerfLogging; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageLoaderProtocol.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageLoaderProtocol.h new file mode 100644 index 0000000..f1bb268 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageLoaderProtocol.h @@ -0,0 +1,138 @@ +/* + * 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 + +#import +#import +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * If available, RCTImageRedirectProtocol is invoked before loading an asset. + * Implementation should return either a new URL or nil when redirection is + * not needed. + */ + +@protocol RCTImageRedirectProtocol + +- (NSURL *)redirectAssetsURL:(NSURL *)URL; + +@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 + +/** + * The maximum number of concurrent image loading tasks. Loading and decoding + * images can consume a lot of memory, so setting this to a higher value may + * cause memory to spike. If you are seeing out-of-memory crashes, try reducing + * this value. + */ +@property (nonatomic, assign) NSUInteger maxConcurrentLoadingTasks; + +/** + * The maximum number of concurrent image decoding tasks. Decoding large + * images can be especially CPU and memory intensive, so if your are decoding a + * lot of large images in your app, you may wish to adjust this value. + */ +@property (nonatomic, assign) NSUInteger maxConcurrentDecodingTasks; + +/** + * Decoding large images can use a lot of memory, and potentially cause the app + * to crash. This value allows you to throttle the amount of memory used by the + * decoder independently of the number of concurrent threads. This means you can + * still decode a lot of small images in parallel, without allowing the decoder + * to try to decompress multiple huge images at once. Note that this value is + * only a hint, and not an indicator of the total memory used by the app. + */ +@property (nonatomic, assign) NSUInteger maxConcurrentDecodingBytes; + +/** + * Loads the specified image at the highest available resolution. + * Can be called from any thread, will call back on an unspecified thread. + */ +- (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. +*/ +- (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 + * `resizeMode` for optimal image decoding. 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. Can be called from any + * thread, will call callback on an unspecified thread. + */ +- (RCTImageLoaderCancellationBlock)decodeImageData:(NSData *)imageData + size:(CGSize)size + scale:(CGFloat)scale + clipped:(BOOL)clipped + resizeMode:(RCTResizeMode)resizeMode + completionBlock:(RCTImageLoaderCompletionBlock)completionBlock; + +/** + * Get image size, in pixels. This method will do the least work possible to get + * the information, and won't decode the image if it doesn't have to. + */ +- (RCTImageLoaderCancellationBlock)getImageSizeForURLRequest:(NSURLRequest *)imageURLRequest + block:(void(^)(NSError *error, CGSize size))completionBlock; +/** + * Determines whether given image URLs are cached locally. The `requests` array is expected + * to contain objects convertible to NSURLRequest. The return value maps URLs to strings: + * "disk" for images known to be cached in non-volatile storage, "memory" for images known + * to be cached in memory. Dictionary items corresponding to images that are not known to be + * cached are simply missing. + */ +- (NSDictionary *)getImageCacheStatus:(NSArray *)requests; + +/** + * Allows developers to set their own caching implementation for + * decoded images as long as it conforms to the RCTImageCache + * protocol. This method should be called in bridgeDidInitializeModule. + */ +- (void)setImageCache:(id)cache; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageLoaderWithAttributionProtocol.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageLoaderWithAttributionProtocol.h new file mode 100644 index 0000000..07aab9d --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageLoaderWithAttributionProtocol.h @@ -0,0 +1,51 @@ +/* + * 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 + +#import +#import + +RCT_EXTERN BOOL RCTImageLoadingPerfInstrumentationEnabled(void); +RCT_EXTERN void RCTEnableImageLoadingPerfInstrumentation(BOOL enabled); + +@protocol RCTImageLoaderWithAttributionProtocol + +// TODO (T61325135): Remove C++ checks +#ifdef __cplusplus +/** + * Same as the variant in RCTImageURLLoaderProtocol, but allows passing attribution + * information that each image URL loader can process. + */ +- (RCTImageURLLoaderRequest *)loadImageWithURLRequest:(NSURLRequest *)imageURLRequest + size:(CGSize)size + scale:(CGFloat)scale + clipped:(BOOL)clipped + resizeMode:(RCTResizeMode)resizeMode + priority: (RCTImageLoaderPriority)priority + attribution:(const facebook::react::ImageURLLoaderAttribution &)attribution + progressBlock:(RCTImageLoaderProgressBlock)progressBlock + partialLoadBlock:(RCTImageLoaderPartialLoadBlock)partialLoadBlock + completionBlock:(RCTImageLoaderCompletionBlockWithMetadata)completionBlock; +#endif + +/** + * Image instrumentation - start tracking the on-screen visibility of the native image view. + */ +- (void)trackURLImageVisibilityForRequest:(RCTImageURLLoaderRequest *)loaderRequest imageView:(UIView *)imageView; + +/** + * Image instrumentation - notify that the request was cancelled. + */ +- (void)trackURLImageRequestDidDestroy:(RCTImageURLLoaderRequest *)loaderRequest; + +/** + * Image instrumentation - notify that the native image view was destroyed. + */ +- (void)trackURLImageDidDestroy:(RCTImageURLLoaderRequest *)loaderRequest; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImagePlugins.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImagePlugins.h new file mode 100644 index 0000000..1e943d8 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImagePlugins.h @@ -0,0 +1,44 @@ +/** + * 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 an internal plugin build system + */ + +#ifdef RN_DISABLE_OSS_PLUGIN_HEADER + +// FB Internal: FBRCTImagePlugins.h is autogenerated by the build system. +#import + +#else + +// OSS-compatibility layer + +#import + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wreturn-type-c-linkage" + +#ifdef __cplusplus +extern "C" { +#endif + +// RCTTurboModuleManagerDelegate should call this to resolve module classes. +Class RCTImageClassProvider(const char *name); + +// Lookup functions +Class RCTGIFImageDecoderCls(void) __attribute__((used)); +Class RCTImageEditingManagerCls(void) __attribute__((used)); +Class RCTImageLoaderCls(void) __attribute__((used)); +Class RCTImageStoreManagerCls(void) __attribute__((used)); +Class RCTLocalAssetImageLoaderCls(void) __attribute__((used)); + +#ifdef __cplusplus +} +#endif + +#pragma GCC diagnostic pop + +#endif // RN_DISABLE_OSS_PLUGIN_HEADER diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageShadowView.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageShadowView.h new file mode 100644 index 0000000..3057118 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageShadowView.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTImageShadowView : RCTShadowView + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageSource.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageSource.h new file mode 100644 index 0000000..928657c --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageSource.h @@ -0,0 +1,40 @@ +/* + * 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 + +#import + +/** + * Object containing an image URL and associated metadata. + */ +@interface RCTImageSource : NSObject + +@property (nonatomic, copy, readonly) NSURLRequest *request; +@property (nonatomic, assign, readonly) CGSize size; +@property (nonatomic, assign, readonly) CGFloat scale; + +/** + * Create a new image source object. + * Pass a size of CGSizeZero if you do not know or wish to specify the image + * size. Pass a scale of zero if you do not know or wish to specify the scale. + */ +- (instancetype)initWithURLRequest:(NSURLRequest *)request size:(CGSize)size scale:(CGFloat)scale; + +/** + * Create a copy of the image source with the specified size and scale. + */ +- (instancetype)imageSourceWithSize:(CGSize)size scale:(CGFloat)scale; + +@end + +@interface RCTConvert (ImageSource) + ++ (RCTImageSource *)RCTImageSource:(id)json; ++ (NSArray *)RCTImageSourceArray:(id)json; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageStoreManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageStoreManager.h new file mode 100644 index 0000000..0073381 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageStoreManager.h @@ -0,0 +1,46 @@ +/* + * 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 + +#import +#import + +@interface RCTImageStoreManager : NSObject + +/** + * Set and get cached image data asynchronously. It is safe to call these from any + * thread. The callbacks will be called on an unspecified thread. + */ +- (void)removeImageForTag:(NSString *)imageTag withBlock:(void (^)(void))block; +- (void)storeImageData:(NSData *)imageData withBlock:(void (^)(NSString *imageTag))block; +- (void)getImageDataForTag:(NSString *)imageTag withBlock:(void (^)(NSData *imageData))block; + +/** + * Convenience method to store an image directly (image is converted to data + * internally, so any metadata such as scale or orientation will be lost). + */ +- (void)storeImage:(UIImage *)image withBlock:(void (^)(NSString *imageTag))block; + +@end + +@interface RCTImageStoreManager (Deprecated) + +/** + * These methods are deprecated - use the data-based alternatives instead. + */ +- (NSString *)storeImage:(UIImage *)image __deprecated; +- (UIImage *)imageForTag:(NSString *)imageTag __deprecated; +- (void)getImageForTag:(NSString *)imageTag withBlock:(void (^)(UIImage *image))block __deprecated; + +@end + +@interface RCTBridge (RCTImageStoreManager) + +@property (nonatomic, readonly) RCTImageStoreManager *imageStoreManager; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageURLLoader.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageURLLoader.h new file mode 100644 index 0000000..e49ed11 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageURLLoader.h @@ -0,0 +1,80 @@ +/* + * 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 + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef void (^RCTImageLoaderProgressBlock)(int64_t progress, int64_t total); +typedef void (^RCTImageLoaderPartialLoadBlock)(UIImage *image); +typedef void (^RCTImageLoaderCompletionBlock)(NSError * _Nullable error, UIImage * _Nullable image); +// Metadata is passed as a id in an additional parameter because there are forks of RN without this parameter, +// and the complexity of RCTImageLoader would make using protocols here difficult to typecheck. +typedef void (^RCTImageLoaderCompletionBlockWithMetadata)(NSError * _Nullable error, UIImage * _Nullable image, id _Nullable metadata); +typedef dispatch_block_t RCTImageLoaderCancellationBlock; + +/** + * Provides the interface needed to register an image loader. Image data + * loaders are also bridge modules, so should be registered using + * RCT_EXPORT_MODULE(). + */ +@protocol RCTImageURLLoader + +/** + * Indicates whether this data loader is capable of processing the specified + * request URL. Typically the handler would examine the scheme/protocol of the + * URL to determine this. + */ +- (BOOL)canLoadImageURL:(NSURL *)requestURL; + +/** + * Send a network request to load the request URL. The method should call the + * progressHandler (if applicable) and the completionHandler when the request + * has finished. The method should also return a cancellation block, if + * applicable. + */ +- (nullable RCTImageLoaderCancellationBlock)loadImageForURL:(NSURL *)imageURL + size:(CGSize)size + scale:(CGFloat)scale + resizeMode:(RCTResizeMode)resizeMode + progressHandler:(RCTImageLoaderProgressBlock)progressHandler + partialLoadHandler:(RCTImageLoaderPartialLoadBlock)partialLoadHandler + completionHandler:(RCTImageLoaderCompletionBlock)completionHandler; + +@optional + +/** + * If more than one RCTImageURLLoader responds YES to `-canLoadImageURL:` + * then `loaderPriority` is used to determine which one to use. The loader + * with the highest priority will be selected. Default priority is zero. If + * two or more valid loaders have the same priority, the selection order is + * undefined. + */ +- (float)loaderPriority; + +/** + * If the loader must be called on the serial url cache queue, and whether the completion + * block should be dispatched off the main thread. If this is NO, the loader will be + * called from the main queue. Defaults to YES. + * + * Use with care: disabling scheduling will reduce RCTImageLoader's ability to throttle + * network requests. + */ +- (BOOL)requiresScheduling; + +/** + * If images loaded by the loader should be cached in the decoded image cache. + * Defaults to YES. + */ +- (BOOL)shouldCacheLoadedImages; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageURLLoaderWithAttribution.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageURLLoaderWithAttribution.h new file mode 100644 index 0000000..118bed1 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageURLLoaderWithAttribution.h @@ -0,0 +1,78 @@ +/* + * 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 +#import +#import + +// TODO (T61325135): Remove C++ checks +#ifdef __cplusplus +namespace facebook { +namespace react { + +struct ImageURLLoaderAttribution { + int32_t nativeViewTag = 0; + int32_t surfaceId = 0; + std::string queryRootName; + NSString *analyticTag; +}; + +} // namespace react +} // namespace facebook +#endif + +@interface RCTImageURLLoaderRequest : NSObject + +@property (nonatomic, strong, readonly) NSString *requestId; +@property (nonatomic, strong, readonly) NSURL *imageURL; +@property (nonatomic, copy, readonly) RCTImageLoaderCancellationBlock cancellationBlock; + +- (instancetype)initWithRequestId:(NSString *)requestId imageURL:(NSURL *)imageURL cancellationBlock:(RCTImageLoaderCancellationBlock)cancellationBlock; +- (void)cancel; + +@end + +/** + * Same as the RCTImageURLLoader interface, but allows passing in optional `attribution` information. + * This is useful for per-app logging and other instrumentation. + */ +@protocol RCTImageURLLoaderWithAttribution + +// TODO (T61325135): Remove C++ checks +#ifdef __cplusplus +/** + * Same as the RCTImageURLLoader variant above, but allows optional `attribution` information. + * Caller may also specify a preferred requestId for tracking purpose. + */ +- (RCTImageURLLoaderRequest *)loadImageForURL:(NSURL *)imageURL + size:(CGSize)size + scale:(CGFloat)scale + resizeMode:(RCTResizeMode)resizeMode + requestId:(NSString *)requestId + priority: (RCTImageLoaderPriority)priority + attribution:(const facebook::react::ImageURLLoaderAttribution &)attribution + progressHandler:(RCTImageLoaderProgressBlock)progressHandler + partialLoadHandler:(RCTImageLoaderPartialLoadBlock)partialLoadHandler + completionHandler:(RCTImageLoaderCompletionBlockWithMetadata)completionHandler; +#endif + +/** + * Image instrumentation - start tracking the on-screen visibility of the native image view. + */ +- (void)trackURLImageVisibilityForRequest:(RCTImageURLLoaderRequest *)loaderRequest imageView:(UIView *)imageView; + +/** + * Image instrumentation - notify that the request was destroyed. + */ +- (void)trackURLImageRequestDidDestroy:(RCTImageURLLoaderRequest *)loaderRequest; + +/** + * Image instrumentation - notify that the native image view was destroyed. + */ +- (void)trackURLImageDidDestroy:(RCTImageURLLoaderRequest *)loaderRequest; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageUtils.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageUtils.h new file mode 100644 index 0000000..df04a2c --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageUtils.h @@ -0,0 +1,93 @@ +/* + * 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 + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * This function takes an source size (typically from an image), a target size + * and scale that it will be drawn at (typically in a CGContext) and then + * calculates the rectangle to draw the image into so that it will be sized and + * positioned correctly according to the specified resizeMode. + */ +RCT_EXTERN CGRect RCTTargetRect(CGSize sourceSize, CGSize destSize, + CGFloat destScale, RCTResizeMode resizeMode); + +/** + * This function takes a source size (typically from an image), a target rect + * that it will be drawn into (typically relative to a CGContext), and works out + * the transform needed to draw the image at the correct scale and position. + */ +RCT_EXTERN CGAffineTransform RCTTransformFromTargetRect(CGSize sourceSize, + CGRect targetRect); + +/** + * This function takes an input content size & scale (typically from an image), + * a target size & scale at which it will be displayed (typically in a + * UIImageView) and then calculates the optimal size at which to redraw the + * image so that it will be displayed correctly with the specified resizeMode. + */ +RCT_EXTERN CGSize RCTTargetSize(CGSize sourceSize, CGFloat sourceScale, + CGSize destSize, CGFloat destScale, + RCTResizeMode resizeMode, BOOL allowUpscaling); + +/** + * This function takes an input content size & scale (typically from an image), + * a target size & scale that it will be displayed at, and determines if the + * source will need to be upscaled to fit (which may result in pixelization). + */ +RCT_EXTERN BOOL RCTUpscalingRequired(CGSize sourceSize, CGFloat sourceScale, + CGSize destSize, CGFloat destScale, + RCTResizeMode resizeMode); + +/** + * This function takes the source data for an image and decodes it at the + * specified size. If the original image is smaller than the destination size, + * the resultant image's scale will be decreased to compensate, so the + * width/height of the returned image is guaranteed to be >= destSize. + * Pass a destSize of CGSizeZero to decode the image at its original size. + */ +RCT_EXTERN UIImage *__nullable RCTDecodeImageWithData(NSData *data, + CGSize destSize, + CGFloat destScale, + RCTResizeMode resizeMode); + +/** + * This function takes the source data for an image and decodes just the + * metadata, without decompressing the image itself. + */ +RCT_EXTERN NSDictionary *__nullable RCTGetImageMetadata(NSData *data); + +/** + * Convert an image back into data. Images with an alpha channel will be + * converted to lossless PNG data. Images without alpha will be converted to + * JPEG. The `quality` argument controls the compression ratio of the JPEG + * conversion, with 1.0 being maximum quality. It has no effect for images + * using PNG compression. + */ +RCT_EXTERN NSData *__nullable RCTGetImageData(UIImage *image, float quality); + +/** + * This function transforms an image. `destSize` is the size of the final image, + * and `destScale` is its scale. The `transform` argument controls how the + * source image will be mapped to the destination image. + */ +RCT_EXTERN UIImage *__nullable RCTTransformImage(UIImage *image, + CGSize destSize, + CGFloat destScale, + CGAffineTransform transform); + +/* + * Return YES if image has an alpha component + */ +RCT_EXTERN BOOL RCTImageHasAlpha(CGImageRef image); + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageView.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageView.h new file mode 100644 index 0000000..c895a53 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageView.h @@ -0,0 +1,27 @@ +/* + * 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 +#import +#import + +@class RCTBridge; +@class RCTImageSource; + +@interface RCTImageView : RCTView + +- (instancetype)initWithBridge:(RCTBridge *)bridge NS_DESIGNATED_INITIALIZER; + +@property (nonatomic, assign) UIEdgeInsets capInsets; +@property (nonatomic, strong) UIImage *defaultImage; +@property (nonatomic, assign) UIImageRenderingMode renderingMode; +@property (nonatomic, copy) NSArray *imageSources; +@property (nonatomic, assign) CGFloat blurRadius; +@property (nonatomic, assign) RCTResizeMode resizeMode; +@property (nonatomic, copy) NSString *internal_analyticTag; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageViewManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageViewManager.h new file mode 100644 index 0000000..9431f35 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTImageViewManager.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTImageViewManager : RCTViewManager + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTInitializing.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTInitializing.h new file mode 100644 index 0000000..56b14b1 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTInitializing.h @@ -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 + +@protocol RCTInitializing + +- (void)initialize; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTInputAccessoryShadowView.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTInputAccessoryShadowView.h new file mode 100644 index 0000000..8ed5110 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTInputAccessoryShadowView.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTInputAccessoryShadowView : RCTShadowView + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTInputAccessoryView.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTInputAccessoryView.h new file mode 100644 index 0000000..d4c48ce --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTInputAccessoryView.h @@ -0,0 +1,17 @@ +/* + * 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 + +@class RCTBridge; +@class RCTInputAccessoryViewContent; + +@interface RCTInputAccessoryView : UIView + +- (instancetype)initWithBridge:(RCTBridge *)bridge; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTInputAccessoryViewContent.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTInputAccessoryViewContent.h new file mode 100644 index 0000000..f65eea7 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTInputAccessoryViewContent.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTInputAccessoryViewContent : UIView + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTInputAccessoryViewManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTInputAccessoryViewManager.h new file mode 100644 index 0000000..251048d --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTInputAccessoryViewManager.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTInputAccessoryViewManager : RCTViewManager + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTInspector.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTInspector.h new file mode 100644 index 0000000..97c8d2e --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTInspector.h @@ -0,0 +1,32 @@ +/* + * 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 +#import + +#if RCT_DEV + +@class RCTInspectorRemoteConnection; + +@interface RCTInspectorLocalConnection : NSObject +- (void)sendMessage:(NSString *)message; +- (void)disconnect; +@end + +@interface RCTInspectorPage : NSObject +@property (nonatomic, readonly) NSInteger id; +@property (nonatomic, readonly) NSString *title; +@property (nonatomic, readonly) NSString *vm; +@end + +@interface RCTInspector : NSObject ++ (NSArray *)pages; ++ (RCTInspectorLocalConnection *)connectPage:(NSInteger)pageId + forRemoteConnection:(RCTInspectorRemoteConnection *)remote; +@end + +#endif diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTInspectorDevServerHelper.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTInspectorDevServerHelper.h new file mode 100644 index 0000000..b69fa02 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTInspectorDevServerHelper.h @@ -0,0 +1,23 @@ +/* + * 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 +#import + +#import +#import + +#if RCT_DEV + +@interface RCTInspectorDevServerHelper : NSObject + ++ (RCTInspectorPackagerConnection *)connectWithBundleURL:(NSURL *)bundleURL; ++ (void)disableDebugger; ++ (void)openURL:(NSString *)url withBundleURL:(NSURL *)bundleURL withErrorMessage:(NSString *)errorMessage; +@end + +#endif diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTInspectorPackagerConnection.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTInspectorPackagerConnection.h new file mode 100644 index 0000000..de08694 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTInspectorPackagerConnection.h @@ -0,0 +1,35 @@ +/* + * 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 +#import + +#if RCT_DEV + +@interface RCTBundleStatus : NSObject +@property (atomic, assign) BOOL isLastBundleDownloadSuccess; +@property (atomic, assign) NSTimeInterval bundleUpdateTimestamp; +@end + +typedef RCTBundleStatus * (^RCTBundleStatusProvider)(void); + +@interface RCTInspectorPackagerConnection : NSObject +- (instancetype)initWithURL:(NSURL *)url; + +- (bool)isConnected; +- (void)connect; +- (void)closeQuietly; +- (void)sendEventToAllConnections:(NSString *)event; +- (void)setBundleStatusProvider:(RCTBundleStatusProvider)bundleStatusProvider; +@end + +@interface RCTInspectorRemoteConnection : NSObject +- (void)onMessage:(NSString *)message; +- (void)onDisconnect; +@end + +#endif diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTInterpolationAnimatedNode.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTInterpolationAnimatedNode.h new file mode 100644 index 0000000..8ec4101 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTInterpolationAnimatedNode.h @@ -0,0 +1,12 @@ +/* + * 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 "RCTValueAnimatedNode.h" + +@interface RCTInterpolationAnimatedNode : RCTValueAnimatedNode + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTInvalidating.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTInvalidating.h new file mode 100644 index 0000000..bc144cd --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTInvalidating.h @@ -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 + +@protocol RCTInvalidating + +- (void)invalidate; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTJSScriptLoaderModule.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTJSScriptLoaderModule.h new file mode 100644 index 0000000..a0ba36e --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTJSScriptLoaderModule.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +@class RCTSource; + +/** + * This protocol should be adopted when a turbo module needs to tell React Native to load a script. + * In bridge-less React Native, it is a replacement for [_bridge loadAndExecuteSplitBundleURL:]. + */ +@protocol RCTJSScriptLoaderModule + +@property (nonatomic, copy, nonnull) void (^loadScript)(RCTSource *source); + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTJSStackFrame.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTJSStackFrame.h new file mode 100644 index 0000000..1a66e29 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTJSStackFrame.h @@ -0,0 +1,30 @@ +/* + * 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 + +@interface RCTJSStackFrame : NSObject + +@property (nonatomic, copy, readonly) NSString *methodName; +@property (nonatomic, copy, readonly) NSString *file; +@property (nonatomic, readonly) NSInteger lineNumber; +@property (nonatomic, readonly) NSInteger column; +@property (nonatomic, readonly) BOOL collapse; + +- (instancetype)initWithMethodName:(NSString *)methodName + file:(NSString *)file + lineNumber:(NSInteger)lineNumber + column:(NSInteger)column + collapse:(BOOL)collapse; +- (NSDictionary *)toDictionary; + ++ (instancetype)stackFrameWithLine:(NSString *)line; ++ (instancetype)stackFrameWithDictionary:(NSDictionary *)dict; ++ (NSArray *)stackFramesWithLines:(NSString *)lines; ++ (NSArray *)stackFramesWithDictionaries:(NSArray *)dicts; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTJSThread.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTJSThread.h new file mode 100644 index 0000000..8f1bc76 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTJSThread.h @@ -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 +#import + +#import + +/** + * This constant can be returned from +methodQueue to force module + * methods to be called on the JavaScript thread. This can have serious + * implications for performance, so only use this if you're sure it's what + * you need. + * + * NOTE: RCTJSThread is not a real libdispatch queue + */ +RCT_EXTERN dispatch_queue_t RCTJSThread; + +/** + * Initializes the RCTJSThread constant. + * Exported because the bridgeless initialization layer needs to initialize + * RCTJSThread. In bridgeless mode, RCTBridge isn't accessed, and RCTJSThread + * therefore isn't initialized. + */ +RCT_EXTERN void _RCTInitializeJSThreadConstantInternal(void); diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTJavaScriptExecutor.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTJavaScriptExecutor.h new file mode 100644 index 0000000..c42fb05 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTJavaScriptExecutor.h @@ -0,0 +1,80 @@ +/* + * 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 + +#import +#import + +typedef void (^RCTJavaScriptCompleteBlock)(NSError *error); +typedef void (^RCTJavaScriptCallback)(id result, NSError *error); + +/** + * Abstracts away a JavaScript execution context - we may be running code in a + * web view (for debugging purposes), or may be running code in a `JSContext`. + */ +@protocol RCTJavaScriptExecutor + +/** + * Used to set up the executor after the bridge has been fully initialized. + * Do any expensive setup in this method instead of `-init`. + */ +- (void)setUp; + +/** + * Whether the executor has been invalidated + */ +@property (nonatomic, readonly, getter=isValid) BOOL valid; + +/** + * Executes BatchedBridge.flushedQueue on JS thread and calls the given callback + * with JSValue, containing the next queue, and JSContext. + */ +- (void)flushedQueue:(RCTJavaScriptCallback)onComplete; + +/** + * Executes BatchedBridge.callFunctionReturnFlushedQueue with the module name, + * method name and optional additional arguments on the JS thread and calls the + * given callback with JSValue, containing the next queue, and JSContext. + */ +- (void)callFunctionOnModule:(NSString *)module + method:(NSString *)method + arguments:(NSArray *)args + callback:(RCTJavaScriptCallback)onComplete; + +/** + * Executes BatchedBridge.invokeCallbackAndReturnFlushedQueue with the cbID, + * and optional additional arguments on the JS thread and calls the + * given callback with JSValue, containing the next queue, and JSContext. + */ +- (void)invokeCallbackID:(NSNumber *)cbID arguments:(NSArray *)args callback:(RCTJavaScriptCallback)onComplete; + +/** + * Runs an application script, and notifies of the script load being complete via `onComplete`. + */ +- (void)executeApplicationScript:(NSData *)script + sourceURL:(NSURL *)sourceURL + onComplete:(RCTJavaScriptCompleteBlock)onComplete; + +- (void)injectJSONText:(NSString *)script + asGlobalObjectNamed:(NSString *)objectName + callback:(RCTJavaScriptCompleteBlock)onComplete; + +/** + * Enqueue a block to run in the executors JS thread. Fallback to `dispatch_async` + * on the main queue if the executor doesn't own a thread. + */ +- (void)executeBlockOnJavaScriptQueue:(dispatch_block_t)block; + +/** + * Special case for Timers + ContextExecutor - instead of the default + * if jsthread then call else dispatch call on jsthread + * ensure the call is made async on the jsthread + */ +- (void)executeAsyncBlockOnJavaScriptQueue:(dispatch_block_t)block; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTJavaScriptLoader.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTJavaScriptLoader.h new file mode 100755 index 0000000..729fa37 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTJavaScriptLoader.h @@ -0,0 +1,98 @@ +/* + * 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 + +#import + +extern NSString *const RCTJavaScriptLoaderErrorDomain; + +extern const UInt32 RCT_BYTECODE_ALIGNMENT; + +UInt32 RCTReadUInt32LE(NSData *script, UInt32 offset); +bool RCTIsBytecodeBundle(NSData *script); + +NS_ENUM(NSInteger){ + RCTJavaScriptLoaderErrorNoScriptURL = 1, + RCTJavaScriptLoaderErrorFailedOpeningFile = 2, + RCTJavaScriptLoaderErrorFailedReadingFile = 3, + RCTJavaScriptLoaderErrorFailedStatingFile = 3, + RCTJavaScriptLoaderErrorURLLoadFailed = 3, + RCTJavaScriptLoaderErrorBCVersion = 4, + RCTJavaScriptLoaderErrorBCNotSupported = 4, + + RCTJavaScriptLoaderErrorCannotBeLoadedSynchronously = 1000, +}; + +NS_ENUM(NSInteger){ + RCTSourceFilesChangedCountNotBuiltByBundler = -2, + RCTSourceFilesChangedCountRebuiltFromScratch = -1, +}; + +@interface RCTLoadingProgress : NSObject + +@property (nonatomic, copy) NSString *status; +@property (strong, nonatomic) NSNumber *done; +@property (strong, nonatomic) NSNumber *total; + +@end + +@interface RCTSource : NSObject + +/** + * URL of the source object. + */ +@property (strong, nonatomic, readonly) NSURL *url; + +/** + * JS source (or simply the binary header in the case of a RAM bundle). + */ +@property (strong, nonatomic, readonly) NSData *data; + +/** + * Length of the entire JS bundle. Note that self.length != self.data.length in the case of certain bundle formats. For + * instance, when using RAM bundles: + * + * - self.data will point to the bundle header + * - self.data.length is the length of the bundle header, i.e. sizeof(facebook::react::BundleHeader) + * - self.length is the length of the entire bundle file (header + contents) + */ +@property (nonatomic, readonly) NSUInteger length; + +/** + * Returns number of files changed when building this bundle: + * + * - RCTSourceFilesChangedCountNotBuiltByBundler if the source wasn't built by the bundler (e.g. read from disk) + * - RCTSourceFilesChangedCountRebuiltFromScratch if the source was rebuilt from scratch by the bundler + * - Otherwise, the number of files changed when incrementally rebuilding the source + */ +@property (nonatomic, readonly) NSInteger filesChangedCount; + +@end + +typedef void (^RCTSourceLoadProgressBlock)(RCTLoadingProgress *progressData); +typedef void (^RCTSourceLoadBlock)(NSError *error, RCTSource *source); + +@interface RCTJavaScriptLoader : NSObject + ++ (void)loadBundleAtURL:(NSURL *)scriptURL + onProgress:(RCTSourceLoadProgressBlock)onProgress + onComplete:(RCTSourceLoadBlock)onComplete; + +/** + * @experimental + * Attempts to synchronously load the script at the given URL. The following two conditions must be met: + * 1. It must be a file URL. + * 2. It must not point to a text/javascript file. + * If the URL does not meet those conditions, this method will return nil and supply an error with the domain + * RCTJavaScriptLoaderErrorDomain and the code RCTJavaScriptLoaderErrorCannotBeLoadedSynchronously. + */ ++ (NSData *)attemptSynchronousLoadOfBundleAtURL:(NSURL *)scriptURL + sourceLength:(int64_t *)sourceLength + error:(NSError **)error; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTKeyCommands.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTKeyCommands.h new file mode 100644 index 0000000..2bdefcf --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTKeyCommands.h @@ -0,0 +1,31 @@ +/* + * 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 + +@interface RCTKeyCommands : NSObject + ++ (instancetype)sharedInstance; + +/** + * Register a keyboard command. + */ +- (void)registerKeyCommandWithInput:(NSString *)input + modifierFlags:(UIKeyModifierFlags)flags + action:(void (^)(UIKeyCommand *command))block; + +/** + * Unregister a keyboard command. + */ +- (void)unregisterKeyCommandWithInput:(NSString *)input modifierFlags:(UIKeyModifierFlags)flags; + +/** + * Check if a command is registered. + */ +- (BOOL)isKeyCommandRegisteredForInput:(NSString *)input modifierFlags:(UIKeyModifierFlags)flags; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTKeyboardObserver.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTKeyboardObserver.h new file mode 100644 index 0000000..320b65d --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTKeyboardObserver.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTKeyboardObserver : RCTEventEmitter + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTLayout.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTLayout.h new file mode 100644 index 0000000..d838032 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTLayout.h @@ -0,0 +1,72 @@ +/* + * 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 + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@class RCTShadowView; + +typedef NS_ENUM(NSInteger, RCTDisplayType) { + RCTDisplayTypeNone, + RCTDisplayTypeFlex, + RCTDisplayTypeInline, +}; + +struct RCTLayoutMetrics { + CGRect frame; + CGRect contentFrame; + UIEdgeInsets borderWidth; + RCTDisplayType displayType; + UIUserInterfaceLayoutDirection layoutDirection; +}; +typedef struct CG_BOXABLE RCTLayoutMetrics RCTLayoutMetrics; + +struct RCTLayoutContext { + CGPoint absolutePosition; + __unsafe_unretained NSHashTable *_Nonnull affectedShadowViews; + __unsafe_unretained NSHashTable *_Nonnull other; +}; +typedef struct CG_BOXABLE RCTLayoutContext RCTLayoutContext; + +static inline BOOL RCTLayoutMetricsEqualToLayoutMetrics(RCTLayoutMetrics a, RCTLayoutMetrics b) +{ + return CGRectEqualToRect(a.frame, b.frame) && CGRectEqualToRect(a.contentFrame, b.contentFrame) && + UIEdgeInsetsEqualToEdgeInsets(a.borderWidth, b.borderWidth) && a.displayType == b.displayType && + a.layoutDirection == b.layoutDirection; +} + +RCT_EXTERN RCTLayoutMetrics RCTLayoutMetricsFromYogaNode(YGNodeRef yogaNode); + +/** + * Converts float values between Yoga and CoreGraphics representations, + * especially in terms of edge cases. + */ +RCT_EXTERN float RCTYogaFloatFromCoreGraphicsFloat(CGFloat value); +RCT_EXTERN CGFloat RCTCoreGraphicsFloatFromYogaFloat(float value); + +/** + * Converts compound `YGValue` to simple `CGFloat` value. + */ +RCT_EXTERN CGFloat RCTCoreGraphicsFloatFromYogaValue(YGValue value, CGFloat baseFloatValue); + +/** + * Converts `YGDirection` to `UIUserInterfaceLayoutDirection` and vise versa. + */ +RCT_EXTERN YGDirection RCTYogaLayoutDirectionFromUIKitLayoutDirection(UIUserInterfaceLayoutDirection direction); +RCT_EXTERN UIUserInterfaceLayoutDirection RCTUIKitLayoutDirectionFromYogaLayoutDirection(YGDirection direction); + +/** + * Converts `YGDisplay` to `RCTDisplayType` and vise versa. + */ +RCT_EXTERN YGDisplay RCTYogaDisplayTypeFromReactDisplayType(RCTDisplayType displayType); +RCT_EXTERN RCTDisplayType RCTReactDisplayTypeFromYogaDisplayType(YGDisplay displayType); + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTLayoutAnimation.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTLayoutAnimation.h new file mode 100644 index 0000000..e907a99 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTLayoutAnimation.h @@ -0,0 +1,34 @@ +/* + * 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 + +#import + +@interface RCTLayoutAnimation : NSObject + +@property (nonatomic, readonly) NSTimeInterval duration; +@property (nonatomic, readonly) NSTimeInterval delay; +@property (nonatomic, readonly, copy) NSString *property ; +@property (nonatomic, readonly) CGFloat springDamping; +@property (nonatomic, readonly) CGFloat initialVelocity; +@property (nonatomic, readonly) RCTAnimationType animationType; + ++ (void)initializeStatics; + +- (instancetype)initWithDuration:(NSTimeInterval)duration + delay:(NSTimeInterval)delay + property:(NSString *)property + springDamping:(CGFloat)springDamping + initialVelocity:(CGFloat)initialVelocity + animationType:(RCTAnimationType)animationType; + +- (instancetype)initWithDuration:(NSTimeInterval)duration config:(NSDictionary *)config; + +- (void)performAnimations:(void (^)(void))animations withCompletionBlock:(void (^)(BOOL completed))completionBlock; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTLayoutAnimationGroup.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTLayoutAnimationGroup.h new file mode 100644 index 0000000..f13d046 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTLayoutAnimationGroup.h @@ -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 + +#import + +@class RCTLayoutAnimation; + +@interface RCTLayoutAnimationGroup : NSObject + +@property (nonatomic, readonly) RCTLayoutAnimation *creatingLayoutAnimation; +@property (nonatomic, readonly) RCTLayoutAnimation *updatingLayoutAnimation; +@property (nonatomic, readonly) RCTLayoutAnimation *deletingLayoutAnimation; + +@property (nonatomic, copy) RCTResponseSenderBlock callback; + +- (instancetype)initWithCreatingLayoutAnimation:(RCTLayoutAnimation *)creatingLayoutAnimation + updatingLayoutAnimation:(RCTLayoutAnimation *)updatingLayoutAnimation + deletingLayoutAnimation:(RCTLayoutAnimation *)deletingLayoutAnimation + callback:(RCTResponseSenderBlock)callback; + +- (instancetype)initWithConfig:(NSDictionary *)config callback:(RCTResponseSenderBlock)callback; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTLinkingManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTLinkingManager.h new file mode 100644 index 0000000..02de122 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTLinkingManager.h @@ -0,0 +1,34 @@ +/* + * 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 +#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= 12000) /* __IPHONE_12_0 */ +#import +#endif +#import + +@interface RCTLinkingManager : RCTEventEmitter + ++ (BOOL)application:(nonnull UIApplication *)app + openURL:(nonnull NSURL *)URL + options:(nonnull NSDictionary *)options; + ++ (BOOL)application:(nonnull UIApplication *)application + openURL:(nonnull NSURL *)URL + sourceApplication:(nullable NSString *)sourceApplication + annotation:(nonnull id)annotation; + ++ (BOOL)application:(nonnull UIApplication *)application + continueUserActivity:(nonnull NSUserActivity *)userActivity + restorationHandler: + #if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= 12000) /* __IPHONE_12_0 */ + (nonnull void (^)(NSArray> *_Nullable))restorationHandler; + #else + (nonnull void (^)(NSArray *_Nullable))restorationHandler; + #endif + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTLinkingPlugins.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTLinkingPlugins.h new file mode 100644 index 0000000..17e3d6c --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTLinkingPlugins.h @@ -0,0 +1,40 @@ +/** + * 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 an internal plugin build system + */ + +#ifdef RN_DISABLE_OSS_PLUGIN_HEADER + +// FB Internal: FBRCTLinkingPlugins.h is autogenerated by the build system. +#import + +#else + +// OSS-compatibility layer + +#import + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wreturn-type-c-linkage" + +#ifdef __cplusplus +extern "C" { +#endif + +// RCTTurboModuleManagerDelegate should call this to resolve module classes. +Class RCTLinkingClassProvider(const char *name); + +// Lookup functions +Class RCTLinkingManagerCls(void) __attribute__((used)); + +#ifdef __cplusplus +} +#endif + +#pragma GCC diagnostic pop + +#endif // RN_DISABLE_OSS_PLUGIN_HEADER diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTLocalAssetImageLoader.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTLocalAssetImageLoader.h new file mode 100644 index 0000000..c04f21e --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTLocalAssetImageLoader.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTLocalAssetImageLoader : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTLog.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTLog.h new file mode 100644 index 0000000..0d79797 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTLog.h @@ -0,0 +1,136 @@ +/* + * 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 + +#import +#import +#import + +#ifndef RCTLOG_ENABLED +#define RCTLOG_ENABLED 1 +#endif + +/** + * Thresholds for logs to display a redbox. You can override these values when debugging + * in order to tweak the default logging behavior. + */ +#ifndef RCTLOG_REDBOX_LEVEL +#define RCTLOG_REDBOX_LEVEL RCTLogLevelError +#endif + +/** + * Logging macros. Use these to log information, warnings and errors in your + * own code. + */ +#define RCTLog(...) _RCTLog(RCTLogLevelInfo, __VA_ARGS__) +#define RCTLogTrace(...) _RCTLog(RCTLogLevelTrace, __VA_ARGS__) +#define RCTLogInfo(...) _RCTLog(RCTLogLevelInfo, __VA_ARGS__) +#define RCTLogAdvice(string, ...) RCTLogWarn([@"(ADVICE) " stringByAppendingString:(NSString *)string], __VA_ARGS__) +#define RCTLogWarn(...) _RCTLog(RCTLogLevelWarning, __VA_ARGS__) +#define RCTLogError(...) _RCTLog(RCTLogLevelError, __VA_ARGS__) + +/** + * An enum representing the severity of the log message. + */ +typedef NS_ENUM(NSInteger, RCTLogLevel) { + RCTLogLevelTrace = 0, + RCTLogLevelInfo = 1, + RCTLogLevelWarning = 2, + RCTLogLevelError = 3, + RCTLogLevelFatal = 4 +}; + +/** + * An enum representing the source of a log message. + */ +typedef NS_ENUM(NSInteger, RCTLogSource) { RCTLogSourceNative = 1, RCTLogSourceJavaScript = 2 }; + +/** + * A block signature to be used for custom logging functions. In most cases you + * will want to pass these arguments to the RCTFormatLog function in order to + * generate a string. + */ +typedef void (^RCTLogFunction)( + RCTLogLevel level, + RCTLogSource source, + NSString *fileName, + NSNumber *lineNumber, + NSString *message); + +/** + * A method to generate a string from a collection of log data. To omit any + * particular data from the log, just pass nil or zero for the argument. + */ +RCT_EXTERN NSString * +RCTFormatLog(NSDate *timestamp, RCTLogLevel level, NSString *fileName, NSNumber *lineNumber, NSString *message); + +/** + * A method to generate a string RCTLogLevel + */ +RCT_EXTERN NSString *RCTFormatLogLevel(RCTLogLevel); + +/** + * A method to generate a string from a RCTLogSource + */ +RCT_EXTERN NSString *RCTFormatLogSource(RCTLogSource); + +/** + * The default logging function used by RCTLogXX. + */ +extern RCTLogFunction RCTDefaultLogFunction; + +/** + * These methods get and set the global logging threshold. This is the level + * below which logs will be ignored. Default is RCTLogLevelInfo for debug and + * RCTLogLevelError for production. + */ +RCT_EXTERN void RCTSetLogThreshold(RCTLogLevel threshold); +RCT_EXTERN RCTLogLevel RCTGetLogThreshold(void); + +/** + * These methods get and set the global logging function called by the RCTLogXX + * macros. You can use these to replace the standard behavior with custom log + * functionality. + */ +RCT_EXTERN void RCTSetLogFunction(RCTLogFunction logFunction); +RCT_EXTERN RCTLogFunction RCTGetLogFunction(void); + +/** + * This appends additional code to the existing log function, without replacing + * the existing functionality. Useful if you just want to forward logs to an + * extra service without changing the default behavior. + */ +RCT_EXTERN void RCTAddLogFunction(RCTLogFunction logFunction); + +/** + * This method temporarily overrides the log function while performing the + * specified block. This is useful for testing purposes (to detect if a given + * function logs something) or to suppress or override logging temporarily. + */ +RCT_EXTERN void RCTPerformBlockWithLogFunction(void (^block)(void), RCTLogFunction logFunction); + +/** + * This method adds a conditional prefix to any messages logged within the scope + * of the passed block. This is useful for adding additional context to log + * messages. The block will be performed synchronously on the current thread. + */ +RCT_EXTERN void RCTPerformBlockWithLogPrefix(void (^block)(void), NSString *prefix); + +/** + * Private logging function - ignore this. + */ +#if RCTLOG_ENABLED +#define _RCTLog(lvl, ...) _RCTLogNativeInternal(lvl, __FILE__, __LINE__, __VA_ARGS__) +#else +#define _RCTLog(lvl, ...) \ + do { \ + } while (0) +#endif + +RCT_EXTERN void _RCTLogNativeInternal(RCTLogLevel, const char *, int, NSString *, ...) NS_FORMAT_FUNCTION(4, 5); +RCT_EXTERN void _RCTLogJavaScriptInternal(RCTLogLevel, NSString *); diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTLogBox.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTLogBox.h new file mode 100644 index 0000000..e3bf6ad --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTLogBox.h @@ -0,0 +1,19 @@ +/* + * 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 +#import "RCTLogBoxView.h" + +@interface RCTLogBox : NSObject + +#if RCT_DEV_MENU + +- (void)setRCTLogBoxView:(RCTLogBoxView *)view; + +#endif + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTLogBoxView.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTLogBoxView.h new file mode 100644 index 0000000..7c05bcb --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTLogBoxView.h @@ -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 +#import +#import + +@interface RCTLogBoxView : UIWindow + +- (instancetype)initWithFrame:(CGRect)frame; + +- (void)createRootViewController:(UIView *)view; + +- (instancetype)initWithFrame:(CGRect)frame bridge:(RCTBridge *)bridge; + +- (void)show; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTMacros.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTMacros.h new file mode 100644 index 0000000..9144bbe --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTMacros.h @@ -0,0 +1,16 @@ +/* + * 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. + */ + +#define _CONCAT(A, B) A##B +#define CONCAT(A, B) _CONCAT(A, B) + +#if !defined(PIC_MODIFIER) +#define PIC_MODIFIER +#endif + +#define SYMBOL_NAME(name) CONCAT(__USER_LABEL_PREFIX__, name) +#define SYMBOL_NAME_PIC(name) CONCAT(SYMBOL_NAME(name), PIC_MODIFIER) diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTManagedPointer.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTManagedPointer.h new file mode 100644 index 0000000..4ed6616 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTManagedPointer.h @@ -0,0 +1,40 @@ +/* + * 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. + */ + +#ifdef __cplusplus + +#include + +#import + +/** + * Type erased wrapper over any cxx value that can be passed as an argument + * to native method. + */ + +@interface RCTManagedPointer : NSObject + +@property (nonatomic, readonly) void *voidPointer; + +- (instancetype)initWithPointer:(std::shared_ptr)pointer; + +@end + +namespace facebook { +namespace react { + +template +RCTManagedPointer *managedPointer(P initializer) +{ + auto ptr = std::shared_ptr(new T(initializer)); + return [[RCTManagedPointer alloc] initWithPointer:std::move(ptr)]; +} + +} +} + +#endif diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTMaskedView.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTMaskedView.h new file mode 100644 index 0000000..4628240 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTMaskedView.h @@ -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 + +#import + +@interface RCTMaskedView : RCTView + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTMaskedViewManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTMaskedViewManager.h new file mode 100644 index 0000000..a37f85a --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTMaskedViewManager.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTMaskedViewManager : RCTViewManager + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTModalHostView.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTModalHostView.h new file mode 100644 index 0000000..01d3861 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTModalHostView.h @@ -0,0 +1,51 @@ +/* + * 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 + +#import +#import +#import + +@class RCTBridge; +@class RCTModalHostViewController; + +@protocol RCTModalHostViewInteractor; + +@interface RCTModalHostView : UIView + +@property (nonatomic, copy) NSString *animationType; +@property (nonatomic, assign) UIModalPresentationStyle presentationStyle; +@property (nonatomic, assign, getter=isTransparent) BOOL transparent; + +@property (nonatomic, copy) RCTDirectEventBlock onShow; +@property (nonatomic, assign) BOOL visible; + +@property (nonatomic, copy) NSNumber *identifier; + +@property (nonatomic, weak) id delegate; + +@property (nonatomic, copy) NSArray *supportedOrientations; +@property (nonatomic, copy) RCTDirectEventBlock onOrientationChange; + +// Fabric only +@property (nonatomic, copy) RCTBubblingEventBlock onDismiss; + +- (instancetype)initWithBridge:(RCTBridge *)bridge NS_DESIGNATED_INITIALIZER; + +@end + +@protocol RCTModalHostViewInteractor + +- (void)presentModalHostView:(RCTModalHostView *)modalHostView + withViewController:(RCTModalHostViewController *)viewController + animated:(BOOL)animated; +- (void)dismissModalHostView:(RCTModalHostView *)modalHostView + withViewController:(RCTModalHostViewController *)viewController + animated:(BOOL)animated; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTModalHostViewController.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTModalHostViewController.h new file mode 100644 index 0000000..a3f66b6 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTModalHostViewController.h @@ -0,0 +1,16 @@ +/* + * 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 + +@interface RCTModalHostViewController : UIViewController + +@property (nonatomic, copy) void (^boundsDidChangeBlock)(CGRect newBounds); + +@property (nonatomic, assign) UIInterfaceOrientationMask supportedInterfaceOrientations; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTModalHostViewManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTModalHostViewManager.h new file mode 100644 index 0000000..e5b0815 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTModalHostViewManager.h @@ -0,0 +1,34 @@ +/* + * 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 +#import +#import + +@interface RCTConvert (RCTModalHostView) + ++ (UIModalPresentationStyle)UIModalPresentationStyle:(id)json; + +@end + +typedef void (^RCTModalViewInteractionBlock)( + UIViewController *reactViewController, + UIViewController *viewController, + BOOL animated, + dispatch_block_t completionBlock); + +@interface RCTModalHostViewManager : RCTViewManager + +/** + * `presentationBlock` and `dismissalBlock` allow you to control how a Modal interacts with your case, + * e.g. in case you have a native navigator that has its own way to display a modal. + * If these are not specified, it falls back to the UIViewController standard way of presenting. + */ +@property (nonatomic, strong) RCTModalViewInteractionBlock presentationBlock; +@property (nonatomic, strong) RCTModalViewInteractionBlock dismissalBlock; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTModalManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTModalManager.h new file mode 100644 index 0000000..4fbe6df --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTModalManager.h @@ -0,0 +1,17 @@ +/* + * 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 + +#import +#import + +@interface RCTModalManager : RCTEventEmitter + +- (void)modalDismissed:(NSNumber *)modalID; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTModuleData.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTModuleData.h new file mode 100644 index 0000000..71e1950 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTModuleData.h @@ -0,0 +1,117 @@ +/* + * 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 + +#import +#import "RCTDefines.h" + +@protocol RCTBridgeMethod; +@protocol RCTBridgeModule; +@class RCTBridge; +@class RCTModuleRegistry; +@class RCTViewRegistry; +@class RCTBundleManager; +@class RCTCallableJSModules; + +typedef id (^RCTBridgeModuleProvider)(void); + +@interface RCTModuleData : NSObject + +- (instancetype)initWithModuleClass:(Class)moduleClass + bridge:(RCTBridge *)bridge + moduleRegistry:(RCTModuleRegistry *)moduleRegistry + viewRegistry_DEPRECATED:(RCTViewRegistry *)viewRegistry_DEPRECATED + bundleManager:(RCTBundleManager *)bundleManager + callableJSModules:(RCTCallableJSModules *)callableJSModules; + +- (instancetype)initWithModuleClass:(Class)moduleClass + moduleProvider:(RCTBridgeModuleProvider)moduleProvider + bridge:(RCTBridge *)bridge + moduleRegistry:(RCTModuleRegistry *)moduleRegistry + viewRegistry_DEPRECATED:(RCTViewRegistry *)viewRegistry_DEPRECATED + bundleManager:(RCTBundleManager *)bundleManager + callableJSModules:(RCTCallableJSModules *)callableJSModules NS_DESIGNATED_INITIALIZER; + +- (instancetype)initWithModuleInstance:(id)instance + bridge:(RCTBridge *)bridge + moduleRegistry:(RCTModuleRegistry *)moduleRegistry + viewRegistry_DEPRECATED:(RCTViewRegistry *)viewRegistry_DEPRECATED + bundleManager:(RCTBundleManager *)bundleManager + callableJSModules:(RCTCallableJSModules *)callableJSModules NS_DESIGNATED_INITIALIZER; + +/** + * Calls `constantsToExport` on the module and stores the result. Note that + * this will init the module if it has not already been created. This method + * can be called on any thread, but may block the main thread briefly if the + * module implements `constantsToExport`. + */ +- (void)gatherConstants; + +@property (nonatomic, strong, readonly) Class moduleClass; +@property (nonatomic, copy, readonly) NSString *name; + +/** + * Returns the module methods. Note that this will gather the methods the first + * time it is called and then memoize the results. + */ +@property (nonatomic, copy, readonly) NSArray> *methods; + +/** + * Returns a map of the module methods. Note that this will gather the methods the first + * time it is called and then memoize the results. + */ +@property (nonatomic, copy, readonly) NSDictionary> *methodsByName; + +/** + * Returns the module's constants, if it exports any + */ +@property (nonatomic, copy, readonly) NSDictionary *exportedConstants; + +/** + * Returns YES if module instance has already been initialized; NO otherwise. + */ +@property (nonatomic, assign, readonly) BOOL hasInstance; + +/** + * Returns YES if module instance must be created on the main thread. + */ +@property (nonatomic, assign) BOOL requiresMainQueueSetup; + +/** + * Returns YES if module has constants to export. + */ +@property (nonatomic, assign, readonly) BOOL hasConstantsToExport; + +/** + * Returns the current module instance. Note that this will init the instance + * if it has not already been created. To check if the module instance exists + * without causing it to be created, use `hasInstance` instead. + */ +@property (nonatomic, strong, readwrite) id instance; + +/** + * Returns the module method dispatch queue. Note that this will init both the + * queue and the module itself if they have not already been created. + */ +@property (nonatomic, strong, readonly) dispatch_queue_t methodQueue; + +/** + * Whether the receiver has a valid `instance` which implements -batchDidComplete. + */ +@property (nonatomic, assign, readonly) BOOL implementsBatchDidComplete; + +/** + * Whether the receiver has a valid `instance` which implements + * -partialBatchDidFlush. + */ +@property (nonatomic, assign, readonly) BOOL implementsPartialBatchDidFlush; + +@end + +RCT_EXTERN void RCTSetIsMainQueueExecutionOfConstantsToExportDisabled(BOOL val); +RCT_EXTERN BOOL RCTIsMainQueueExecutionOfConstantsToExportDisabled(void); diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTModuleMethod.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTModuleMethod.h new file mode 100644 index 0000000..c93a060 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTModuleMethod.h @@ -0,0 +1,34 @@ +/* + * 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 + +#import +#import +#import + +@class RCTBridge; + +@interface RCTMethodArgument : NSObject + +@property (nonatomic, copy, readonly) NSString *type; +@property (nonatomic, readonly) RCTNullability nullability; +@property (nonatomic, readonly) BOOL unused; + +@end + +@interface RCTModuleMethod : NSObject + +@property (nonatomic, readonly) Class moduleClass; +@property (nonatomic, readonly) SEL selector; + +- (instancetype)initWithExportedMethod:(const RCTMethodInfo *)exportMethod + moduleClass:(Class)moduleClass NS_DESIGNATED_INITIALIZER; + +@end + +RCT_EXTERN NSString *RCTParseMethodSignature(const char *input, NSArray **arguments); diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTModuloAnimatedNode.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTModuloAnimatedNode.h new file mode 100644 index 0000000..fc7f69d --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTModuloAnimatedNode.h @@ -0,0 +1,12 @@ +/* + * 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 "RCTValueAnimatedNode.h" + +@interface RCTModuloAnimatedNode : RCTValueAnimatedNode + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTMultilineTextInputView.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTMultilineTextInputView.h new file mode 100644 index 0000000..0efd63a --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTMultilineTextInputView.h @@ -0,0 +1,16 @@ +/* + * 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 "RCTBaseTextInputView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTMultilineTextInputView : RCTBaseTextInputView + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTMultilineTextInputViewManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTMultilineTextInputViewManager.h new file mode 100644 index 0000000..3347fbb --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTMultilineTextInputViewManager.h @@ -0,0 +1,16 @@ +/* + * 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 "RCTBaseTextInputViewManager.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTMultilineTextInputViewManager : RCTBaseTextInputViewManager + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTMultipartDataTask.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTMultipartDataTask.h new file mode 100644 index 0000000..bcf0c57 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTMultipartDataTask.h @@ -0,0 +1,27 @@ +/* + * 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 + +#import + +typedef void (^RCTMultipartDataTaskCallback)( + NSInteger statusCode, + NSDictionary *headers, + NSData *content, + NSError *error, + BOOL done); + +@interface RCTMultipartDataTask : NSObject + +- (instancetype)initWithURL:(NSURL *)url + partHandler:(RCTMultipartDataTaskCallback)partHandler + progressHandler:(RCTMultipartProgressCallback)progressHandler; + +- (void)startTask; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTMultipartStreamReader.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTMultipartStreamReader.h new file mode 100644 index 0000000..5ef5b61 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTMultipartStreamReader.h @@ -0,0 +1,21 @@ +/* + * 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 + +typedef void (^RCTMultipartCallback)(NSDictionary *headers, NSData *content, BOOL done); +typedef void (^RCTMultipartProgressCallback)(NSDictionary *headers, NSNumber *loaded, NSNumber *total); + +// RCTMultipartStreamReader can be used to parse responses with Content-Type: multipart/mixed +// See https://www.w3.org/Protocols/rfc1341/7_2_Multipart.html +@interface RCTMultipartStreamReader : NSObject + +- (instancetype)initWithInputStream:(NSInputStream *)stream boundary:(NSString *)boundary; +- (BOOL)readAllPartsWithCompletionCallback:(RCTMultipartCallback)callback + progressCallback:(RCTMultipartProgressCallback)progressCallback; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTMultiplicationAnimatedNode.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTMultiplicationAnimatedNode.h new file mode 100644 index 0000000..bb8b3b2 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTMultiplicationAnimatedNode.h @@ -0,0 +1,12 @@ +/* + * 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 "RCTValueAnimatedNode.h" + +@interface RCTMultiplicationAnimatedNode : RCTValueAnimatedNode + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTNativeAnimatedModule.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTNativeAnimatedModule.h new file mode 100644 index 0000000..13b40fd --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTNativeAnimatedModule.h @@ -0,0 +1,23 @@ +/* + * 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 +#import +#import +#import +#import +#import +#import + +#import "RCTValueAnimatedNode.h" + +// TODO T69437152 @petetheheat - Delete this fork when Fabric ships to 100%. +// NOTE: This module is temporarily forked (see RCTNativeAnimatedTurboModule). +// When making any changes, be sure to apply them to the fork as well. +@interface RCTNativeAnimatedModule : RCTEventEmitter + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTNativeAnimatedNodesManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTNativeAnimatedNodesManager.h new file mode 100644 index 0000000..7832538 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTNativeAnimatedNodesManager.h @@ -0,0 +1,94 @@ +/* + * 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 +#import +#import +#import +#import + +@protocol RCTValueAnimatedNodeObserver; + +@interface RCTNativeAnimatedNodesManager : NSObject + +- (nonnull instancetype)initWithBridge:(RCTBridge *)bridge + surfacePresenter:(id)surfacePresenter; + +- (void)updateAnimations; + +- (void)stepAnimations:(nonnull CADisplayLink *)displaylink; + +- (BOOL)isNodeManagedByFabric:(nonnull NSNumber *)tag; + +- (void)getValue:(nonnull NSNumber *)nodeTag + saveCallback:(nullable RCTResponseSenderBlock)saveCallback; + +// graph + +- (void)createAnimatedNode:(nonnull NSNumber *)tag + config:(NSDictionary *__nonnull)config; + +- (void)connectAnimatedNodes:(nonnull NSNumber *)parentTag + childTag:(nonnull NSNumber *)childTag; + +- (void)disconnectAnimatedNodes:(nonnull NSNumber *)parentTag + childTag:(nonnull NSNumber *)childTag; + +- (void)connectAnimatedNodeToView:(nonnull NSNumber *)nodeTag + viewTag:(nonnull NSNumber *)viewTag + viewName:(nonnull NSString *)viewName; + +- (void)restoreDefaultValues:(nonnull NSNumber *)nodeTag; + +- (void)disconnectAnimatedNodeFromView:(nonnull NSNumber *)nodeTag + viewTag:(nonnull NSNumber *)viewTag; + +- (void)dropAnimatedNode:(nonnull NSNumber *)tag; + +// mutations + +- (void)setAnimatedNodeValue:(nonnull NSNumber *)nodeTag + value:(nonnull NSNumber *)value; + +- (void)setAnimatedNodeOffset:(nonnull NSNumber *)nodeTag + offset:(nonnull NSNumber *)offset; + +- (void)flattenAnimatedNodeOffset:(nonnull NSNumber *)nodeTag; + +- (void)extractAnimatedNodeOffset:(nonnull NSNumber *)nodeTag; + +// drivers + +- (void)startAnimatingNode:(nonnull NSNumber *)animationId + nodeTag:(nonnull NSNumber *)nodeTag + config:(NSDictionary *__nonnull)config + endCallback:(nullable RCTResponseSenderBlock)callBack; + +- (void)stopAnimation:(nonnull NSNumber *)animationId; + +- (void)stopAnimationLoop; + +// events + +- (void)addAnimatedEventToView:(nonnull NSNumber *)viewTag + eventName:(nonnull NSString *)eventName + eventMapping:(NSDictionary *__nonnull)eventMapping; + +- (void)removeAnimatedEventFromView:(nonnull NSNumber *)viewTag + eventName:(nonnull NSString *)eventName + animatedNodeTag:(nonnull NSNumber *)animatedNodeTag; + +- (void)handleAnimatedEvent:(nonnull id)event; + +// listeners + +- (void)startListeningToAnimatedNodeValue:(nonnull NSNumber *)tag + valueObserver:(nonnull id)valueObserver; + +- (void)stopListeningToAnimatedNodeValue:(nonnull NSNumber *)tag; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTNativeAnimatedTurboModule.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTNativeAnimatedTurboModule.h new file mode 100644 index 0000000..2da04a1 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTNativeAnimatedTurboModule.h @@ -0,0 +1,23 @@ +/* + * 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 +#import +#import +#import +#import +#import +#import + +#import "RCTValueAnimatedNode.h" + +// TODO T69437152 @petetheheat - Delete this fork when Fabric ships to 100%. +// NOTE: This module is temporarily forked (see RCTNativeAnimatedModule). +// When making any changes, be sure to apply them to the fork as well. +@interface RCTNativeAnimatedTurboModule: RCTEventEmitter + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTNetworkPlugins.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTNetworkPlugins.h new file mode 100644 index 0000000..b8ea7cd --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTNetworkPlugins.h @@ -0,0 +1,43 @@ +/** + * 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 an internal plugin build system + */ + +#ifdef RN_DISABLE_OSS_PLUGIN_HEADER + +// FB Internal: FBRCTNetworkPlugins.h is autogenerated by the build system. +#import + +#else + +// OSS-compatibility layer + +#import + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wreturn-type-c-linkage" + +#ifdef __cplusplus +extern "C" { +#endif + +// RCTTurboModuleManagerDelegate should call this to resolve module classes. +Class RCTNetworkClassProvider(const char *name); + +// Lookup functions +Class RCTNetworkingCls(void) __attribute__((used)); +Class RCTDataRequestHandlerCls(void) __attribute__((used)); +Class RCTFileRequestHandlerCls(void) __attribute__((used)); +Class RCTHTTPRequestHandlerCls(void) __attribute__((used)); + +#ifdef __cplusplus +} +#endif + +#pragma GCC diagnostic pop + +#endif // RN_DISABLE_OSS_PLUGIN_HEADER diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTNetworkTask.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTNetworkTask.h new file mode 100644 index 0000000..716a090 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTNetworkTask.h @@ -0,0 +1,47 @@ +/* + * 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 + +#import +#import + +typedef void (^RCTURLRequestCompletionBlock)(NSURLResponse *response, NSData *data, NSError *error); +typedef void (^RCTURLRequestCancellationBlock)(void); +typedef void (^RCTURLRequestIncrementalDataBlock)(NSData *data, int64_t progress, int64_t total); +typedef void (^RCTURLRequestProgressBlock)(int64_t progress, int64_t total); +typedef void (^RCTURLRequestResponseBlock)(NSURLResponse *response); + +typedef NS_ENUM(NSInteger, RCTNetworkTaskStatus) { + RCTNetworkTaskPending = 0, + RCTNetworkTaskInProgress, + RCTNetworkTaskFinished, +}; + +@interface RCTNetworkTask : NSObject + +@property (nonatomic, readonly) NSURLRequest *request; +@property (nonatomic, readonly) NSNumber *requestID; +@property (nonatomic, readonly, weak) id requestToken; +@property (nonatomic, readonly) NSURLResponse *response; + +@property (nonatomic, copy) RCTURLRequestCompletionBlock completionBlock; +@property (nonatomic, copy) RCTURLRequestProgressBlock downloadProgressBlock; +@property (nonatomic, copy) RCTURLRequestIncrementalDataBlock incrementalDataBlock; +@property (nonatomic, copy) RCTURLRequestResponseBlock responseBlock; +@property (nonatomic, copy) RCTURLRequestProgressBlock uploadProgressBlock; + +@property (nonatomic, readonly) RCTNetworkTaskStatus status; + +- (instancetype)initWithRequest:(NSURLRequest *)request + handler:(id)handler + callbackQueue:(dispatch_queue_t)callbackQueue NS_DESIGNATED_INITIALIZER; + +- (void)start; +- (void)cancel; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTNetworking.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTNetworking.h new file mode 100644 index 0000000..2068f32 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTNetworking.h @@ -0,0 +1,73 @@ +/* + * 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 +#import +#import + +@protocol RCTNetworkingRequestHandler + +// @lint-ignore FBOBJCUNTYPEDCOLLECTION1 +- (BOOL)canHandleNetworkingRequest:(NSDictionary *)data; +// @lint-ignore FBOBJCUNTYPEDCOLLECTION1 +- (NSDictionary *)handleNetworkingRequest:(NSDictionary *)data; + +@end + +@protocol RCTNetworkingResponseHandler + +- (BOOL)canHandleNetworkingResponse:(NSString *)responseType; +- (id)handleNetworkingResponse:(NSURLResponse *)response data:(NSData *)data; + +@end + +@interface RCTNetworking : RCTEventEmitter + +/** + * Allows RCTNetworking instances to be initialized with handlers. + * The handlers will be requested via the bridge's moduleForName method when required. + */ +- (instancetype)initWithHandlersProvider:(NSArray> * (^)(RCTModuleRegistry *))getHandlers; + +/** + * Does a handler exist for the specified request? + */ +- (BOOL)canHandleRequest:(NSURLRequest *)request; + +/** + * Return an RCTNetworkTask for the specified request. This is useful for + * invoking the React Native networking stack from within native code. + */ +- (RCTNetworkTask *)networkTaskWithRequest:(NSURLRequest *)request + completionBlock:(RCTURLRequestCompletionBlock)completionBlock; + +- (void)addRequestHandler:(id)handler; + +- (void)addResponseHandler:(id)handler; + +- (void)removeRequestHandler:(id)handler; + +- (void)removeResponseHandler:(id)handler; + +@end + +@interface RCTBridge (RCTNetworking) + +@property (nonatomic, readonly) RCTNetworking *networking; + +@end + +// HACK: When uploading images/video from PHAssetLibrary, we change the URL scheme to be +// ph-upload://. This is to ensure that we upload a full video when given a ph-upload:// URL, +// instead of just the thumbnail. Consider the following problem: +// The user has a video in their camera roll with URL ph://1B3E2DDB-0AD3-4E33-A7A1-9F4AA9A762AA/L0/001 +// 1. We want to display that video in an and show the thumbnail +// 2. We later want to upload that video. +// At this point, if we use the same URL for both uses, there is no way to distinguish the intent +// and we will either upload the thumbnail (bad!) or try to show the video in an (bad!). +// Our solution is to change the URL scheme in the uploader. +extern NSString *const RCTNetworkingPHUploadHackScheme; diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTNullability.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTNullability.h new file mode 100644 index 0000000..f08d276 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTNullability.h @@ -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 + +typedef NS_ENUM(NSUInteger, RCTNullability) { + RCTNullabilityUnspecified, + RCTNullable, + RCTNonnullable, +}; diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTPackagerClient.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTPackagerClient.h new file mode 100644 index 0000000..3a7a3fd --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTPackagerClient.h @@ -0,0 +1,45 @@ +/* + * 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 + +#if RCT_DEV // Only supported in dev mode + +@class RCTPackagerClientResponder; +@class RCTReconnectingWebSocket; + +#if defined(__cplusplus) +extern "C" { +#endif + +extern const int RCT_PACKAGER_CLIENT_PROTOCOL_VERSION; + +#if defined(__cplusplus) +} +#endif + +@protocol RCTPackagerClientMethod + +- (void)handleRequest:(NSDictionary *)params withResponder:(RCTPackagerClientResponder *)responder; +- (void)handleNotification:(NSDictionary *)params; + +@optional + +/** By default object will receive its methods on the main queue, unless this method is overridden. */ +- (dispatch_queue_t)methodQueue; + +@end + +@interface RCTPackagerClientResponder : NSObject + +- (instancetype)initWithId:(id)msgId socket:(RCTReconnectingWebSocket *)socket; +- (void)respondWithResult:(id)result; +- (void)respondWithError:(id)error; + +@end + +#endif diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTPackagerConnection.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTPackagerConnection.h new file mode 100644 index 0000000..795a3fc --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTPackagerConnection.h @@ -0,0 +1,78 @@ +/* + * 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 + +#import + +#if RCT_DEV + +NS_ASSUME_NONNULL_BEGIN + +@protocol RCTPackagerClientMethod; +@class RCTPackagerClientResponder; + +typedef uint32_t RCTHandlerToken; +typedef void (^RCTNotificationHandler)(NSDictionary *); +typedef void (^RCTRequestHandler)(NSDictionary *, RCTPackagerClientResponder *); +typedef void (^RCTConnectedHandler)(void); + +/** Encapsulates singleton connection to React Native packager. */ +@interface RCTPackagerConnection : NSObject + ++ (instancetype)sharedPackagerConnection; + +/** + * Registers a handler for a notification broadcast from the packager. An + * example is "reload" - an instruction to reload from the packager. + * If multiple notification handlers are registered for the same method, they + * will all be invoked sequentially. + */ +- (RCTHandlerToken)addNotificationHandler:(RCTNotificationHandler)handler + queue:(dispatch_queue_t)queue + forMethod:(NSString *)method; + +/** + * Registers a handler for a request from the packager. An example is + * pokeSamplingProfiler; it asks for profile data from the client. + * Only one handler can be registered for a given method; calling this + * displaces any previous request handler registered for that method. + */ +- (RCTHandlerToken)addRequestHandler:(RCTRequestHandler)handler + queue:(dispatch_queue_t)queue + forMethod:(NSString *)method; + +/** + * Registers a handler that runs at most once, when the connection to the + * packager has been established. The handler will be dispatched immediately + * if the connection is already established. + */ +- (RCTHandlerToken)addConnectedHandler:(RCTConnectedHandler)handler queue:(dispatch_queue_t)queue; + +/** Removes a handler. Silently does nothing if the token is not valid. */ +- (void)removeHandler:(RCTHandlerToken)token; + +/** Disconnects and removes all handlers. */ +- (void)stop; + +/** Reconnect with given packager server. */ +- (void)reconnect:(NSString *)packagerServerHostPort; + +/** + * Historically no distinction was made between notification and request + * handlers. If you use this method, it will be registered as *both* a + * notification handler *and* a request handler. You should migrate to the + * new block-based API instead. + */ +- (void)addHandler:(id)handler + forMethod:(NSString *)method __deprecated_msg("Use addRequestHandler or addNotificationHandler instead"); + +@end + +NS_ASSUME_NONNULL_END + +#endif diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTParserUtils.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTParserUtils.h new file mode 100644 index 0000000..15701f4 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTParserUtils.h @@ -0,0 +1,30 @@ +/* + * 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 + +#import + +@interface RCTParserUtils : NSObject + +/** + * Generic utility functions for parsing Objective-C source code. + */ +RCT_EXTERN BOOL RCTReadChar(const char **input, char c); +RCT_EXTERN BOOL RCTReadString(const char **input, const char *string); +RCT_EXTERN void RCTSkipWhitespace(const char **input); +RCT_EXTERN BOOL RCTParseSelectorIdentifier(const char **input, NSString **string); +RCT_EXTERN BOOL RCTParseArgumentIdentifier(const char **input, NSString **string); + +/** + * Parse an Objective-C type into a form that can be used by RCTConvert. + * This doesn't really belong here, but it's used by both RCTConvert and + * RCTModuleMethod, which makes it difficult to find a better home for it. + */ +RCT_EXTERN NSString *RCTParseType(const char **input); + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTPerformanceLogger.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTPerformanceLogger.h new file mode 100644 index 0000000..b0e4a4e --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTPerformanceLogger.h @@ -0,0 +1,104 @@ +/* + * 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 + +// Keep this in sync with _labelsForTags +typedef NS_ENUM(NSUInteger, RCTPLTag) { + RCTPLScriptDownload = 0, + RCTPLScriptExecution, + RCTPLRAMBundleLoad, + RCTPLRAMStartupCodeSize, + RCTPLRAMStartupNativeRequires, + RCTPLRAMStartupNativeRequiresCount, + RCTPLRAMNativeRequires, + RCTPLRAMNativeRequiresCount, + RCTPLNativeModuleInit, + RCTPLNativeModuleMainThread, + RCTPLNativeModulePrepareConfig, + RCTPLNativeModuleMainThreadUsesCount, + RCTPLNativeModuleSetup, + RCTPLTurboModuleSetup, + RCTPLJSCWrapperOpenLibrary, + RCTPLBridgeStartup, + RCTPLTTI, + RCTPLBundleSize, + RCTPLReactInstanceInit, + RCTPLSize // This is used to count the size +}; + +@interface RCTPerformanceLogger : NSObject + +/** + * Starts measuring a metric with the given tag. + * Overrides previous value if the measurement has been already started. + * If RCTProfile is enabled it also begins appropriate async event. + * All work is scheduled on the background queue so this doesn't block current thread. + */ +- (void)markStartForTag:(RCTPLTag)tag; + +/** + * Stops measuring a metric with given tag. + * Checks if RCTPerformanceLoggerStart() has been called before + * and doesn't do anything and log a message if it hasn't. + * If RCTProfile is enabled it also ends appropriate async event. + * All work is scheduled on the background queue so this doesn't block current thread. + */ +- (void)markStopForTag:(RCTPLTag)tag; + +/** + * Sets given value for a metric with given tag. + * All work is scheduled on the background queue so this doesn't block current thread. + */ +- (void)setValue:(int64_t)value forTag:(RCTPLTag)tag; + +/** + * Adds given value to the current value for a metric with given tag. + * All work is scheduled on the background queue so this doesn't block current thread. + */ +- (void)addValue:(int64_t)value forTag:(RCTPLTag)tag; + +/** + * Starts an additional measurement for a metric with given tag. + * It doesn't override previous measurement, instead it'll append a new value + * to the old one. + * All work is scheduled on the background queue so this doesn't block current thread. + */ +- (void)appendStartForTag:(RCTPLTag)tag; + +/** + * Stops measurement and appends the result to the metric with given tag. + * Checks if RCTPerformanceLoggerAppendStart() has been called before + * and doesn't do anything and log a message if it hasn't. + * All work is scheduled on the background queue so this doesn't block current thread. + */ +- (void)appendStopForTag:(RCTPLTag)tag; + +/** + * Returns an array with values for all tags. + * Use RCTPLTag to go over the array, there's a pair of values + * for each tag: start and stop (with indexes 2 * tag and 2 * tag + 1). + */ +- (NSArray *)valuesForTags; + +/** + * Returns a duration in ms (stop_time - start_time) for given RCTPLTag. + */ +- (int64_t)durationForTag:(RCTPLTag)tag; + +/** + * Returns a value for given RCTPLTag. + */ +- (int64_t)valueForTag:(RCTPLTag)tag; + +/** + * Returns an array with values for all tags. + * Use RCTPLTag to go over the array. + */ +- (NSArray *)labelsForTags; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTPlatform.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTPlatform.h new file mode 100644 index 0000000..64ce567 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTPlatform.h @@ -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 + +#import + +@interface RCTPlatform : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTPointerEvents.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTPointerEvents.h new file mode 100644 index 0000000..001c85f --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTPointerEvents.h @@ -0,0 +1,15 @@ +/* + * 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 + +typedef NS_ENUM(NSInteger, RCTPointerEvents) { + RCTPointerEventsUnspecified = 0, // Default + RCTPointerEventsNone, + RCTPointerEventsBoxNone, + RCTPointerEventsBoxOnly, +}; diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTProfile.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTProfile.h new file mode 100644 index 0000000..7c6dec1 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTProfile.h @@ -0,0 +1,226 @@ +/* + * 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 + +#import +#import + +/** + * RCTProfile + * + * This file provides a set of functions and macros for performance profiling + * + * NOTE: This API is a work in progress, please consider carefully before + * using it. + */ + +RCT_EXTERN NSString *const RCTProfileDidStartProfiling; +RCT_EXTERN NSString *const RCTProfileDidEndProfiling; + +RCT_EXTERN const uint64_t RCTProfileTagAlways; + +#if RCT_PROFILE + +@class RCTBridge; + +#define RCTProfileBeginFlowEvent() \ + _Pragma("clang diagnostic push") _Pragma("clang diagnostic ignored \"-Wshadow\"") NSUInteger __rct_profile_flow_id = \ + _RCTProfileBeginFlowEvent(); \ + _Pragma("clang diagnostic pop") + +#define RCTProfileEndFlowEvent() _RCTProfileEndFlowEvent(__rct_profile_flow_id) + +RCT_EXTERN dispatch_queue_t RCTProfileGetQueue(void); + +RCT_EXTERN NSUInteger _RCTProfileBeginFlowEvent(void); +RCT_EXTERN void _RCTProfileEndFlowEvent(NSUInteger); + +/** + * Returns YES if the profiling information is currently being collected + */ +RCT_EXTERN BOOL RCTProfileIsProfiling(void); + +/** + * Start collecting profiling information + */ +RCT_EXTERN void RCTProfileInit(RCTBridge *); + +/** + * Stop profiling and return a JSON string of the collected data - The data + * returned is compliant with google's trace event format - the format used + * as input to trace-viewer + */ +RCT_EXTERN void RCTProfileEnd(RCTBridge *, void (^)(NSString *)); + +/** + * Collects the initial event information for the event and returns a reference ID + */ +RCT_EXTERN void _RCTProfileBeginEvent( + NSThread *calleeThread, + NSTimeInterval time, + uint64_t tag, + NSString *name, + NSDictionary *args); +#define RCT_PROFILE_BEGIN_EVENT(tag, name, args) \ + do { \ + if (RCTProfileIsProfiling()) { \ + NSThread *__calleeThread = [NSThread currentThread]; \ + NSTimeInterval __time = CACurrentMediaTime(); \ + _RCTProfileBeginEvent(__calleeThread, __time, tag, name, args); \ + } \ + } while (0) + +/** + * The ID returned by BeginEvent should then be passed into EndEvent, with the + * rest of the event information. Just at this point the event will actually be + * registered + */ +RCT_EXTERN void _RCTProfileEndEvent( + NSThread *calleeThread, + NSString *threadName, + NSTimeInterval time, + uint64_t tag, + NSString *category); + +#define RCT_PROFILE_END_EVENT(tag, category) \ + do { \ + if (RCTProfileIsProfiling()) { \ + NSThread *__calleeThread = [NSThread currentThread]; \ + NSString *__threadName = RCTCurrentThreadName(); \ + NSTimeInterval __time = CACurrentMediaTime(); \ + _RCTProfileEndEvent(__calleeThread, __threadName, __time, tag, category); \ + } \ + } while (0) + +/** + * Collects the initial event information for the event and returns a reference ID + */ +RCT_EXTERN NSUInteger +RCTProfileBeginAsyncEvent(uint64_t tag, NSString *name, NSDictionary *args); + +/** + * The ID returned by BeginEvent should then be passed into EndEvent, with the + * rest of the event information. Just at this point the event will actually be + * registered + */ +RCT_EXTERN void +RCTProfileEndAsyncEvent(uint64_t tag, NSString *category, NSUInteger cookie, NSString *name, NSString *threadName); + +/** + * An event that doesn't have a duration (i.e. Notification, VSync, etc) + */ +RCT_EXTERN void RCTProfileImmediateEvent(uint64_t tag, NSString *name, NSTimeInterval time, char scope); + +/** + * Helper to profile the duration of the execution of a block. This method uses + * self and _cmd to name this event for simplicity sake. + * + * NOTE: The block can't expect any argument + * + * DEPRECATED: this approach breaks debugging and stepping through instrumented block functions + */ +#define RCTProfileBlock(block, tag, category, arguments) \ + ^{ \ + RCT_PROFILE_BEGIN_EVENT(tag, @(__PRETTY_FUNCTION__), nil); \ + block(); \ + RCT_PROFILE_END_EVENT(tag, category, arguments); \ + } + +/** + * Hook into a bridge instance to log all bridge module's method calls + */ +RCT_EXTERN void RCTProfileHookModules(RCTBridge *); + +/** + * Unhook from a given bridge instance's modules + */ +RCT_EXTERN void RCTProfileUnhookModules(RCTBridge *); + +/** + * Hook into all of a module's methods + */ +RCT_EXTERN void RCTProfileHookInstance(id instance); + +/** + * Send systrace or cpu profiling information to the packager + * to present to the user + */ +RCT_EXTERN void RCTProfileSendResult(RCTBridge *bridge, NSString *route, NSData *profileData); + +/** + * Systrace gluecode + * + * allow to use systrace to back RCTProfile + */ + +typedef struct { + const char *key; + unsigned long key_len; + const char *value; + unsigned long value_len; +} systrace_arg_t; + +typedef struct { + char *(*start)(void); + void (*stop)(void); + + void (*begin_section)(uint64_t tag, const char *name, size_t numArgs, systrace_arg_t *args); + void (*end_section)(uint64_t tag, size_t numArgs, systrace_arg_t *args); + + void (*begin_async_section)(uint64_t tag, const char *name, int cookie, size_t numArgs, systrace_arg_t *args); + void (*end_async_section)(uint64_t tag, const char *name, int cookie, size_t numArgs, systrace_arg_t *args); + + void (*instant_section)(uint64_t tag, const char *name, char scope); + + void (*begin_async_flow)(uint64_t tag, const char *name, int cookie); + void (*end_async_flow)(uint64_t tag, const char *name, int cookie); +} RCTProfileCallbacks; + +RCT_EXTERN void RCTProfileRegisterCallbacks(RCTProfileCallbacks *); + +/** + * Systrace control window + */ +RCT_EXTERN void RCTProfileShowControls(void); +RCT_EXTERN void RCTProfileHideControls(void); + +#else + +#define RCTProfileBeginFlowEvent() +#define _RCTProfileBeginFlowEvent() @0 + +#define RCTProfileEndFlowEvent() +#define _RCTProfileEndFlowEvent(...) + +#define RCTProfileIsProfiling(...) NO +#define RCTProfileInit(...) +#define RCTProfileEnd(...) @"" + +#define _RCTProfileBeginEvent(...) +#define _RCTProfileEndEvent(...) + +#define RCT_PROFILE_BEGIN_EVENT(...) +#define RCT_PROFILE_END_EVENT(...) + +#define RCTProfileBeginAsyncEvent(...) 0 +#define RCTProfileEndAsyncEvent(...) + +#define RCTProfileImmediateEvent(...) + +#define RCTProfileBlock(block, ...) block + +#define RCTProfileHookModules(...) +#define RCTProfileHookInstance(...) +#define RCTProfileUnhookModules(...) + +#define RCTProfileSendResult(...) + +#define RCTProfileShowControls(...) +#define RCTProfileHideControls(...) + +#endif diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTProgressViewManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTProgressViewManager.h new file mode 100644 index 0000000..32b0988 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTProgressViewManager.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTProgressViewManager : RCTViewManager + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTPropsAnimatedNode.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTPropsAnimatedNode.h new file mode 100644 index 0000000..0b5f532 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTPropsAnimatedNode.h @@ -0,0 +1,26 @@ +/* + * 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 "RCTAnimatedNode.h" + +#import + +@class RCTBridge; +@class RCTViewPropertyMapper; + +@interface RCTPropsAnimatedNode : RCTAnimatedNode + +- (void)connectToView:(NSNumber *)viewTag + viewName:(NSString *)viewName + bridge:(RCTBridge *)bridge + surfacePresenter:(id)surfacePresenter; + +- (void)disconnectFromView:(NSNumber *)viewTag; + +- (void)restoreDefaultValues; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRawTextShadowView.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRawTextShadowView.h new file mode 100644 index 0000000..1b63014 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRawTextShadowView.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTRawTextShadowView : RCTShadowView + +@property (nonatomic, copy, nullable) NSString *text; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRawTextViewManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRawTextViewManager.h new file mode 100644 index 0000000..ef9a076 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRawTextViewManager.h @@ -0,0 +1,16 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTRawTextViewManager : RCTViewManager + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTReconnectingWebSocket.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTReconnectingWebSocket.h new file mode 100644 index 0000000..25aa3ef --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTReconnectingWebSocket.h @@ -0,0 +1,37 @@ +/* + * 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 + +#if RCT_DEV // Only supported in dev mode + +@class RCTReconnectingWebSocket; + +@protocol RCTReconnectingWebSocketDelegate +- (void)reconnectingWebSocketDidOpen:(RCTReconnectingWebSocket *)webSocket; +- (void)reconnectingWebSocket:(RCTReconnectingWebSocket *)webSocket didReceiveMessage:(id)message; +/** Sent when the socket has closed due to error or clean shutdown. An automatic reconnect will start shortly. */ +- (void)reconnectingWebSocketDidClose:(RCTReconnectingWebSocket *)webSocket; +@end + +@interface RCTReconnectingWebSocket : NSObject + +/** Delegate will be messaged on the given queue (required). */ +- (instancetype)initWithURL:(NSURL *)url queue:(dispatch_queue_t)queue; + +@property (nonatomic, weak) id delegate; +- (void)send:(id)data; +- (void)start; +- (void)stop; + +- (instancetype)initWithURL:(NSURL *)url __deprecated_msg("Use initWithURL:queue: instead"); +/** @brief Must be set before -start to have effect */ +@property (nonatomic, strong) dispatch_queue_t delegateDispatchQueue __deprecated_msg("Use initWithURL:queue: instead"); + +@end + +#endif diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRedBox.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRedBox.h new file mode 100644 index 0000000..d468f44 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRedBox.h @@ -0,0 +1,59 @@ +/* + * 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 + +#import +#import +#import + +@class RCTJSStackFrame; + +typedef void (^RCTRedBoxButtonPressHandler)(void); + +@interface RCTRedBox : NSObject + +- (void)registerErrorCustomizer:(id)errorCustomizer; +- (void)showError:(NSError *)error; +- (void)showErrorMessage:(NSString *)message; +- (void)showErrorMessage:(NSString *)message withDetails:(NSString *)details; +- (void)showErrorMessage:(NSString *)message withRawStack:(NSString *)rawStack; +- (void)showErrorMessage:(NSString *)message withRawStack:(NSString *)rawStack errorCookie:(int)errorCookie; +- (void)showErrorMessage:(NSString *)message withStack:(NSArray *)stack; +- (void)updateErrorMessage:(NSString *)message withStack:(NSArray *)stack; +- (void)showErrorMessage:(NSString *)message withStack:(NSArray *)stack errorCookie:(int)errorCookie; +- (void)updateErrorMessage:(NSString *)message withStack:(NSArray *)stack errorCookie:(int)errorCookie; +- (void)showErrorMessage:(NSString *)message withParsedStack:(NSArray *)stack; +- (void)updateErrorMessage:(NSString *)message withParsedStack:(NSArray *)stack; +- (void)showErrorMessage:(NSString *)message + withParsedStack:(NSArray *)stack + errorCookie:(int)errorCookie; +- (void)updateErrorMessage:(NSString *)message + withParsedStack:(NSArray *)stack + errorCookie:(int)errorCookie; + +- (void)dismiss; + +- (void)addCustomButton:(NSString *)title onPressHandler:(RCTRedBoxButtonPressHandler)handler; + +/** Overrides bridge.bundleURL. Modify on main thread only. You shouldn't need to use this. */ +@property (nonatomic, strong) NSURL *overrideBundleURL; + +/** Overrides the default behavior of calling [bridge reload] on reload. You shouldn't need to use this. */ +@property (nonatomic, strong) dispatch_block_t overrideReloadAction; + +@end + +/** + * This category makes the red box instance available via the RCTBridge, which + * is useful for any class that needs to access the red box or error log. + */ +@interface RCTBridge (RCTRedBox) + +@property (nonatomic, readonly) RCTRedBox *redBox; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRedBoxExtraDataViewController.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRedBoxExtraDataViewController.h new file mode 100644 index 0000000..8d2b4c2 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRedBoxExtraDataViewController.h @@ -0,0 +1,20 @@ +/* + * 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 + +@protocol RCTRedBoxExtraDataActionDelegate +- (void)reload; +@end + +@interface RCTRedBoxExtraDataViewController : UIViewController + +@property (nonatomic, weak) id actionDelegate; + +- (void)addExtraData:(NSDictionary *)data forIdentifier:(NSString *)identifier; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRedBoxSetEnabled.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRedBoxSetEnabled.h new file mode 100644 index 0000000..fd53eb7 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRedBoxSetEnabled.h @@ -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 + +// In debug builds, the red box is enabled by default but it is further +// customizable using this method. However, this method only has an effect in +// builds where RCTRedBox is actually compiled in. +RCT_EXTERN void RCTRedBoxSetEnabled(BOOL enabled); +RCT_EXTERN BOOL RCTRedBoxGetEnabled(void); diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRefreshControl.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRefreshControl.h new file mode 100644 index 0000000..c17b226 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRefreshControl.h @@ -0,0 +1,19 @@ +/* + * 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 + +#import +#import + +@interface RCTRefreshControl : UIRefreshControl + +@property (nonatomic, copy) NSString *title; +@property (nonatomic, copy) RCTDirectEventBlock onRefresh; +@property (nonatomic, weak) UIScrollView *scrollView; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRefreshControlManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRefreshControlManager.h new file mode 100644 index 0000000..107a9db --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRefreshControlManager.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTRefreshControlManager : RCTViewManager + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRefreshableProtocol.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRefreshableProtocol.h new file mode 100644 index 0000000..9271e2d --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRefreshableProtocol.h @@ -0,0 +1,20 @@ +/* + * 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 +#import + +/** + * Protocol used to dispatch commands in `RCTRefreshControlManager.h`. + * This is in order to support commands for both Paper and Fabric components + * during migration. + */ +@protocol RCTRefreshableProtocol + +- (void)setRefreshing:(BOOL)refreshing; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTReloadCommand.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTReloadCommand.h new file mode 100644 index 0000000..4846275 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTReloadCommand.h @@ -0,0 +1,38 @@ +/* + * 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 + +#import + +/** + * A protocol which should be conformed to in order to be notified of RN reload events. These events can be + * created by CMD+R or dev menu during development, or anywhere the trigger is exposed to JS. + * The listener must also register itself using the method below. + */ +@protocol RCTReloadListener +- (void)didReceiveReloadCommand; +@end + +/** + * Registers a weakly-held observer of RN reload events. + */ +RCT_EXTERN void RCTRegisterReloadCommandListener(id listener); + +/** + * Triggers a reload for all current listeners. Replaces [_bridge reload]. + */ +RCT_EXTERN void RCTTriggerReloadCommandListeners(NSString *reason); + +/** + * This notification fires anytime RCTTriggerReloadCommandListeners() is called. + */ +RCT_EXTERN NSString *const RCTTriggerReloadCommandNotification; +RCT_EXTERN NSString *const RCTTriggerReloadCommandReasonKey; +RCT_EXTERN NSString *const RCTTriggerReloadCommandBundleURLKey; + +RCT_EXTERN void RCTReloadCommandSetBundleURL(NSURL *URL); diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTResizeMode.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTResizeMode.h new file mode 100644 index 0000000..468a58a --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTResizeMode.h @@ -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 + +typedef NS_ENUM(NSInteger, RCTResizeMode) { + RCTResizeModeCover = UIViewContentModeScaleAspectFill, + RCTResizeModeContain = UIViewContentModeScaleAspectFit, + RCTResizeModeStretch = UIViewContentModeScaleToFill, + RCTResizeModeCenter = UIViewContentModeCenter, + RCTResizeModeRepeat = -1, // Use negative values to avoid conflicts with iOS enum values. +}; + +@interface RCTConvert(RCTResizeMode) + ++ (RCTResizeMode)RCTResizeMode:(id)json; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRootContentView.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRootContentView.h new file mode 100644 index 0000000..dfc6d03 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRootContentView.h @@ -0,0 +1,32 @@ +/* + * 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 + +#import +#import +#import + +@class RCTBridge; +@class RCTTouchHandler; + +@interface RCTRootContentView : RCTView + +@property (nonatomic, readonly, weak) RCTBridge *bridge; +@property (nonatomic, readonly, assign) BOOL contentHasAppeared; +@property (nonatomic, readonly, strong) RCTTouchHandler *touchHandler; +@property (nonatomic, readonly, assign) CGSize availableSize; + +@property (nonatomic, assign) BOOL passThroughTouches; +@property (nonatomic, assign) RCTRootViewSizeFlexibility sizeFlexibility; + +- (instancetype)initWithFrame:(CGRect)frame + bridge:(RCTBridge *)bridge + reactTag:(NSNumber *)reactTag + sizeFlexiblity:(RCTRootViewSizeFlexibility)sizeFlexibility NS_DESIGNATED_INITIALIZER; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRootShadowView.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRootShadowView.h new file mode 100644 index 0000000..74af7e8 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRootShadowView.h @@ -0,0 +1,34 @@ +/* + * 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 +#import + +@interface RCTRootShadowView : RCTShadowView + +/** + * Minimum size to layout all views. + * Defaults to CGSizeZero + */ +@property (nonatomic, assign) CGSize minimumSize; + +/** + * Available size to layout all views. + * Defaults to {INFINITY, INFINITY} + */ +@property (nonatomic, assign) CGSize availableSize; + +/** + * Layout direction (LTR or RTL) inherited from native environment and + * is using as a base direction value in layout engine. + * Defaults to value inferred from current locale. + */ +@property (nonatomic, assign) YGDirection baseDirection; + +- (void)layoutWithAffectedShadowViews:(NSHashTable *)affectedShadowViews; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRootView.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRootView.h new file mode 100644 index 0000000..dd56345 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRootView.h @@ -0,0 +1,189 @@ +/* + * 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 + +#import +#import +#import + +@protocol RCTRootViewDelegate; + +/** + * This enum is used to define size flexibility type of the root view. + * If a dimension is flexible, the view will recalculate that dimension + * so the content fits. Recalculations are performed when the root's frame, + * size flexibility mode or content size changes. After a recalculation, + * rootViewDidChangeIntrinsicSize method of the RCTRootViewDelegate will be called. + */ +typedef NS_ENUM(NSInteger, RCTRootViewSizeFlexibility) { + RCTRootViewSizeFlexibilityNone = 0, + RCTRootViewSizeFlexibilityWidth = 1 << 0, + RCTRootViewSizeFlexibilityHeight = 1 << 1, + RCTRootViewSizeFlexibilityWidthAndHeight = RCTRootViewSizeFlexibilityWidth | RCTRootViewSizeFlexibilityHeight, +}; + +/** + * This notification is sent when the first subviews are added to the root view + * after the application has loaded. This is used to hide the `loadingView`, and + * is a good indicator that the application is ready to use. + */ +#if defined(__cplusplus) +extern "C" +#else +extern +#endif + + NS_ASSUME_NONNULL_BEGIN + + NSString *const RCTContentDidAppearNotification; + +/** + * Native view used to host React-managed views within the app. Can be used just + * like any ordinary UIView. You can have multiple RCTRootViews on screen at + * once, all controlled by the same JavaScript application. + */ +@interface RCTRootView : UIView + +/** + * - Designated initializer - + */ +- (instancetype)initWithFrame:(CGRect)frame + bridge:(RCTBridge *)bridge + moduleName:(NSString *)moduleName + initialProperties:(nullable NSDictionary *)initialProperties NS_DESIGNATED_INITIALIZER; + +/** + * - Convenience initializer - + * The frame will default to CGRectZero. + */ +- (instancetype)initWithBridge:(RCTBridge *)bridge + moduleName:(NSString *)moduleName + initialProperties:(nullable NSDictionary *)initialProperties; + +/** + * - Convenience initializer - + * A bridge will be created internally. + * This initializer is intended to be used when the app has a single RCTRootView, + * otherwise create an `RCTBridge` and pass it in via `initWithBridge:moduleName:` + * to all the instances. + */ +- (instancetype)initWithBundleURL:(NSURL *)bundleURL + moduleName:(NSString *)moduleName + initialProperties:(nullable NSDictionary *)initialProperties + launchOptions:(nullable NSDictionary *)launchOptions; + +/** + * This API allows RCTRootView users to know if the root view is backed by the bridge. + */ +@property (nonatomic, readonly) BOOL hasBridge; + +/** + * This API allows users of RCTRootView to access other NativeModules, without + * directly accessing the bridge. + */ +@property (nonatomic, strong, readonly) RCTModuleRegistry *moduleRegistry; + +@property (nonatomic, strong, readonly) id eventDispatcher; + +/** + * The name of the JavaScript module to execute within the + * specified scriptURL (required). Setting this will not have + * any immediate effect, but it must be done prior to loading + * the script. + */ +@property (nonatomic, copy, readonly) NSString *moduleName; + +/** + * The bridge used by the root view. Bridges can be shared between multiple + * root views, so you can use this property to initialize another RCTRootView. + */ +@property (nonatomic, strong, readonly) RCTBridge *bridge; + +/** + * The properties to apply to the view. Use this property to update + * application properties and rerender the view. Initialized with + * initialProperties argument of the initializer. + * + * Set this property only on the main thread. + */ +@property (nonatomic, copy, readwrite, nullable) NSDictionary *appProperties; + +/** + * The size flexibility mode of the root view. + */ +@property (nonatomic, assign) RCTRootViewSizeFlexibility sizeFlexibility; + +/* + * The minimum size of the root view, defaults to CGSizeZero. + */ +@property (nonatomic, assign) CGSize minimumSize; + +/** + * The delegate that handles intrinsic size updates. + */ +@property (nonatomic, weak, nullable) id delegate; + +/** + * The backing view controller of the root view. + */ +@property (nonatomic, weak, nullable) UIViewController *reactViewController; + +/** + * The React-managed contents view of the root view. + */ +@property (nonatomic, strong, readonly) UIView *contentView; + +/** + * A view to display while the JavaScript is loading, so users aren't presented + * with a blank screen. By default this is nil, but you can override it with + * (for example) a UIActivityIndicatorView or a placeholder image. + */ +@property (nonatomic, strong, nullable) UIView *loadingView; + +/** + * When set, any touches on the RCTRootView that are not matched up to any of the child + * views will be passed to siblings of the RCTRootView. See -[UIView hitTest:withEvent:] + * for details on iOS hit testing. + * + * Enable this to support a semi-transparent RN view that occupies the whole screen but + * has visible content below it that the user can interact with. + * + * The default value is NO. + */ +@property (nonatomic, assign) BOOL passThroughTouches; + +/** + * Timings for hiding the loading view after the content has loaded. Both of + * these values default to 0.25 seconds. + */ +@property (nonatomic, assign) NSTimeInterval loadingViewFadeDelay; +@property (nonatomic, assign) NSTimeInterval loadingViewFadeDuration; + +@end + +@interface RCTRootView (Deprecated) + +/** + * The intrinsic size of the root view's content. This is set right before the + * `rootViewDidChangeIntrinsicSize` method of `RCTRootViewDelegate` is called. + * This property is deprecated and will be removed in next releases. + * Use UIKit `intrinsicContentSize` property instead. + */ +@property (readonly, nonatomic, assign) CGSize intrinsicSize __deprecated_msg("Use `intrinsicContentSize` instead."); + +/** + * This methods is deprecated and will be removed soon. + * To interrupt a React Native gesture recognizer, use the standard + * `UIGestureRecognizer` negotiation process. + * See `UIGestureRecognizerDelegate` for more details. + */ +- (void)cancelTouches; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRootViewDelegate.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRootViewDelegate.h new file mode 100644 index 0000000..5749157 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRootViewDelegate.h @@ -0,0 +1,30 @@ +/* + * 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 + +@class RCTRootView; + +@protocol RCTRootViewDelegate + +/** + * Called after the root view's intrinsic content size is changed. + * + * The method is not called when both old size and new size have + * a dimension that equals to zero. + * + * The delegate can use this callback to appropriately resize + * the root view's frame to fit the new intrinsic content view size, + * but usually it is not necessary because the root view will also call + * `setNeedsLayout` for its superview which in its turn will trigger relayout. + * + * The new intrinsic content size is available via the `intrinsicContentSize` + * property of the root view. The view will not resize itself. + */ +- (void)rootViewDidChangeIntrinsicSize:(RCTRootView *)rootView; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRootViewInternal.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRootViewInternal.h new file mode 100644 index 0000000..8e28dd4 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTRootViewInternal.h @@ -0,0 +1,24 @@ +/* + * 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 + +/** + * The interface provides a set of functions that allow other internal framework + * classes to change the RCTRootViews's internal state. + */ +@interface RCTRootView () + +/** + * This setter should be used only by RCTUIManager on react root view + * intrinsic content size update. + */ +@property (readwrite, nonatomic, assign) CGSize intrinsicContentSize; + +- (void)contentViewInvalidated; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSRWebSocket.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSRWebSocket.h new file mode 100644 index 0000000..1b17cff --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSRWebSocket.h @@ -0,0 +1,132 @@ +// +// Copyright 2012 Square Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#import +#import + +typedef NS_ENUM(unsigned int, RCTSRReadyState) { + RCTSR_CONNECTING = 0, + RCTSR_OPEN = 1, + RCTSR_CLOSING = 2, + RCTSR_CLOSED = 3, +}; + +typedef NS_ENUM(NSInteger, RCTSRStatusCode) { + RCTSRStatusCodeNormal = 1000, + RCTSRStatusCodeGoingAway = 1001, + RCTSRStatusCodeProtocolError = 1002, + RCTSRStatusCodeUnhandledType = 1003, + // 1004 reserved. + RCTSRStatusNoStatusReceived = 1005, + // 1004-1006 reserved. + RCTSRStatusCodeInvalidUTF8 = 1007, + RCTSRStatusCodePolicyViolated = 1008, + RCTSRStatusCodeMessageTooBig = 1009, +}; + +@class RCTSRWebSocket; + +extern NSString *const RCTSRWebSocketErrorDomain; +extern NSString *const RCTSRHTTPResponseErrorKey; + +#pragma mark - RCTSRWebSocketDelegate + +@protocol RCTSRWebSocketDelegate; + +#pragma mark - RCTSRWebSocket + +@interface RCTSRWebSocket : NSObject + +@property (nonatomic, weak) id delegate; + +@property (nonatomic, readonly) RCTSRReadyState readyState; +@property (nonatomic, readonly, strong) NSURL *url; + +// This returns the negotiated protocol. +// It will be nil until after the handshake completes. +@property (nonatomic, readonly, copy) NSString *protocol; + +// Protocols should be an array of strings that turn into Sec-WebSocket-Protocol. +- (instancetype)initWithURLRequest:(NSURLRequest *)request protocols:(NSArray *)protocols NS_DESIGNATED_INITIALIZER; +- (instancetype)initWithURLRequest:(NSURLRequest *)request; + +// Some helper constructors. +- (instancetype)initWithURL:(NSURL *)url protocols:(NSArray *)protocols; +- (instancetype)initWithURL:(NSURL *)url; + +// Delegate queue will be dispatch_main_queue by default. +// You cannot set both OperationQueue and dispatch_queue. +- (void)setDelegateOperationQueue:(NSOperationQueue *)queue; +- (void)setDelegateDispatchQueue:(dispatch_queue_t)queue; + +// By default, it will schedule itself on +[NSRunLoop RCTSR_networkRunLoop] using defaultModes. +- (void)scheduleInRunLoop:(NSRunLoop *)aRunLoop forMode:(NSString *)mode; +- (void)unscheduleFromRunLoop:(NSRunLoop *)aRunLoop forMode:(NSString *)mode; + +// RCTSRWebSockets are intended for one-time-use only. Open should be called once and only once. +- (void)open; + +- (void)close; +- (void)closeWithCode:(NSInteger)code reason:(NSString *)reason; + +// Send a UTF8 String or Data. +- (void)send:(id)data; + +// Send Data (can be nil) in a ping message. +- (void)sendPing:(NSData *)data; + +@end + +#pragma mark - RCTSRWebSocketDelegate + +@protocol RCTSRWebSocketDelegate + +// message will either be an NSString if the server is using text +// or NSData if the server is using binary. +- (void)webSocket:(RCTSRWebSocket *)webSocket didReceiveMessage:(id)message; + +@optional + +- (void)webSocketDidOpen:(RCTSRWebSocket *)webSocket; +- (void)webSocket:(RCTSRWebSocket *)webSocket didFailWithError:(NSError *)error; +- (void)webSocket:(RCTSRWebSocket *)webSocket didCloseWithCode:(NSInteger)code reason:(NSString *)reason wasClean:(BOOL)wasClean; +- (void)webSocket:(RCTSRWebSocket *)webSocket didReceivePong:(NSData *)pongPayload; + +@end + +#pragma mark - NSURLRequest (CertificateAdditions) + +@interface NSURLRequest (CertificateAdditions) + +@property (nonatomic, readonly, copy) NSArray *RCTSR_SSLPinnedCertificates; + +@end + +#pragma mark - NSMutableURLRequest (CertificateAdditions) + +@interface NSMutableURLRequest (CertificateAdditions) + +@property (nonatomic, copy) NSArray *RCTSR_SSLPinnedCertificates; + +@end + +#pragma mark - NSRunLoop (RCTSRWebSocket) + +@interface NSRunLoop (RCTSRWebSocket) + ++ (NSRunLoop *)RCTSR_networkRunLoop; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSafeAreaShadowView.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSafeAreaShadowView.h new file mode 100644 index 0000000..784a4e0 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSafeAreaShadowView.h @@ -0,0 +1,16 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTSafeAreaShadowView : RCTShadowView + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSafeAreaView.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSafeAreaView.h new file mode 100644 index 0000000..ae1b6b3 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSafeAreaView.h @@ -0,0 +1,24 @@ +/* + * 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 + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class RCTBridge; + +@interface RCTSafeAreaView : RCTView + +- (instancetype)initWithBridge:(RCTBridge *)bridge; + +@property (nonatomic, assign) BOOL emulateUnlessSupported; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSafeAreaViewLocalData.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSafeAreaViewLocalData.h new file mode 100644 index 0000000..24c776c --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSafeAreaViewLocalData.h @@ -0,0 +1,20 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTSafeAreaViewLocalData : NSObject + +- (instancetype)initWithInsets:(UIEdgeInsets)insets; + +@property (atomic, readonly) UIEdgeInsets insets; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSafeAreaViewManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSafeAreaViewManager.h new file mode 100644 index 0000000..71dcc3c --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSafeAreaViewManager.h @@ -0,0 +1,16 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTSafeAreaViewManager : RCTViewManager + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTScrollContentShadowView.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTScrollContentShadowView.h new file mode 100644 index 0000000..ecae476 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTScrollContentShadowView.h @@ -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 + +#import + +@interface RCTScrollContentShadowView : RCTShadowView + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTScrollContentView.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTScrollContentView.h new file mode 100644 index 0000000..8d33a5a --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTScrollContentView.h @@ -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 + +#import + +@interface RCTScrollContentView : RCTView + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTScrollContentViewManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTScrollContentViewManager.h new file mode 100644 index 0000000..7645c04 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTScrollContentViewManager.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTScrollContentViewManager : RCTViewManager + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTScrollEvent.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTScrollEvent.h new file mode 100644 index 0000000..29a645d --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTScrollEvent.h @@ -0,0 +1,23 @@ +/* + * 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 +#import + +@interface RCTScrollEvent : NSObject + +- (instancetype)initWithEventName:(NSString *)eventName + reactTag:(NSNumber *)reactTag + scrollViewContentOffset:(CGPoint)scrollViewContentOffset + scrollViewContentInset:(UIEdgeInsets)scrollViewContentInset + scrollViewContentSize:(CGSize)scrollViewContentSize + scrollViewFrame:(CGRect)scrollViewFrame + scrollViewZoomScale:(CGFloat)scrollViewZoomScale + userData:(NSDictionary *)userData + coalescingKey:(uint16_t)coalescingKey NS_DESIGNATED_INITIALIZER; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTScrollView.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTScrollView.h new file mode 100644 index 0000000..ea1522b --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTScrollView.h @@ -0,0 +1,70 @@ +/* + * 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 + +#import +#import +#import +#import +#import + +@protocol UIScrollViewDelegate; + +@interface RCTScrollView : RCTView + +- (instancetype)initWithEventDispatcher:(id)eventDispatcher NS_DESIGNATED_INITIALIZER; + +/** + * The `RCTScrollView` may have at most one single subview. This will ensure + * that the scroll view's `contentSize` will be efficiently set to the size of + * the single subview's frame. That frame size will be determined somewhat + * efficiently since it will have already been computed by the off-main-thread + * layout system. + */ +@property (nonatomic, readonly) UIView *contentView; + +/** + * The underlying scrollView (TODO: can we remove this?) + */ +@property (nonatomic, readonly) UIScrollView *scrollView; + +@property (nonatomic, assign) UIEdgeInsets contentInset; +@property (nonatomic, assign) BOOL automaticallyAdjustContentInsets; +@property (nonatomic, assign) BOOL DEPRECATED_sendUpdatedChildFrames; +@property (nonatomic, assign) NSTimeInterval scrollEventThrottle; +@property (nonatomic, assign) BOOL centerContent; +@property (nonatomic, copy) NSDictionary *maintainVisibleContentPosition; +@property (nonatomic, assign) BOOL scrollToOverflowEnabled; +@property (nonatomic, assign) int snapToInterval; +@property (nonatomic, assign) BOOL disableIntervalMomentum; +@property (nonatomic, copy) NSArray *snapToOffsets; +@property (nonatomic, assign) BOOL snapToStart; +@property (nonatomic, assign) BOOL snapToEnd; +@property (nonatomic, copy) NSString *snapToAlignment; +@property (nonatomic, assign) BOOL inverted; +@property (nonatomic, assign) int minPointers; + +// NOTE: currently these event props are only declared so we can export the +// event names to JS - we don't call the blocks directly because scroll events +// need to be coalesced before sending, for performance reasons. +@property (nonatomic, copy) RCTDirectEventBlock onScrollBeginDrag; +@property (nonatomic, copy) RCTDirectEventBlock onScroll; +@property (nonatomic, copy) RCTDirectEventBlock onScrollToTop; +@property (nonatomic, copy) RCTDirectEventBlock onScrollEndDrag; +@property (nonatomic, copy) RCTDirectEventBlock onMomentumScrollBegin; +@property (nonatomic, copy) RCTDirectEventBlock onMomentumScrollEnd; + +@end + +@interface RCTScrollView (Internal) + +- (void)updateContentSizeIfNeeded; + +@end + +RCT_EXTERN void RCTSendFakeScrollEvent(id eventDispatcher, NSNumber *reactTag); diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTScrollViewManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTScrollViewManager.h new file mode 100644 index 0000000..94f6e19 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTScrollViewManager.h @@ -0,0 +1,19 @@ +/* + * 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 +#import + +@interface RCTConvert (UIScrollView) + ++ (UIScrollViewKeyboardDismissMode)UIScrollViewKeyboardDismissMode:(id)json; + +@end + +@interface RCTScrollViewManager : RCTViewManager + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTScrollableProtocol.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTScrollableProtocol.h new file mode 100644 index 0000000..ec6772e --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTScrollableProtocol.h @@ -0,0 +1,44 @@ +/* + * 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 +#import + +/** + * Contains any methods related to scrolling. Any `RCTView` that has scrolling + * features should implement these methods. + */ +@protocol RCTScrollableProtocol + +@property (nonatomic, readonly) CGSize contentSize; + +- (void)scrollToOffset:(CGPoint)offset; +- (void)scrollToOffset:(CGPoint)offset animated:(BOOL)animated; +/** + * If this is a vertical scroll view, scrolls to the bottom. + * If this is a horizontal scroll view, scrolls to the right. + */ +- (void)scrollToEnd:(BOOL)animated; +- (void)zoomToRect:(CGRect)rect animated:(BOOL)animated; + +- (void)addScrollListener:(NSObject *)scrollListener; +- (void)removeScrollListener:(NSObject *)scrollListener; + +@end + +/** + * Denotes a view which implements custom pull to refresh functionality. + */ +@protocol RCTCustomRefreshContolProtocol + +@property (nonatomic, copy) RCTDirectEventBlock onRefresh; +@property (nonatomic, readonly, getter=isRefreshing) BOOL refreshing; + +@optional +@property (nonatomic, weak) UIScrollView *scrollView; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSegmentedControl.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSegmentedControl.h new file mode 100644 index 0000000..b428f4d --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSegmentedControl.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +#import + +@interface RCTSegmentedControl : UISegmentedControl + +@property (nonatomic, copy) NSArray *values; +@property (nonatomic, assign) NSInteger selectedIndex; +@property (nonatomic, copy) RCTBubblingEventBlock onChange; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSegmentedControlManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSegmentedControlManager.h new file mode 100644 index 0000000..edc9df9 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSegmentedControlManager.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTSegmentedControlManager : RCTViewManager + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSettingsManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSettingsManager.h new file mode 100644 index 0000000..4e76780 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSettingsManager.h @@ -0,0 +1,16 @@ +/* + * 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 + +#import + +@interface RCTSettingsManager : NSObject + +- (instancetype)initWithUserDefaults:(NSUserDefaults *)defaults NS_DESIGNATED_INITIALIZER; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSettingsPlugins.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSettingsPlugins.h new file mode 100644 index 0000000..cf79705 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSettingsPlugins.h @@ -0,0 +1,40 @@ +/** + * 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 an internal plugin build system + */ + +#ifdef RN_DISABLE_OSS_PLUGIN_HEADER + +// FB Internal: FBRCTSettingsPlugins.h is autogenerated by the build system. +#import + +#else + +// OSS-compatibility layer + +#import + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wreturn-type-c-linkage" + +#ifdef __cplusplus +extern "C" { +#endif + +// RCTTurboModuleManagerDelegate should call this to resolve module classes. +Class RCTSettingsClassProvider(const char *name); + +// Lookup functions +Class RCTSettingsManagerCls(void) __attribute__((used)); + +#ifdef __cplusplus +} +#endif + +#pragma GCC diagnostic pop + +#endif // RN_DISABLE_OSS_PLUGIN_HEADER diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTShadowView+Internal.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTShadowView+Internal.h new file mode 100644 index 0000000..b871ce6 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTShadowView+Internal.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +#import + +@class RCTRootShadowView; + +@interface RCTShadowView (Internal) + +@property (nonatomic, weak, readwrite) RCTRootShadowView *rootView; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTShadowView+Layout.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTShadowView+Layout.h new file mode 100644 index 0000000..7e09674 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTShadowView+Layout.h @@ -0,0 +1,39 @@ +/* + * 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 + +#import + +@interface RCTShadowView (Layout) + +#pragma mark - Computed Layout-Inferred Metrics + +@property (nonatomic, readonly) UIEdgeInsets paddingAsInsets; +@property (nonatomic, readonly) UIEdgeInsets borderAsInsets; +@property (nonatomic, readonly) UIEdgeInsets compoundInsets; +@property (nonatomic, readonly) CGSize availableSize; +@property (nonatomic, readonly) CGRect contentFrame; + +#pragma mark - Dirty Propagation Control + +/** + * Designated method to control dirty propagation mechanism. + * Dirties the shadow view (and all affected shadow views, usually a superview) + * in terms of layout. + * The default implementation does nothing. + */ +- (void)dirtyLayout; + +/** + * Designated method to control dirty propagation mechanism. + * Clears (makes not dirty) the shadow view. + * The default implementation does nothing. + */ +- (void)clearLayout; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTShadowView.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTShadowView.h new file mode 100644 index 0000000..4696b14 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTShadowView.h @@ -0,0 +1,241 @@ +/* + * 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 + +#import +#import +#import +#import + +@class RCTRootShadowView; +@class RCTSparseArray; + +typedef void (^RCTApplierBlock)(NSDictionary *viewRegistry); + +/** + * ShadowView tree mirrors RCT view tree. Every node is highly stateful. + * 1. A node is in one of three lifecycles: uninitialized, computed, dirtied. + * 1. RCTBridge may call any of the padding/margin/width/height/top/left setters. A setter would dirty + * the node and all of its ancestors. + * 2. At the end of each Bridge transaction, we call layoutWithMinimumSize:maximumSize:layoutDirection:layoutContext + * at the root node to recursively lay out the entire hierarchy. + * 3. If a node is "computed" and the constraint passed from above is identical to the constraint used to + * perform the last computation, we skip laying out the subtree entirely. + */ +@interface RCTShadowView : NSObject + +/** + * Yoga Config which will be used to create `yogaNode` property. + * Override in subclass to enable special Yoga features. + * Defaults to suitable to current device configuration. + */ ++ (YGConfigRef)yogaConfig; + +/** + * RCTComponent interface. + */ +- (NSArray *)reactSubviews NS_REQUIRES_SUPER; +- (RCTShadowView *)reactSuperview NS_REQUIRES_SUPER; +- (void)insertReactSubview:(RCTShadowView *)subview atIndex:(NSInteger)atIndex NS_REQUIRES_SUPER; +- (void)removeReactSubview:(RCTShadowView *)subview NS_REQUIRES_SUPER; + +@property (nonatomic, weak, readonly) RCTRootShadowView *rootView; +@property (nonatomic, weak, readonly) RCTShadowView *superview; +@property (nonatomic, assign, readonly) YGNodeRef yogaNode; +@property (nonatomic, copy) NSString *viewName; +@property (nonatomic, copy) RCTDirectEventBlock onLayout; + +/** + * Computed layout of the view. + */ +@property (nonatomic, assign) RCTLayoutMetrics layoutMetrics; + +/** + * In some cases we need a way to specify some environmental data to shadow view + * to improve layout (or do something similar), so `localData` serves these needs. + * For example, any stateful embedded native views may benefit from this. + * Have in mind that this data is not supposed to interfere with the state of + * the shadow view. + * Please respect one-directional data flow of React. + * Use `-[RCTUIManager setLocalData:forView:]` to set this property + * (to provide local/environmental data for a shadow view) from the main thread. + */ +- (void)setLocalData:(NSObject *)localData; + +/** + * isNewView - Used to track the first time the view is introduced into the hierarchy. It is initialized YES, then is + * set to NO in RCTUIManager after the layout pass is done and all frames have been extracted to be applied to the + * corresponding UIViews. + */ +@property (nonatomic, assign, getter=isNewView) BOOL newView; + +/** + * Position and dimensions. + * Defaults to { 0, 0, NAN, NAN }. + */ +@property (nonatomic, assign) YGValue top; +@property (nonatomic, assign) YGValue left; +@property (nonatomic, assign) YGValue bottom; +@property (nonatomic, assign) YGValue right; +@property (nonatomic, assign) YGValue start; +@property (nonatomic, assign) YGValue end; + +@property (nonatomic, assign) YGValue width; +@property (nonatomic, assign) YGValue height; + +@property (nonatomic, assign) YGValue minWidth; +@property (nonatomic, assign) YGValue maxWidth; +@property (nonatomic, assign) YGValue minHeight; +@property (nonatomic, assign) YGValue maxHeight; + +/** + * Convenient alias to `width` and `height` in pixels. + * Defaults to NAN in case of non-pixel dimension. + */ +@property (nonatomic, assign) CGSize size; + +/** + * Border. Defaults to { 0, 0, 0, 0 }. + */ +@property (nonatomic, assign) float borderWidth; +@property (nonatomic, assign) float borderTopWidth; +@property (nonatomic, assign) float borderLeftWidth; +@property (nonatomic, assign) float borderBottomWidth; +@property (nonatomic, assign) float borderRightWidth; +@property (nonatomic, assign) float borderStartWidth; +@property (nonatomic, assign) float borderEndWidth; + +/** + * Margin. Defaults to { 0, 0, 0, 0 }. + */ +@property (nonatomic, assign) YGValue margin; +@property (nonatomic, assign) YGValue marginVertical; +@property (nonatomic, assign) YGValue marginHorizontal; +@property (nonatomic, assign) YGValue marginTop; +@property (nonatomic, assign) YGValue marginLeft; +@property (nonatomic, assign) YGValue marginBottom; +@property (nonatomic, assign) YGValue marginRight; +@property (nonatomic, assign) YGValue marginStart; +@property (nonatomic, assign) YGValue marginEnd; + +/** + * Padding. Defaults to { 0, 0, 0, 0 }. + */ +@property (nonatomic, assign) YGValue padding; +@property (nonatomic, assign) YGValue paddingVertical; +@property (nonatomic, assign) YGValue paddingHorizontal; +@property (nonatomic, assign) YGValue paddingTop; +@property (nonatomic, assign) YGValue paddingLeft; +@property (nonatomic, assign) YGValue paddingBottom; +@property (nonatomic, assign) YGValue paddingRight; +@property (nonatomic, assign) YGValue paddingStart; +@property (nonatomic, assign) YGValue paddingEnd; + +/** + * Flexbox properties. All zero/disabled by default + */ +@property (nonatomic, assign) YGFlexDirection flexDirection; +@property (nonatomic, assign) YGJustify justifyContent; +@property (nonatomic, assign) YGAlign alignSelf; +@property (nonatomic, assign) YGAlign alignItems; +@property (nonatomic, assign) YGAlign alignContent; +@property (nonatomic, assign) YGPositionType position; +@property (nonatomic, assign) YGWrap flexWrap; +@property (nonatomic, assign) YGDisplay display; + +@property (nonatomic, assign) float flex; +@property (nonatomic, assign) float flexGrow; +@property (nonatomic, assign) float flexShrink; +@property (nonatomic, assign) YGValue flexBasis; + +@property (nonatomic, assign) float aspectRatio; + +/** + * Interface direction (LTR or RTL) + */ +@property (nonatomic, assign) YGDirection direction; + +/** + * Clipping properties + */ +@property (nonatomic, assign) YGOverflow overflow; + +/** + * Represents the natural size of the view, which is used when explicit size is not set or is ambiguous. + * Defaults to `{UIViewNoIntrinsicMetric, UIViewNoIntrinsicMetric}`. + */ +@property (nonatomic, assign) CGSize intrinsicContentSize; + +#pragma mark - Layout + +/** + * Initiates layout starts from the view. + */ +- (void)layoutWithMinimumSize:(CGSize)minimumSize + maximumSize:(CGSize)maximumSize + layoutDirection:(UIUserInterfaceLayoutDirection)layoutDirection + layoutContext:(RCTLayoutContext)layoutContext; + +/** + * Applies computed layout metrics to the view. + */ +- (void)layoutWithMetrics:(RCTLayoutMetrics)layoutMetrics layoutContext:(RCTLayoutContext)layoutContext; + +/** + * Calculates (if needed) and applies layout to subviews. + */ +- (void)layoutSubviewsWithContext:(RCTLayoutContext)layoutContext; + +/** + * Measures shadow view without side-effects. + * Default implementation uses Yoga for measuring. + */ +- (CGSize)sizeThatFitsMinimumSize:(CGSize)minimumSize maximumSize:(CGSize)maximumSize; + +/** + * Returns whether or not this view can have any subviews. + * Adding/inserting a child view to leaf view (`canHaveSubviews` equals `NO`) + * will throw an error. + * Return `NO` for components which must not have any descendants + * (like , for example.) + * Defaults to `YES`. Can be overridden in subclasses. + * Don't confuse this with `isYogaLeafNode`. + */ +- (BOOL)canHaveSubviews; + +/** + * Returns whether or not this node acts as a leaf node in the eyes of Yoga. + * For example `RCTTextShadowView` has children which it does not want Yoga + * to lay out so in the eyes of Yoga it is a leaf node. + * Defaults to `NO`. Can be overridden in subclasses. + * Don't confuse this with `canHaveSubviews`. + */ +- (BOOL)isYogaLeafNode; + +/** + * As described in RCTComponent protocol. + */ +- (void)didUpdateReactSubviews NS_REQUIRES_SUPER; +- (void)didSetProps:(NSArray *)changedProps NS_REQUIRES_SUPER; + +/** + * Computes the recursive offset, meaning the sum of all descendant offsets - + * this is the sum of all positions inset from parents. This is not merely the + * sum of `top`/`left`s, as this function uses the *actual* positions of + * children, not the style specified positions - it computes this based on the + * resulting layout. It does not yet compensate for native scroll view insets or + * transforms or anchor points. + */ +- (CGRect)measureLayoutRelativeToAncestor:(RCTShadowView *)ancestor; + +/** + * Checks if the current shadow view is a descendant of the provided `ancestor` + */ +- (BOOL)viewIsDescendantOf:(RCTShadowView *)ancestor; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSinglelineTextInputView.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSinglelineTextInputView.h new file mode 100644 index 0000000..d9450db --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSinglelineTextInputView.h @@ -0,0 +1,16 @@ +/* + * 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 "RCTBaseTextInputView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTSinglelineTextInputView : RCTBaseTextInputView + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSinglelineTextInputViewManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSinglelineTextInputViewManager.h new file mode 100644 index 0000000..314993a --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSinglelineTextInputViewManager.h @@ -0,0 +1,16 @@ +/* + * 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 "RCTBaseTextInputViewManager.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTSinglelineTextInputViewManager : RCTBaseTextInputViewManager + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSlider.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSlider.h new file mode 100644 index 0000000..355cc36 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSlider.h @@ -0,0 +1,26 @@ +/* + * 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 + +#import + +@interface RCTSlider : UISlider + +@property (nonatomic, copy) RCTBubblingEventBlock onValueChange; +@property (nonatomic, copy) RCTDirectEventBlock onSlidingComplete; + +@property (nonatomic, assign) float step; +@property (nonatomic, assign) float lastValue; + +@property (nonatomic, strong) UIImage *trackImage; +@property (nonatomic, strong) UIImage *minimumTrackImage; +@property (nonatomic, strong) UIImage *maximumTrackImage; + +@property (nonatomic, strong) UIImage *thumbImage; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSliderManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSliderManager.h new file mode 100644 index 0000000..49de42c --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSliderManager.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTSliderManager : RCTViewManager + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSourceCode.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSourceCode.h new file mode 100644 index 0000000..fd0e387 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSourceCode.h @@ -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 + +#import + +@interface RCTSourceCode : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSpringAnimation.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSpringAnimation.h new file mode 100644 index 0000000..0c031ec --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSpringAnimation.h @@ -0,0 +1,12 @@ +/* + * 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 "RCTAnimationDriver.h" + +@interface RCTSpringAnimation : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTStatusBarManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTStatusBarManager.h new file mode 100644 index 0000000..db02b91 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTStatusBarManager.h @@ -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 + +#import +#import + +@interface RCTConvert (UIStatusBar) + ++ (UIStatusBarStyle)UIStatusBarStyle:(id)json; ++ (UIStatusBarAnimation)UIStatusBarAnimation:(id)json; + +@end + +@interface RCTStatusBarManager : RCTEventEmitter + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTStyleAnimatedNode.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTStyleAnimatedNode.h new file mode 100644 index 0000000..cdcaca4 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTStyleAnimatedNode.h @@ -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 "RCTAnimatedNode.h" + +@interface RCTStyleAnimatedNode : RCTAnimatedNode + +- (NSDictionary *)propsDictionary; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSubtractionAnimatedNode.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSubtractionAnimatedNode.h new file mode 100644 index 0000000..e8ec799 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSubtractionAnimatedNode.h @@ -0,0 +1,13 @@ +/* + * 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 "RCTValueAnimatedNode.h" + +@interface RCTSubtractionAnimatedNode : RCTValueAnimatedNode + +@end + diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurface.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurface.h new file mode 100644 index 0000000..b776443 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurface.h @@ -0,0 +1,90 @@ +/* + * 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 + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@class RCTBridge; +@class RCTSurfaceView; +@protocol RCTSurfaceDelegate; + +/** + * RCTSurface instance represents React Native-powered piece of a user interface + * which can be a full-screen app, separate modal view controller, + * or even small widget. + * It is called "Surface". + * + * The RCTSurface instance is completely thread-safe by design; + * it can be created on any thread, and any its method can be called from + * any thread (if the opposite is not mentioned explicitly). + * + * The primary goals of the RCTSurface are: + * * ability to measure and layout the surface in a thread-safe + * and synchronous manner; + * * ability to create a UIView instance on demand (later); + * * ability to communicate the current stage of the surface granularly. + */ +@interface RCTSurface : NSObject + +- (instancetype)initWithBridge:(RCTBridge *)bridge + moduleName:(NSString *)moduleName + initialProperties:(NSDictionary *)initialProperties; + +#pragma mark - Layout: Setting the size constrains + +/** + * Previously set `minimumSize` layout constraint. + * Defaults to `{0, 0}`. + */ +@property (atomic, assign, readonly) CGSize minimumSize; + +/** + * Previously set `maximumSize` layout constraint. + * Defaults to `{CGFLOAT_MAX, CGFLOAT_MAX}`. + */ +@property (atomic, assign, readonly) CGSize maximumSize; + +/** + * Simple shortcut to `-[RCTSurface setMinimumSize:size maximumSize:size]`. + */ +- (void)setSize:(CGSize)size; + +#pragma mark - Synchronous waiting + +/** + * Synchronously blocks the current thread up to given `timeout` until + * the Surface reaches `stage`. + * Limitations: + * - Do nothing, if called on `UIManager` queue. + * - Calling on the main queue with `RCTSurfaceStageSurfaceDidInitialMounting` + * stage temporary is not supported; in this case the stage will be + * downgraded to `RCTSurfaceStageSurfaceDidInitialLayout`. + */ +- (BOOL)synchronouslyWaitForStage:(RCTSurfaceStage)stage timeout:(NSTimeInterval)timeout; + +#pragma mark - Mounting/Unmounting of React components + +/** + * Mount the React component specified by the given moduleName. This is typically + * calling runApplication.js from the native side. + */ +- (void)mountReactComponentWithBridge:(RCTBridge *)bridge + moduleName:(NSString *)moduleName + params:(NSDictionary *)params; + +/** + * Unmount the React component specified by the given rootViewTag, called from native. + */ +- (void)unmountReactComponentWithBridge:(RCTBridge *)bridge rootViewTag:(NSNumber *)rootViewTag; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfaceDelegate.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfaceDelegate.h new file mode 100644 index 0000000..895c2eb --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfaceDelegate.h @@ -0,0 +1,34 @@ +/* + * 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 + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class RCTSurface; + +@protocol RCTSurfaceDelegate + +@optional + +/** + * Notifies a receiver that a surface transitioned to a new stage. + * See `RCTSurfaceStage` for more details. + */ +- (void)surface:(RCTSurface *)surface didChangeStage:(RCTSurfaceStage)stage; + +/** + * Notifies a receiver that root view got a new (intrinsic) size during the last + * layout pass. + */ +- (void)surface:(RCTSurface *)surface didChangeIntrinsicSize:(CGSize)intrinsicSize; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfaceHostingProxyRootView.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfaceHostingProxyRootView.h new file mode 100644 index 0000000..a7077a5 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfaceHostingProxyRootView.h @@ -0,0 +1,64 @@ +/* + * 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 + +#import +#import + +#import "RCTSurfaceHostingView.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * This is a RCTRootView-compatible implementation of RCTSurfaceHostingView. + * Use this class to replace all usages of RCTRootView in the app for easier migration + * to RCTSurfaceHostingView. + * + * WARNING: In the future, RCTRootView will be deprecated in favor of RCTSurfaceHostingView. + */ +@interface RCTSurfaceHostingProxyRootView : RCTSurfaceHostingView + +#pragma mark RCTRootView compatibility - keep these sync'ed with RCTRootView.h + +@property (nonatomic, copy, readonly) NSString *moduleName; +@property (nonatomic, strong, readonly) RCTBridge *bridge; +@property (nonatomic, readonly) BOOL hasBridge; +@property (nonatomic, strong, readonly) RCTModuleRegistry *moduleRegistry; +@property (nonatomic, strong, readonly) id eventDispatcher; +@property (nonatomic, copy, readwrite) NSDictionary *appProperties; +@property (nonatomic, assign) RCTRootViewSizeFlexibility sizeFlexibility; +@property (nonatomic, weak) id delegate; +@property (nonatomic, weak) UIViewController *reactViewController; +@property (nonatomic, strong, readonly) UIView *contentView; +@property (nonatomic, strong) UIView *loadingView; +@property (nonatomic, assign) BOOL passThroughTouches; +@property (nonatomic, assign) NSTimeInterval loadingViewFadeDelay; +@property (nonatomic, assign) NSTimeInterval loadingViewFadeDuration; +@property (nonatomic, assign) CGSize minimumSize; + +- (instancetype)initWithBridge:(RCTBridge *)bridge + moduleName:(NSString *)moduleName + initialProperties:(NSDictionary *)initialProperties NS_DESIGNATED_INITIALIZER; + +- (instancetype)initWithBundleURL:(NSURL *)bundleURL + moduleName:(NSString *)moduleName + initialProperties:(NSDictionary *)initialProperties + launchOptions:(NSDictionary *)launchOptions; + +/** + * Bridgeless mode initializer + */ +- (instancetype)initWithSurface:(id)surface + sizeMeasureMode:(RCTSurfaceSizeMeasureMode)sizeMeasureMode + moduleRegistry:(RCTModuleRegistry *)moduleRegistry; + +- (void)cancelTouches; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfaceHostingView.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfaceHostingView.h new file mode 100644 index 0000000..0fbbdab --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfaceHostingView.h @@ -0,0 +1,78 @@ +/* + * 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 + +#import +#import +#import +#import + +@class RCTBridge; +@class RCTSurface; + +typedef UIView *_Nullable (^RCTSurfaceHostingViewActivityIndicatorViewFactory)(void); + +NS_ASSUME_NONNULL_BEGIN + +/** + * UIView subclass which providers interoperability between UIKit and + * Surface regarding layout and life-cycle. + * This class can be used as easy-to-use general purpose integration point + * of ReactNative-powered experiences in UIKit based apps. + */ +@interface RCTSurfaceHostingView : UIView + +/** + * Create an instance of RCTSurface to be hosted. + */ ++ (RCTSurface *)createSurfaceWithBridge:(RCTBridge *)bridge + moduleName:(NSString *)moduleName + initialProperties:(NSDictionary *)initialProperties; + +/** + * Designated initializer. + * Instanciates a view with given Surface object. + * Note: The view retains the surface object. + */ +- (instancetype)initWithSurface:(id)surface + sizeMeasureMode:(RCTSurfaceSizeMeasureMode)sizeMeasureMode NS_DESIGNATED_INITIALIZER; + +/** + * Convenience initializer. + * Instanciates a Surface object with given `bridge`, `moduleName`, and + * `initialProperties`, and then use it to instanciate a view. + */ +- (instancetype)initWithBridge:(RCTBridge *)bridge + moduleName:(NSString *)moduleName + initialProperties:(NSDictionary *)initialProperties + sizeMeasureMode:(RCTSurfaceSizeMeasureMode)sizeMeasureMode; + +/** + * Surface object which is currently using to power the view. + * Read-only. + */ +@property (nonatomic, strong, readonly) id surface; + +/** + * Size measure mode which are defining relationship between UIKit and ReactNative + * layout approaches. + * Defaults to `RCTSurfaceSizeMeasureModeWidthAtMost | RCTSurfaceSizeMeasureModeHeightAtMost`. + */ +@property (nonatomic, assign) RCTSurfaceSizeMeasureMode sizeMeasureMode; + +/** + * Activity indicator factory. + * A hosting view may use this block to instantiate and display custom activity + * (loading) indicator (aka "spinner") when it needed. + * Defaults to `nil` (no activity indicator). + */ +@property (nonatomic, copy, nullable) RCTSurfaceHostingViewActivityIndicatorViewFactory activityIndicatorViewFactory; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfacePresenterStub.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfacePresenterStub.h new file mode 100644 index 0000000..32a2b80 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfacePresenterStub.h @@ -0,0 +1,43 @@ +/* + * 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 + +#import + +NS_ASSUME_NONNULL_BEGIN + +// TODO: Eventually this should go away and files should just include RCTSurfacePresenter.h, but +// that pulls in all of fabric which doesn't compile in open source yet, so we mirror the protocol +// and duplicate the category here for now. + +@protocol RCTSurfacePresenterObserver + +@optional + +- (void)willMountComponentsWithRootTag:(NSInteger)rootTag; +- (void)didMountComponentsWithRootTag:(NSInteger)rootTag; + +@end + +@protocol RCTSurfacePresenterStub + +- (nullable UIView *)findComponentViewWithTag_DO_NOT_USE_DEPRECATED:(NSInteger)tag; +- (BOOL)synchronouslyUpdateViewOnUIThread:(NSNumber *)reactTag props:(NSDictionary *)props; +- (void)addObserver:(id)observer; +- (void)removeObserver:(id)observer; + +@end + +@interface RCTBridge (RCTSurfacePresenterStub) + +- (id)surfacePresenter; +- (void)setSurfacePresenter:(id)presenter; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfaceProtocol.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfaceProtocol.h new file mode 100644 index 0000000..c274df7 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfaceProtocol.h @@ -0,0 +1,81 @@ +/* + * 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 +#import + +NS_ASSUME_NONNULL_BEGIN + +@class RCTSurfaceView; +@protocol RCTSurfaceDelegate; + +@protocol RCTSurfaceProtocol + +@property (atomic, readonly) RCTSurfaceStage stage; +@property (atomic, readonly) NSString *moduleName; +@property (atomic, readwrite, weak, nullable) id delegate; + +/** + * Deprecated. Use `rootTag` instead. + */ +@property (atomic, readonly) NSNumber *rootViewTag; +@property (atomic, copy, readwrite) NSDictionary *properties; +@property (atomic, readonly) NSInteger rootTag; + +/** + * Sets `minimumSize` and `maximumSize` layout constraints for the Surface. + */ +- (void)setMinimumSize:(CGSize)minimumSize maximumSize:(CGSize)maximumSize; + +/** + * Sets `minimumSize`, `maximumSize`, and `viewportOffset` layout constraints for the Surface. + * `viewportOffset` is ignored in `RCTSurface` but used in `RCTFabricSurface`. + */ +- (void)setMinimumSize:(CGSize)minimumSize maximumSize:(CGSize)maximumSize viewportOffset:(CGPoint)viewportOffset; + +#pragma mark - Dealing with UIView representation, the Main thread only access + +/** + * Creates (if needed) and returns `UIView` instance which represents the Surface. + * The Surface will cache and *retain* this object. + * Returning the UIView instance does not mean that the Surface is ready + * to execute and layout. It can be just a handler which Surface will use later + * to mount the actual views. + * RCTSurface does not control (or influence in any way) the size or origin + * of this view. Some superview (or another owner) must use other methods + * of this class to setup proper layout and interop interactions with UIKit + * or another UI framework. + * This method must be called only from the main queue. + */ +- (RCTSurfaceView *)view; + +#pragma mark - Layout: Measuring + +/** + * Measures the Surface with given constraints. + * This method does not cause any side effects on the surface object. + */ +- (CGSize)sizeThatFitsMinimumSize:(CGSize)minimumSize maximumSize:(CGSize)maximumSize; + +/** + * Return the current size of the root view based on (but not clamp by) current + * size constraints. + */ +@property (atomic, assign, readonly) CGSize intrinsicSize; + +#pragma mark - Start & Stop + +/** + * Starts or stops the Surface. + * Those methods are a no-op for regular RCTSurface (for now), but all call sites must call them appropriately. + */ +- (BOOL)start; +- (BOOL)stop; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfaceRootShadowView.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfaceRootShadowView.h new file mode 100644 index 0000000..cab8b4a --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfaceRootShadowView.h @@ -0,0 +1,32 @@ +/* + * 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 +#import +#import + +@interface RCTSurfaceRootShadowView : RCTShadowView + +@property (nonatomic, assign, readonly) CGSize minimumSize; +@property (nonatomic, assign, readonly) CGSize maximumSize; + +- (void)setMinimumSize:(CGSize)size maximumSize:(CGSize)maximumSize; + +@property (nonatomic, assign, readonly) CGSize intrinsicSize; + +@property (nonatomic, weak) id delegate; + +/** + * Layout direction (LTR or RTL) inherited from native environment and + * is using as a base direction value in layout engine. + * Defaults to value inferred from current locale. + */ +@property (nonatomic, assign) YGDirection baseDirection; + +- (void)layoutWithAffectedShadowViews:(NSHashTable *)affectedShadowViews; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfaceRootShadowViewDelegate.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfaceRootShadowViewDelegate.h new file mode 100644 index 0000000..6ad7337 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfaceRootShadowViewDelegate.h @@ -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 + +NS_ASSUME_NONNULL_BEGIN + +@class RCTSurfaceRootShadowView; + +@protocol RCTSurfaceRootShadowViewDelegate + +- (void)rootShadowView:(RCTSurfaceRootShadowView *)rootShadowView didChangeIntrinsicSize:(CGSize)instrinsicSize; +- (void)rootShadowViewDidStartRendering:(RCTSurfaceRootShadowView *)rootShadowView; +- (void)rootShadowViewDidStartLayingOut:(RCTSurfaceRootShadowView *)rootShadowView; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfaceRootView.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfaceRootView.h new file mode 100644 index 0000000..052476a --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfaceRootView.h @@ -0,0 +1,21 @@ +/* + * 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 + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * Internal class represents Surface's root view. + */ +@interface RCTSurfaceRootView : RCTView + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfaceSizeMeasureMode.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfaceSizeMeasureMode.h new file mode 100644 index 0000000..0ca27cd --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfaceSizeMeasureMode.h @@ -0,0 +1,32 @@ +/* + * 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 + +#import + +/** + * Bitmask defines how size constrains from `-[UIView sizeThatFits:]` + * are translated to `-[RCTSurface sizeThatFitsMinimumSize:maximumSize:]`. + */ +typedef NS_OPTIONS(NSInteger, RCTSurfaceSizeMeasureMode) { + RCTSurfaceSizeMeasureModeWidthUndefined = 0 << 0, + RCTSurfaceSizeMeasureModeWidthExact = 1 << 0, + RCTSurfaceSizeMeasureModeWidthAtMost = 2 << 0, + RCTSurfaceSizeMeasureModeHeightUndefined = 0 << 2, + RCTSurfaceSizeMeasureModeHeightExact = 1 << 2, + RCTSurfaceSizeMeasureModeHeightAtMost = 2 << 2, +}; + +/** + * Returns size constraints based on `size` and `sizeMeasureMode`. + */ +RCT_EXTERN void RCTSurfaceMinimumSizeAndMaximumSizeFromSizeAndSizeMeasureMode( + CGSize size, + RCTSurfaceSizeMeasureMode sizeMeasureMode, + CGSize *minimumSize, + CGSize *maximumSize); diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfaceStage.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfaceStage.h new file mode 100644 index 0000000..87bf915 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfaceStage.h @@ -0,0 +1,42 @@ +/* + * 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 + +#import + +/** + * The stage of the Surface + */ +typedef NS_OPTIONS(NSInteger, RCTSurfaceStage) { + RCTSurfaceStageSurfaceDidInitialize = 1 << 0, // Surface object was created + RCTSurfaceStageBridgeDidLoad = 1 << 1, // Bridge was loaded + RCTSurfaceStageModuleDidLoad = 1 << 2, // Module (JavaScript code) was loaded + RCTSurfaceStageSurfaceDidRun = 1 << 3, // Module (JavaScript code) was run + RCTSurfaceStageSurfaceDidInitialRendering = 1 << 4, // UIManager created the first shadow views + RCTSurfaceStageSurfaceDidInitialLayout = 1 << 5, // UIManager completed the first layout pass + RCTSurfaceStageSurfaceDidInitialMounting = 1 << 6, // UIManager completed the first mounting pass + RCTSurfaceStageSurfaceDidStop = 1 << 7, // Surface stopped + + // Most of the previously existed stages make no sense in the new architecture; + // now Surface exposes only two simple stages: + RCTSurfaceStagePreparing = RCTSurfaceStageSurfaceDidInitialize | RCTSurfaceStageBridgeDidLoad | + RCTSurfaceStageModuleDidLoad, + RCTSurfaceStageRunning = RCTSurfaceStagePreparing | RCTSurfaceStageSurfaceDidRun | + RCTSurfaceStageSurfaceDidInitialRendering | RCTSurfaceStageSurfaceDidInitialLayout | + RCTSurfaceStageSurfaceDidInitialMounting, +}; + +/** + * Returns `YES` if the stage is suitable for displaying normal React Native app. + */ +RCT_EXTERN BOOL RCTSurfaceStageIsRunning(RCTSurfaceStage stage); + +/** + * Returns `YES` if the stage is suitable for displaying activity indicator. + */ +RCT_EXTERN BOOL RCTSurfaceStageIsPreparing(RCTSurfaceStage stage); diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfaceView+Internal.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfaceView+Internal.h new file mode 100644 index 0000000..ac4f59f --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfaceView+Internal.h @@ -0,0 +1,24 @@ +/* + * 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 + +#import +#import + +@class RCTSurfaceRootView; + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTSurfaceView (Internal) + +@property (nonatomic, nullable, strong) RCTSurfaceRootView *rootView; +@property (nonatomic, assign) RCTSurfaceStage stage; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfaceView.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfaceView.h new file mode 100644 index 0000000..a61e28c --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSurfaceView.h @@ -0,0 +1,25 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +@class RCTSurface; + +/** + * UIView instance which represents the Surface + */ +@interface RCTSurfaceView : UIView + +- (instancetype)initWithSurface:(RCTSurface *)surface NS_DESIGNATED_INITIALIZER; + +@property (nonatomic, weak, readonly, nullable) RCTSurface *surface; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSwitch.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSwitch.h new file mode 100644 index 0000000..3b42a50 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSwitch.h @@ -0,0 +1,17 @@ +/* + * 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 + +#import + +@interface RCTSwitch : UISwitch + +@property (nonatomic, assign) BOOL wasOn; +@property (nonatomic, copy) RCTBubblingEventBlock onChange; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSwitchManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSwitchManager.h new file mode 100644 index 0000000..06015b1 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTSwitchManager.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTSwitchManager : RCTViewManager + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTextAttributes.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTextAttributes.h new file mode 100644 index 0000000..ce04362 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTextAttributes.h @@ -0,0 +1,97 @@ +/* + * 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 + +#import + +#import "RCTTextTransform.h" + +NS_ASSUME_NONNULL_BEGIN + +extern NSString *const RCTTextAttributesIsHighlightedAttributeName; +extern NSString *const RCTTextAttributesTagAttributeName; + +/** + * Represents knowledge about all supported *text* attributes + * assigned to some text component such as , , + * and . + */ +@interface RCTTextAttributes : NSObject + +// Color +@property (nonatomic, strong, nullable) UIColor *foregroundColor; +@property (nonatomic, strong, nullable) UIColor *backgroundColor; +@property (nonatomic, assign) CGFloat opacity; +// Font +@property (nonatomic, copy, nullable) NSString *fontFamily; +@property (nonatomic, assign) CGFloat fontSize; +@property (nonatomic, assign) CGFloat fontSizeMultiplier; +@property (nonatomic, assign) CGFloat maxFontSizeMultiplier; +@property (nonatomic, copy, nullable) NSString *fontWeight; +@property (nonatomic, copy, nullable) NSString *fontStyle; +@property (nonatomic, copy, nullable) NSArray *fontVariant; +@property (nonatomic, assign) BOOL allowFontScaling; +@property (nonatomic, assign) CGFloat letterSpacing; +// Paragraph Styles +@property (nonatomic, assign) CGFloat lineHeight; +@property (nonatomic, assign) NSTextAlignment alignment; +@property (nonatomic, assign) NSWritingDirection baseWritingDirection; +// Decoration +@property (nonatomic, strong, nullable) UIColor *textDecorationColor; +@property (nonatomic, assign) NSUnderlineStyle textDecorationStyle; +@property (nonatomic, assign) RCTTextDecorationLineType textDecorationLine; +// Shadow +@property (nonatomic, assign) CGSize textShadowOffset; +@property (nonatomic, assign) CGFloat textShadowRadius; +@property (nonatomic, strong, nullable) UIColor *textShadowColor; +// Special +@property (nonatomic, assign) BOOL isHighlighted; +@property (nonatomic, strong, nullable) NSNumber *tag; +@property (nonatomic, assign) UIUserInterfaceLayoutDirection layoutDirection; +@property (nonatomic, assign) RCTTextTransform textTransform; + +#pragma mark - Inheritance + +- (void)applyTextAttributes:(RCTTextAttributes *)textAttributes; + +#pragma mark - Adapters + +/** + * Text attributes in NSAttributedString terms. + */ +- (NSDictionary *)effectiveTextAttributes; + +/** + * Constructed paragraph style. + */ +- (NSParagraphStyle *_Nullable)effectiveParagraphStyle; + +/** + * Constructed font. + */ +- (UIFont *)effectiveFont; + +/** + * Font size multiplier reflects `allowFontScaling`, `fontSizeMultiplier`, and `maxFontSizeMultiplier`. + */ +- (CGFloat)effectiveFontSizeMultiplier; + +/** + * Foreground and background colors with opacity and right defaults. + */ +- (UIColor *)effectiveForegroundColor; +- (UIColor *)effectiveBackgroundColor; + +/** + * Text transformed per 'none', 'uppercase', 'lowercase', 'capitalize' + */ +- (NSString *)applyTextAttributesToText:(NSString *)text; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTextDecorationLineType.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTextDecorationLineType.h new file mode 100644 index 0000000..ddf9195 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTextDecorationLineType.h @@ -0,0 +1,15 @@ +/* + * 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 + +typedef NS_ENUM(NSInteger, RCTTextDecorationLineType) { + RCTTextDecorationLineTypeNone = 0, + RCTTextDecorationLineTypeUnderline, + RCTTextDecorationLineTypeStrikethrough, + RCTTextDecorationLineTypeUnderlineStrikethrough, +}; diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTextSelection.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTextSelection.h new file mode 100644 index 0000000..0bb7583 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTextSelection.h @@ -0,0 +1,26 @@ +/* + * 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 + +/** + * Object containing information about a TextInput's selection. + */ +@interface RCTTextSelection : NSObject + +@property (nonatomic, assign, readonly) NSInteger start; +@property (nonatomic, assign, readonly) NSInteger end; + +- (instancetype)initWithStart:(NSInteger)start end:(NSInteger)end; + +@end + +@interface RCTConvert (RCTTextSelection) + ++ (RCTTextSelection *)RCTTextSelection:(id)json; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTextShadowView.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTextShadowView.h new file mode 100644 index 0000000..d364db5 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTextShadowView.h @@ -0,0 +1,28 @@ +/* + * 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 + +#import "RCTBaseTextShadowView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTTextShadowView : RCTBaseTextShadowView + +- (instancetype)initWithBridge:(RCTBridge *)bridge; + +@property (nonatomic, assign) NSInteger maximumNumberOfLines; +@property (nonatomic, assign) NSLineBreakMode lineBreakMode; +@property (nonatomic, assign) BOOL adjustsFontSizeToFit; +@property (nonatomic, assign) CGFloat minimumFontScale; +@property (nonatomic, copy) RCTDirectEventBlock onTextLayout; + +- (void)uiManagerWillPerformMounting; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTextTransform.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTextTransform.h new file mode 100644 index 0000000..15d328c --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTextTransform.h @@ -0,0 +1,16 @@ +/* + * 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 + +typedef NS_ENUM(NSInteger, RCTTextTransform) { + RCTTextTransformUndefined = 0, + RCTTextTransformNone, + RCTTextTransformCapitalize, + RCTTextTransformUppercase, + RCTTextTransformLowercase, +}; diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTextView.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTextView.h new file mode 100644 index 0000000..5928b70 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTextView.h @@ -0,0 +1,24 @@ +/* + * 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 + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTTextView : UIView + +@property (nonatomic, assign) BOOL selectable; + +- (void)setTextStorage:(NSTextStorage *)textStorage + contentFrame:(CGRect)contentFrame + descendantViews:(NSArray *)descendantViews; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTextViewManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTextViewManager.h new file mode 100644 index 0000000..446a5db --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTextViewManager.h @@ -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 + +#import "RCTBaseTextViewManager.h" + +@interface RCTTextViewManager : RCTBaseTextViewManager + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTiming.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTiming.h new file mode 100644 index 0000000..7c197aa --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTiming.h @@ -0,0 +1,32 @@ +/* + * 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 + +#import +#import +#import +#import + +@protocol RCTTimingDelegate + +- (void)callTimers:(NSArray *)timers; +- (void)immediatelyCallTimer:(nonnull NSNumber *)callbackID; +- (void)callIdleCallbacks:(nonnull NSNumber *)absoluteFrameStartMS; + +@end + +@interface RCTTiming : NSObject + +- (instancetype)initWithDelegate:(id)delegate; +- (void)createTimerForNextFrame:(nonnull NSNumber *)callbackID + duration:(NSTimeInterval)jsDuration + jsSchedulingTime:(NSDate *)jsSchedulingTime + repeats:(BOOL)repeats; +- (void)deleteTimer:(double)timerID; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTouchEvent.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTouchEvent.h new file mode 100644 index 0000000..9f3cc4f --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTouchEvent.h @@ -0,0 +1,23 @@ +/* + * 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 + +#import + +/** + * Represents a touch event, which may be composed of several touches (one for every finger). + * For more information on contents of passed data structures see RCTTouchHandler. + */ +@interface RCTTouchEvent : NSObject + +- (instancetype)initWithEventName:(NSString *)eventName + reactTag:(NSNumber *)reactTag + reactTouches:(NSArray *)reactTouches + changedIndexes:(NSArray *)changedIndexes + coalescingKey:(uint16_t)coalescingKey NS_DESIGNATED_INITIALIZER; +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTouchHandler.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTouchHandler.h new file mode 100644 index 0000000..8481a27 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTouchHandler.h @@ -0,0 +1,23 @@ +/* + * 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 + +#import + +@class RCTBridge; + +@interface RCTTouchHandler : UIGestureRecognizer + +- (instancetype)initWithBridge:(RCTBridge *)bridge NS_DESIGNATED_INITIALIZER; + +- (void)attachToView:(UIView *)view; +- (void)detachFromView:(UIView *)view; + +- (void)cancel; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTrackingAnimatedNode.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTrackingAnimatedNode.h new file mode 100644 index 0000000..27d61fa --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTrackingAnimatedNode.h @@ -0,0 +1,13 @@ +/* + * 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 "RCTAnimatedNode.h" + + +@interface RCTTrackingAnimatedNode : RCTAnimatedNode + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTransformAnimatedNode.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTransformAnimatedNode.h new file mode 100644 index 0000000..fe16bd2 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTTransformAnimatedNode.h @@ -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 "RCTAnimatedNode.h" + +@interface RCTTransformAnimatedNode : RCTAnimatedNode + +- (NSDictionary *)propsDictionary; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTUIImageViewAnimated.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTUIImageViewAnimated.h new file mode 100644 index 0000000..9af8d4e --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTUIImageViewAnimated.h @@ -0,0 +1,13 @@ +/* + * 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 +#import + +@interface RCTUIImageViewAnimated : UIImageView + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTUIManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTUIManager.h new file mode 100644 index 0000000..65309cc --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTUIManager.h @@ -0,0 +1,174 @@ +/* + * 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 + +#import +#import +#import +#import +#import + +/** + * Posted right before re-render happens. This is a chance for views to invalidate their state so + * next render cycle will pick up updated views and layout appropriately. + */ +RCT_EXTERN NSString *const RCTUIManagerWillUpdateViewsDueToContentSizeMultiplierChangeNotification; + +@class RCTLayoutAnimationGroup; +@class RCTUIManagerObserverCoordinator; + +/** + * The RCTUIManager is the module responsible for updating the view hierarchy. + */ +@interface RCTUIManager : NSObject + +/** + * Register a root view tag and creates corresponding `rootView` and + * `rootShadowView`. + */ +- (void)registerRootViewTag:(NSNumber *)rootTag; + +/** + * Register a root view with the RCTUIManager. + */ +- (void)registerRootView:(UIView *)rootView; + +/** + * Gets the view name associated with a reactTag. + */ +- (NSString *)viewNameForReactTag:(NSNumber *)reactTag; + +/** + * Gets the view associated with a reactTag. + */ +- (UIView *)viewForReactTag:(NSNumber *)reactTag; + +/** + * Gets the shadow view associated with a reactTag. + */ +- (RCTShadowView *)shadowViewForReactTag:(NSNumber *)reactTag; + +/** + * Set the available size (`availableSize` property) for a root view. + * This might be used in response to changes in external layout constraints. + * This value will be directly trasmitted to layout engine and defines how big viewport is; + * this value does not affect root node size style properties. + * Can be considered as something similar to `setSize:forView:` but applicable only for root view. + */ +- (void)setAvailableSize:(CGSize)availableSize forRootView:(UIView *)rootView; + +/** + * Sets local data for a shadow view corresponded with given view. + * In some cases we need a way to specify some environmental data to shadow view + * to improve layout (or do something similar), so `localData` serves these needs. + * For example, any stateful embedded native views may benefit from this. + * Have in mind that this data is not supposed to interfere with the state of + * the shadow view. + * Please respect one-directional data flow of React. + */ +- (void)setLocalData:(NSObject *)localData forView:(UIView *)view; + +/** + * Set the size of a view. This might be in response to a screen rotation + * or some other layout event outside of the React-managed view hierarchy. + */ +- (void)setSize:(CGSize)size forView:(UIView *)view; + +/** + * Set the natural size of a view, which is used when no explicit size is set. + * Use `UIViewNoIntrinsicMetric` to ignore a dimension. + * The `size` must NOT include padding and border. + */ +- (void)setIntrinsicContentSize:(CGSize)intrinsicContentSize forView:(UIView *)view; + +/** + * Sets up layout animation which will perform on next layout pass. + * The animation will affect only one next layout pass. + * Must be called on the main queue. + */ +- (void)setNextLayoutAnimationGroup:(RCTLayoutAnimationGroup *)layoutAnimationGroup; + +/** + * Schedule a block to be executed on the UI thread. Useful if you need to execute + * view logic after all currently queued view updates have completed. + */ +- (void)addUIBlock:(RCTViewManagerUIBlock)block; + +/** + * Schedule a block to be executed on the UI thread. Useful if you need to execute + * view logic before all currently queued view updates have completed. + */ +- (void)prependUIBlock:(RCTViewManagerUIBlock)block; + +/** + * Used by native animated module to bypass the process of updating the values through the shadow + * view hierarchy. This method will directly update native views, which means that updates for + * layout-related propertied won't be handled properly. + * Make sure you know what you're doing before calling this method :) + */ +- (void)synchronouslyUpdateViewOnUIThread:(NSNumber *)reactTag + viewName:(NSString *)viewName + props:(NSDictionary *)props; + +/** + * Given a reactTag from a component, find its root view, if possible. + * Otherwise, this will give back nil. + * + * @param reactTag the component tag + * @param completion the completion block that will hand over the rootView, if any. + * + */ +- (void)rootViewForReactTag:(NSNumber *)reactTag withCompletion:(void (^)(UIView *view))completion; + +/** + * Finds a view that is tagged with nativeID as its nativeID prop + * with the associated rootTag root tag view hierarchy. Returns the + * view if found, nil otherwise. + * + * @param nativeID the id reference to native component relative to root view. + * @param rootTag the react tag of root view hierarchy from which to find the view. + */ +- (UIView *)viewForNativeID:(NSString *)nativeID withRootTag:(NSNumber *)rootTag; + +/** + * Register a view that is tagged with nativeID as its nativeID prop + * + * @param nativeID the id reference to native component relative to root view. + * @param view the view that is tagged with nativeID as its nativeID prop. + */ +- (void)setNativeID:(NSString *)nativeID forView:(UIView *)view; + +/** + * The view that is currently first responder, according to the JS context. + */ ++ (UIView *)JSResponder; + +/** + * In some cases we might want to trigger layout from native side. + * React won't be aware of this, so we need to make sure it happens. + */ +- (void)setNeedsLayout; + +/** + * Dedicated object for subscribing for UIManager events. + * See `RCTUIManagerObserver` protocol for more details. + */ +@property (atomic, retain, readonly) RCTUIManagerObserverCoordinator *observerCoordinator; + +@end + +/** + * This category makes the current RCTUIManager instance available via the + * RCTBridge, which is useful for RCTBridgeModules or RCTViewManagers that + * need to access the RCTUIManager. + */ +@interface RCTBridge (RCTUIManager) + +@property (nonatomic, readonly) RCTUIManager *uiManager; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTUIManagerObserverCoordinator.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTUIManagerObserverCoordinator.h new file mode 100644 index 0000000..f351159 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTUIManagerObserverCoordinator.h @@ -0,0 +1,81 @@ +/* + * 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 + +#import + +typedef dispatch_block_t RCTUIManagerMountingBlock; + +/** + * Allows hooking into UIManager internals. This can be used to execute code at + * specific points during the view updating process. + * New observers must not be added inside observer handlers. + * The particular order of handler invocation is not guaranteed. + * All observer handlers are called on UIManager queue. + */ +@protocol RCTUIManagerObserver + +@optional + +/** + * Called just before the UIManager layout views. + * It allows performing some operation for components which contain custom + * layout logic right before regular Yoga based layout. So, for instance, + * some components which have own React-independent state can compute and cache + * own intrinsic content size (which will be used by Yoga) at this point. + */ +- (void)uiManagerWillPerformLayout:(RCTUIManager *)manager; + +/** + * Called just after the UIManager layout views. + * It allows performing custom layout logic right after regular Yoga based layout. + * So, for instance, this can be used for computing final layout for a component, + * since it has its final frame set by Yoga at this point. + */ +- (void)uiManagerDidPerformLayout:(RCTUIManager *)manager; + +/** + * Called before flushing UI blocks at the end of a batch. + * This is called from the UIManager queue. Can be used to add UI operations in that batch. + */ +- (void)uiManagerWillPerformMounting:(RCTUIManager *)manager; + +/** + * Called right before flushing UI blocks and allows to intercept the mounting process. + * Return `YES` to cancel default execution of the `block` (and perform the + * execution later). + */ +- (BOOL)uiManager:(RCTUIManager *)manager performMountingWithBlock:(RCTUIManagerMountingBlock)block; + +/** + * Called just after flushing UI blocks. + * This is called from the UIManager queue. + */ +- (void)uiManagerDidPerformMounting:(RCTUIManager *)manager; + +@end + +/** + * Simple helper which take care of RCTUIManager's observers. + */ +@interface RCTUIManagerObserverCoordinator : NSObject + +/** + * Add a UIManagerObserver. See the `RCTUIManagerObserver` protocol for more info. + * References to observers are held weakly. + * This method can be called safely from any queue. + */ +- (void)addObserver:(id)observer; + +/** + * Remove a `UIManagerObserver`. + * This method can be called safely from any queue. + */ +- (void)removeObserver:(id)observer; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTUIManagerUtils.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTUIManagerUtils.h new file mode 100644 index 0000000..2bf9f57 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTUIManagerUtils.h @@ -0,0 +1,105 @@ +/* + * 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 + +#import +#import + +/** + * Queues Problem Intro: + * UIManager queue is a special queue because it has a special relationship with + * the Main queue. + * + * This particular relationship comes from two key factors: + * 1. UIManager initiates execution of many blocks on the Main queue; + * 2. In some cases, we want to initiate (and wait for) some UIManager's work *synchronously* from + * the Main queue. + * + * So, how can we meet these criteria? + * "Pseudo UIManager queue" comes to rescue! + * + * "Pseudo UIManager queue" means the safe execution of typical UIManager's work + * on the Main queue while the UIManager queue is explicitly blocked for preventing + * simultaneous/concurrent memory access. + * + * So, how can we technically do this? + * 1. `RCTAssertUIManagerQueue` is okay with execution on both actual UIManager and + * Pseudo UIManager queues. + * 2. Both `RCTExecuteOnUIManagerQueue` and `RCTUnsafeExecuteOnUIManagerQueueSync` + * execute given block *synchronously* if they were called on actual UIManager + * or Pseudo UIManager queues. + * 3. `RCTExecuteOnMainQueue` executes given block *synchronously* if we already on + * the Main queue. + * 4. `RCTUnsafeExecuteOnUIManagerQueueSync` is smart enough to do the trick: + * It detects calling on the Main queue and in this case, instead of doing + * trivial *synchronous* dispatch, it does: + * - Block the Main queue; + * - Dispatch the special block on UIManager queue to block the queue and + * concurrent memory access; + * - Execute the given block on the Main queue; + * - Unblock the UIManager queue. + * + * Imagine the analogy: We have two queues: the Main one and UIManager one. + * And these queues are two lanes of railway that go in parallel. Then, + * at some point, we merge UIManager lane with the Main lane, and all cars use + * the unified the Main lane. + * And then we split lanes again. + * + * This solution assumes that the code running on UIManager queue will never + * *explicitly* block the Main queue via calling `RCTUnsafeExecuteOnMainQueueSync`. + * Otherwise, it can cause a deadlock. + */ + +/** + * Returns UIManager queue. + */ +RCT_EXTERN dispatch_queue_t RCTGetUIManagerQueue(void); + +/** + * Default name for the UIManager queue. + */ +RCT_EXTERN char *const RCTUIManagerQueueName; + +/** + * Check if we are currently on UIManager queue. + * Please do not use this unless you really know what you're doing. + */ +RCT_EXTERN BOOL RCTIsUIManagerQueue(void); + +/** + * Check if we are currently on Pseudo UIManager queue. + * Please do not use this unless you really know what you're doing. + */ +RCT_EXTERN BOOL RCTIsPseudoUIManagerQueue(void); + +/** + * *Asynchronously* executes the specified block on the UIManager queue. + * Unlike `dispatch_async()` this will execute the block immediately + * if we're already on the UIManager queue. + */ +RCT_EXTERN void RCTExecuteOnUIManagerQueue(dispatch_block_t block); + +/** + * *Synchronously* executes the specified block on the UIManager queue. + * Unlike `dispatch_sync()` this will execute the block immediately + * if we're already on the UIManager queue. + * Please do not use this unless you really know what you're doing. + */ +RCT_EXTERN void RCTUnsafeExecuteOnUIManagerQueueSync(dispatch_block_t block); + +/** + * Convenience macro for asserting that we're running on UIManager queue. + */ +#define RCTAssertUIManagerQueue() \ + RCTAssert( \ + RCTIsUIManagerQueue() || RCTIsPseudoUIManagerQueue(), @"This function must be called on the UIManager queue") + +/** + * Returns new unique root view tag. + */ +RCT_EXTERN NSNumber *RCTAllocateRootViewTag(void); diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTUITextField.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTUITextField.h new file mode 100644 index 0000000..f3b3492 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTUITextField.h @@ -0,0 +1,35 @@ +/* + * 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 + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +/* + * Just regular UITextField... but much better! + */ +@interface RCTUITextField : UITextField + +- (instancetype)initWithCoder:(NSCoder *)decoder NS_UNAVAILABLE; + +@property (nonatomic, weak) id textInputDelegate; + +@property (nonatomic, assign) BOOL caretHidden; +@property (nonatomic, assign) BOOL contextMenuHidden; +@property (nonatomic, assign, readonly) BOOL textWasPasted; +@property (nonatomic, strong, nullable) UIColor *placeholderColor; +@property (nonatomic, assign) UIEdgeInsets textContainerInset; +@property (nonatomic, assign, getter=isEditable) BOOL editable; +@property (nonatomic, getter=isScrollEnabled) BOOL scrollEnabled; +@property (nonatomic, strong, nullable) NSString *inputAccessoryViewID; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTUITextView.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTUITextView.h new file mode 100644 index 0000000..5cb03ee --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTUITextView.h @@ -0,0 +1,42 @@ +/* + * 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 + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +/* + * Just regular UITextView... but much better! + */ +@interface RCTUITextView : UITextView + +- (instancetype)initWithFrame:(CGRect)frame textContainer:(nullable NSTextContainer *)textContainer NS_UNAVAILABLE; +- (instancetype)initWithCoder:(NSCoder *)decoder NS_UNAVAILABLE; + +@property (nonatomic, weak) id textInputDelegate; + +@property (nonatomic, assign) BOOL contextMenuHidden; +@property (nonatomic, assign, readonly) BOOL textWasPasted; +@property (nonatomic, copy, nullable) NSString *placeholder; +@property (nonatomic, strong, nullable) UIColor *placeholderColor; + +@property (nonatomic, assign) CGFloat preferredMaxLayoutWidth; + +// The `clearButtonMode` property actually is not supported yet; +// it's declared here only to conform to the interface. +@property (nonatomic, assign) UITextFieldViewMode clearButtonMode; + +@property (nonatomic, assign) BOOL caretHidden; + +@property (nonatomic, strong, nullable) NSString *inputAccessoryViewID; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTUIUtils.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTUIUtils.h new file mode 100644 index 0000000..14fadee --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTUIUtils.h @@ -0,0 +1,34 @@ +/* + * 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 +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +#ifdef __cplusplus +extern "C" { +#endif + +// Get window and screen dimensions +typedef struct { + struct { + CGFloat width, height, scale, fontScale; + } window, screen; +} RCTDimensions; +extern __attribute__((visibility("default"))) RCTDimensions RCTGetDimensions(CGFloat fontScale); + +// Get font size multiplier for font base size (Large) by content size category +extern __attribute__((visibility("default"))) CGFloat RCTGetMultiplierForContentSizeCategory( + UIContentSizeCategory category); + +#ifdef __cplusplus +} +#endif + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTURLRequestDelegate.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTURLRequestDelegate.h new file mode 100644 index 0000000..8a9e03f --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTURLRequestDelegate.h @@ -0,0 +1,40 @@ +/* + * 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 + +/** + * An abstract interface used by request handler modules to send + * data back over the bridge back to JS. + */ +@protocol RCTURLRequestDelegate + +/** + * Call this when you send request data to the server. This is used to track + * upload progress, so should be called multiple times for large request bodies. + */ +- (void)URLRequest:(id)requestToken didSendDataWithProgress:(int64_t)bytesSent; + +/** + * Call this when you first receives a response from the server. This should + * include response headers, etc. + */ +- (void)URLRequest:(id)requestToken didReceiveResponse:(NSURLResponse *)response; + +/** + * Call this when you receive data from the server. This can be called multiple + * times with partial data chunks, or just once with the full data packet. + */ +- (void)URLRequest:(id)requestToken didReceiveData:(NSData *)data; + +/** + * Call this when the request is complete and/or if an error is encountered. + * For a successful request, the error parameter should be nil. + */ +- (void)URLRequest:(id)requestToken didCompleteWithError:(NSError *)error; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTURLRequestHandler.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTURLRequestHandler.h new file mode 100644 index 0000000..89f48f5 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTURLRequestHandler.h @@ -0,0 +1,52 @@ +/* + * 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 +#import + +/** + * Provides the interface needed to register a request handler. Request handlers + * are also bridge modules, so should be registered using RCT_EXPORT_MODULE(). + */ +@protocol RCTURLRequestHandler + +/** + * Indicates whether this handler is capable of processing the specified + * request. Typically the handler would examine the scheme/protocol of the + * request URL (and possibly the HTTP method and/or headers) to determine this. + */ +- (BOOL)canHandleRequest:(NSURLRequest *)request; + +/** + * Send a network request and call the delegate with the response data. The + * method should return a token, which can be anything, including the request + * itself. This will be used later to refer to the request in callbacks. The + * `sendRequest:withDelegate:` method *must* return before calling any of the + * delegate methods, or the delegate won't recognize the token. + * Following common Objective-C pattern, `delegate` will not be retained. + */ +- (id)sendRequest:(NSURLRequest *)request withDelegate:(id)delegate; + +@optional + +/** + * Not all request types can be cancelled, but this method can be implemented + * for ones that can. It should be used to free up any resources on ongoing + * processes associated with the request. + */ +- (void)cancelRequest:(id)requestToken; + +/** + * If more than one RCTURLRequestHandler responds YES to `canHandleRequest:` + * then `handlerPriority` is used to determine which one to use. The handler + * with the highest priority will be selected. Default priority is zero. If + * two or more valid handlers have the same priority, the selection order is + * undefined. + */ +- (float)handlerPriority; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTUtils.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTUtils.h new file mode 100644 index 0000000..ecb7915 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTUtils.h @@ -0,0 +1,189 @@ +/* + * 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 + +#import +#import +#import + +#import +#import + +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 if we are currently on the main queue (not to be confused with +// the main thread, which is not necessarily 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); + +// Legacy function to execute the specified block on the main queue synchronously. +// Please do not use this unless you know what you're doing. +RCT_EXTERN void RCTUnsafeExecuteOnMainQueueSync(dispatch_block_t block); + +// Get screen scale, can be only used on main +RCT_EXTERN void RCTComputeScreenScale(void); + +// Get screen metrics in a thread-safe way +RCT_EXTERN CGFloat RCTScreenScale(void); +RCT_EXTERN CGFloat RCTFontSizeMultiplier(void); +RCT_EXTERN CGSize RCTScreenSize(void); +RCT_EXTERN CGSize RCTViewportSize(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); +RCT_EXTERN void RCTSwapInstanceMethodWithBlock(Class cls, SEL original, id replacementBlock, SEL replacementSelector); + +// 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 + *RCTMakeError(NSString *message, id __nullable toStringify, NSDictionary *__nullable extraData); +RCT_EXTERN NSDictionary * +RCTMakeAndLogError(NSString *message, id __nullable toStringify, NSDictionary *__nullable extraData); +RCT_EXTERN NSDictionary *RCTJSErrorFromNSError(NSError *error); +RCT_EXTERN NSDictionary + *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); + +// Creates an NSError from given an NSException +RCT_EXTERN NSError *RCTErrorWithNSException(NSException *exception); + +// Convert nil values to NSNull, and vice-versa +#define RCTNullIfNil(value) ((value) ?: (id)kCFNull) +#define RCTNilIfNull(value) \ + ({ \ + __typeof__(value) t = (value); \ + (id) t == (id)kCFNull ? (__typeof(value))nil : t; \ + }) + +// Convert NaN or infinite values to zero, as these aren't JSON-safe +RCT_EXTERN double RCTZeroIfNaN(double value); + +// Returns `0` and log special warning if value is NaN or INF. +RCT_EXTERN double RCTSanitizeNaNValue(double value, NSString *property); + +// 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); + +// Returns the Path of Library directory +RCT_EXTERN NSString *__nullable RCTLibraryPath(void); + +// Returns the relative path within the library for an absolute URL +// (or nil, if the URL does not specify a path within the Library directory) +RCT_EXTERN NSString *__nullable RCTLibraryPathForURL(NSURL *__nullable URL); + +// Determines if a given image URL refers to a image in bundle +RCT_EXTERN BOOL RCTIsBundleAssetURL(NSURL *__nullable imageURL); + +// Determines if a given image URL refers to a image in library +RCT_EXTERN BOOL RCTIsLibraryAssetURL(NSURL *__nullable imageURL); + +// Determines if a given image URL refers to a local image +RCT_EXTERN BOOL RCTIsLocalAssetURL(NSURL *__nullable imageURL); + +// Returns an UIImage for a local image asset. Returns nil if the URL +// does not correspond to a local asset. +RCT_EXTERN UIImage *__nullable RCTImageFromLocalAssetURL(NSURL *imageURL); + +// Only used in case when RCTImageFromLocalAssetURL fails to get an image +// This method basically checks for the image in the bundle location, instead +// of the CodePush location +RCT_EXTERN UIImage *__nullable RCTImageFromLocalBundleAssetURL(NSURL *imageURL); + +// Creates a new, unique temporary file path with the specified extension +RCT_EXTERN NSString *__nullable RCTTempFilePath(NSString *__nullable extension, NSError **error); + +// Get RGBA components of CGColor +RCT_EXTERN void RCTGetRGBAColorComponents(CGColorRef color, CGFloat rgba[_Nonnull 4]); + +// 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); + +// Get a human readable type string from an NSObject. For example NSString becomes string +RCT_EXTERN NSString *RCTHumanReadableType(NSObject *obj); + +// 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); + +// Given a string, drop common RN prefixes (RCT, RK, etc.) +RCT_EXTERN NSString *RCTDropReactPrefixes(NSString *s); + +RCT_EXTERN BOOL RCTUIManagerTypeForTagIsFabric(NSNumber *reactTag); + +RCT_EXTERN BOOL RCTValidateTypeOfViewCommandArgument( + NSObject *obj, + id expectedClass, + NSString const *expectedType, + NSString const *componentName, + NSString const *commandName, + NSString const *argPos); + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTUtilsUIOverride.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTUtilsUIOverride.h new file mode 100644 index 0000000..c6988c6 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTUtilsUIOverride.h @@ -0,0 +1,19 @@ +/* + * 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 +#import + +@interface RCTUtilsUIOverride : NSObject +/** + Set the global presented view controller instance override. + */ ++ (void)setPresentedViewController:(UIViewController *)presentedViewController; ++ (UIViewController *)presentedViewController; ++ (BOOL)hasPresentedViewController; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTValueAnimatedNode.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTValueAnimatedNode.h new file mode 100644 index 0000000..a388d00 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTValueAnimatedNode.h @@ -0,0 +1,30 @@ +/* + * 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 + +#import "RCTAnimatedNode.h" + +@class RCTValueAnimatedNode; + +@protocol RCTValueAnimatedNodeObserver + +- (void)animatedNode:(RCTValueAnimatedNode *)node didUpdateValue:(CGFloat)value; + +@end + +@interface RCTValueAnimatedNode : RCTAnimatedNode + +- (void)setOffset:(CGFloat)offset; +- (void)flattenOffset; +- (void)extractOffset; + +@property (nonatomic, assign) CGFloat value; +@property (nonatomic, strong) id animatedObject; +@property (nonatomic, weak) id valueObserver; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTVersion.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTVersion.h new file mode 100644 index 0000000..5bc858d --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTVersion.h @@ -0,0 +1,17 @@ +/* + * 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 + +#import + +RCT_EXTERN NSString *const RCTVersionMajor; +RCT_EXTERN NSString *const RCTVersionMinor; +RCT_EXTERN NSString *const RCTVersionPatch; +RCT_EXTERN NSString *const RCTVersionPrerelease; + +RCT_EXTERN NSDictionary *RCTGetReactNativeVersion(void); diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTVibration.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTVibration.h new file mode 100644 index 0000000..1f6ced3 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTVibration.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTVibration : NSObject + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTVibrationPlugins.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTVibrationPlugins.h new file mode 100644 index 0000000..0676192 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTVibrationPlugins.h @@ -0,0 +1,40 @@ +/** + * 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 an internal plugin build system + */ + +#ifdef RN_DISABLE_OSS_PLUGIN_HEADER + +// FB Internal: FBRCTVibrationPlugins.h is autogenerated by the build system. +#import + +#else + +// OSS-compatibility layer + +#import + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wreturn-type-c-linkage" + +#ifdef __cplusplus +extern "C" { +#endif + +// RCTTurboModuleManagerDelegate should call this to resolve module classes. +Class RCTVibrationClassProvider(const char *name); + +// Lookup functions +Class RCTVibrationCls(void) __attribute__((used)); + +#ifdef __cplusplus +} +#endif + +#pragma GCC diagnostic pop + +#endif // RN_DISABLE_OSS_PLUGIN_HEADER diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTView.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTView.h new file mode 100644 index 0000000..c82242d --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTView.h @@ -0,0 +1,114 @@ +/* + * 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 + +#import +#import +#import +#import + +extern const UIAccessibilityTraits SwitchAccessibilityTrait; + +@protocol RCTAutoInsetsProtocol; + +@class RCTView; + +@interface RCTView : UIView + +/** + * Accessibility event handlers + */ +@property (nonatomic, copy) RCTDirectEventBlock onAccessibilityAction; +@property (nonatomic, copy) RCTDirectEventBlock onAccessibilityTap; +@property (nonatomic, copy) RCTDirectEventBlock onMagicTap; +@property (nonatomic, copy) RCTDirectEventBlock onAccessibilityEscape; + +/** + * Used to control how touch events are processed. + */ +@property (nonatomic, assign) RCTPointerEvents pointerEvents; + ++ (void)autoAdjustInsetsForView:(UIView *)parentView + withScrollView:(UIScrollView *)scrollView + updateOffset:(BOOL)updateOffset; + +/** + * Find the first view controller whose view, or any subview is the specified view. + */ ++ (UIEdgeInsets)contentInsetsForView:(UIView *)curView; + +/** + * Layout direction of the view. + * This is inherited from UIView+React, but we override it here + * to improve performance and make subclassing/overriding possible/easier. + */ +@property (nonatomic, assign) UIUserInterfaceLayoutDirection reactLayoutDirection; + +/** + * This is an optimization used to improve performance + * for large scrolling views with many subviews, such as a + * list or table. If set to YES, any clipped subviews will + * be removed from the view hierarchy whenever -updateClippedSubviews + * is called. This would typically be triggered by a scroll event + */ +@property (nonatomic, assign) BOOL removeClippedSubviews; + +/** + * Hide subviews if they are outside the view bounds. + * This is an optimisation used predominantly with RKScrollViews + * but it is applied recursively to all subviews that have + * removeClippedSubviews set to YES + */ +- (void)updateClippedSubviews; + +/** + * Border radii. + */ +@property (nonatomic, assign) CGFloat borderRadius; +@property (nonatomic, assign) CGFloat borderTopLeftRadius; +@property (nonatomic, assign) CGFloat borderTopRightRadius; +@property (nonatomic, assign) CGFloat borderTopStartRadius; +@property (nonatomic, assign) CGFloat borderTopEndRadius; +@property (nonatomic, assign) CGFloat borderBottomLeftRadius; +@property (nonatomic, assign) CGFloat borderBottomRightRadius; +@property (nonatomic, assign) CGFloat borderBottomStartRadius; +@property (nonatomic, assign) CGFloat borderBottomEndRadius; + +/** + * Border colors (actually retained). + */ +@property (nonatomic, strong) UIColor *borderTopColor; +@property (nonatomic, strong) UIColor *borderRightColor; +@property (nonatomic, strong) UIColor *borderBottomColor; +@property (nonatomic, strong) UIColor *borderLeftColor; +@property (nonatomic, strong) UIColor *borderStartColor; +@property (nonatomic, strong) UIColor *borderEndColor; +@property (nonatomic, strong) UIColor *borderColor; + +/** + * Border widths. + */ +@property (nonatomic, assign) CGFloat borderTopWidth; +@property (nonatomic, assign) CGFloat borderRightWidth; +@property (nonatomic, assign) CGFloat borderBottomWidth; +@property (nonatomic, assign) CGFloat borderLeftWidth; +@property (nonatomic, assign) CGFloat borderStartWidth; +@property (nonatomic, assign) CGFloat borderEndWidth; +@property (nonatomic, assign) CGFloat borderWidth; + +/** + * Border styles. + */ +@property (nonatomic, assign) RCTBorderStyle borderStyle; + +/** + * Insets used when hit testing inside this view. + */ +@property (nonatomic, assign) UIEdgeInsets hitTestEdgeInsets; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTViewManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTViewManager.h new file mode 100644 index 0000000..5c1eba4 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTViewManager.h @@ -0,0 +1,118 @@ +/* + * 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 + +#import +#import +#import +#import +#import +#import + +@class RCTBridge; +@class RCTShadowView; +@class RCTSparseArray; +@class RCTUIManager; + +typedef void (^RCTViewManagerUIBlock)(RCTUIManager *uiManager, NSDictionary *viewRegistry); + +@interface RCTViewManager : NSObject + +/** + * The bridge can be used to access both the RCTUIIManager and the RCTEventDispatcher, + * allowing the manager (or the views that it manages) to manipulate the view + * hierarchy and send events back to the JS context. + */ +@property (nonatomic, weak) RCTBridge *bridge; + +/** + * This method instantiates a native view to be managed by the module. Override + * this to return a custom view instance, which may be preconfigured with default + * properties, subviews, etc. This method will be called many times, and should + * return a fresh instance each time. The view module MUST NOT cache the returned + * view and return the same instance for subsequent calls. + */ +- (UIView *)view; + +/** + * This method instantiates a shadow view to be managed by the module. If omitted, + * an ordinary RCTShadowView instance will be created, which is typically fine for + * most view types. As with the -view method, the -shadowView method should return + * a fresh instance each time it is called. + */ +- (RCTShadowView *)shadowView; + +/** + * DEPRECATED: declare properties of type RCTBubblingEventBlock instead + * + * Returns an array of names of events that can be sent by native views. This + * should return bubbling, directly-dispatched event types. The event name + * should not include a prefix such as 'on' or 'top', as this will be applied + * as needed. When subscribing to the event, use the 'Captured' suffix to + * indicate the captured form, or omit the suffix for the bubbling form. + * + * Note that this method is not inherited when you subclass a view module, and + * you should not call [super customBubblingEventTypes] when overriding it. + */ +- (NSArray *)customBubblingEventTypes __deprecated_msg("Use RCTBubblingEventBlock props instead."); + +/** + * This handles the simple case, where JS and native property names match. + */ +#define RCT_EXPORT_VIEW_PROPERTY(name, type) \ + +(NSArray *)propConfig_##name RCT_DYNAMIC \ + { \ + return @[ @ #type ]; \ + } + +/** + * This macro maps a named property to an arbitrary key path in the view. + */ +#define RCT_REMAP_VIEW_PROPERTY(name, keyPath, type) \ + +(NSArray *)propConfig_##name RCT_DYNAMIC \ + { \ + return @[ @ #type, @ #keyPath ]; \ + } + +/** + * This macro can be used when you need to provide custom logic for setting + * view properties. The macro should be followed by a method body, which can + * refer to "json", "view" and "defaultView" to implement the required logic. + */ +#define RCT_CUSTOM_VIEW_PROPERTY(name, type, viewClass) \ + RCT_REMAP_VIEW_PROPERTY(name, __custom__, type) \ + -(void)set_##name : (id)json forView : (viewClass *)view withDefaultView : (viewClass *)defaultView RCT_DYNAMIC + +/** + * This macro is used to map properties to the shadow view, instead of the view. + */ +#define RCT_EXPORT_SHADOW_PROPERTY(name, type) \ + +(NSArray *)propConfigShadow_##name RCT_DYNAMIC \ + { \ + return @[ @ #type ]; \ + } + +/** + * This macro maps a named property to an arbitrary key path in the shadow view. + */ +#define RCT_REMAP_SHADOW_PROPERTY(name, keyPath, type) \ + +(NSArray *)propConfigShadow_##name RCT_DYNAMIC \ + { \ + return @[ @ #type, @ #keyPath ]; \ + } + +/** + * This macro can be used when you need to provide custom logic for setting + * shadow view properties. The macro should be followed by a method body, which can + * refer to "json" and "view". + */ +#define RCT_CUSTOM_SHADOW_PROPERTY(name, type, viewClass) \ + RCT_REMAP_SHADOW_PROPERTY(name, __custom__, type) \ + -(void)set_##name : (id)json forShadowView : (viewClass *)view RCT_DYNAMIC + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTVirtualTextShadowView.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTVirtualTextShadowView.h new file mode 100644 index 0000000..bce9ea8 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTVirtualTextShadowView.h @@ -0,0 +1,12 @@ +/* + * 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 "RCTBaseTextShadowView.h" + +@interface RCTVirtualTextShadowView : RCTBaseTextShadowView + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTVirtualTextViewManager.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTVirtualTextViewManager.h new file mode 100644 index 0000000..91d4f78 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTVirtualTextViewManager.h @@ -0,0 +1,12 @@ +/* + * 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 "RCTBaseTextViewManager.h" + +@interface RCTVirtualTextViewManager : RCTBaseTextViewManager + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTWeakProxy.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTWeakProxy.h new file mode 100644 index 0000000..472f7f0 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTWeakProxy.h @@ -0,0 +1,16 @@ +/* + * 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 + +@interface RCTWeakProxy : NSObject + +@property (nonatomic, weak, readonly) id target; + ++ (instancetype)weakProxyWithTarget:(id)target; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTWeakViewHolder.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTWeakViewHolder.h new file mode 100644 index 0000000..ce39eee --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTWeakViewHolder.h @@ -0,0 +1,19 @@ +/* + * 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. + */ + +/* + * THIS IS A HACK + * This protocol should only be used for Paper ViewManagers which need to + * use the Fabric Interop layer, and also need to reference their created + * views. This protocol allows the view manager to store a weak reference to + * any created views. It will not affect view lifecycle in any way. + */ +@protocol RCTWeakViewHolder + +@property (nonatomic, strong) NSMapTable *weakViews; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTWebSocketExecutor.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTWebSocketExecutor.h new file mode 100644 index 0000000..499664b --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTWebSocketExecutor.h @@ -0,0 +1,19 @@ +/* + * 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 +#import + +#if RCT_DEV // Debug executors are only supported in dev mode + +@interface RCTWebSocketExecutor : NSObject + +- (instancetype)initWithURL:(NSURL *)URL; + +@end + +#endif diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTWebSocketModule.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTWebSocketModule.h new file mode 100644 index 0000000..c1a48d3 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTWebSocketModule.h @@ -0,0 +1,35 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +@protocol RCTWebSocketContentHandler + +- (id)processWebsocketMessage:(id __nullable)message + forSocketID:(NSNumber *)socketID + withType:(NSString *__nonnull __autoreleasing *__nonnull)type; + +@end + +@interface RCTWebSocketModule : RCTEventEmitter + +// Register a custom handler for a specific websocket. The handler will be strongly held by the WebSocketModule. +- (void)setContentHandler:(id __nullable)handler forSocketID:(NSNumber *)socketID; + +- (void)sendData:(NSData *)data forSocketID:(nonnull NSNumber *)socketID; + +@end + +@interface RCTBridge (RCTWebSocketModule) + +- (RCTWebSocketModule *)webSocketModule; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTWrapperViewController.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTWrapperViewController.h new file mode 100644 index 0000000..dc9b0d6 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/RCTWrapperViewController.h @@ -0,0 +1,16 @@ +/* + * 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 + +@class RCTWrapperViewController; + +@interface RCTWrapperViewController : UIViewController + +- (instancetype)initWithContentView:(UIView *)contentView NS_DESIGNATED_INITIALIZER; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/UIView+Private.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/UIView+Private.h new file mode 100644 index 0000000..a5cb440 --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/UIView+Private.h @@ -0,0 +1,17 @@ +/* + * 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 + +@interface UIView (Private) + +// remove clipped subviews implementation +- (void)react_remountAllSubviews; +- (void)react_updateClippedSubviewsWithClipRect:(CGRect)clipRect relativeToView:(UIView *)clipView; +- (UIView *)react_findClipView; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/UIView+React.h b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/UIView+React.h new file mode 100644 index 0000000..67c665b --- /dev/null +++ b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/Headers/React/UIView+React.h @@ -0,0 +1,130 @@ +/* + * 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 + +#import +#import + +@class RCTShadowView; + +@interface UIView (React) + +/** + * RCTComponent interface. + */ +- (NSArray *)reactSubviews NS_REQUIRES_SUPER; +- (UIView *)reactSuperview NS_REQUIRES_SUPER; +- (void)insertReactSubview:(UIView *)subview atIndex:(NSInteger)atIndex NS_REQUIRES_SUPER; +- (void)removeReactSubview:(UIView *)subview NS_REQUIRES_SUPER; + +/** + * The native id of the view, used to locate view from native codes + */ +@property (nonatomic, copy) NSString *nativeID; + +/** + * Determines whether or not a view should ignore inverted colors or not. Used to set + * UIView property accessibilityIgnoresInvertColors in iOS 11+. + */ +@property (nonatomic, assign) BOOL shouldAccessibilityIgnoresInvertColors; + +/** + * Layout direction of the view. + * Internally backed to `semanticContentAttribute` property. + * Defaults to `LeftToRight` in case of ambiguity. + */ +@property (nonatomic, assign) UIUserInterfaceLayoutDirection reactLayoutDirection; + +/** + * Yoga `display` style property. Can be `flex` or `none`. + * Defaults to `flex`. + * May be used to temporary hide the view in a very efficient way. + */ +@property (nonatomic, assign) YGDisplay reactDisplay; + +/** + * The z-index of the view. + */ +@property (nonatomic, assign) NSInteger reactZIndex; + +/** + * Subviews sorted by z-index. Note that this method doesn't do any caching (yet) + * and sorts all the views each call. + */ +- (NSArray *)reactZIndexSortedSubviews; + +/** + * Updates the subviews array based on the reactSubviews. Default behavior is + * to insert the sortedReactSubviews into the UIView. + */ +- (void)didUpdateReactSubviews; + +/** + * Called each time props have been set. + * The default implementation does nothing. + */ +- (void)didSetProps:(NSArray *)changedProps; + +/** + * Used by the UIIManager to set the view frame. + * May be overridden to disable animation, etc. + */ +- (void)reactSetFrame:(CGRect)frame; + +/** + * This method finds and returns the containing view controller for the view. + */ +- (UIViewController *)reactViewController; + +/** + * This method attaches the specified controller as a child of the + * the owning view controller of this view. Returns NO if no view + * controller is found (which may happen if the view is not currently + * attached to the view hierarchy). + */ +- (void)reactAddControllerToClosestParent:(UIViewController *)controller; + +/** + * Focus manipulation. + */ +- (void)reactFocus; +- (void)reactFocusIfNeeded; +- (void)reactBlur; + +/** + * Useful properties for computing layout. + */ +@property (nonatomic, readonly) UIEdgeInsets reactBorderInsets; +@property (nonatomic, readonly) UIEdgeInsets reactPaddingInsets; +@property (nonatomic, readonly) UIEdgeInsets reactCompoundInsets; +@property (nonatomic, readonly) CGRect reactContentFrame; + +/** + * The (sub)view which represents this view in terms of accessibility. + * ViewManager will apply all accessibility properties directly to this view. + * May be overridden in view subclass which needs to be accessiblitywise + * transparent in favour of some subview. + * Defaults to `self`. + */ +@property (nonatomic, readonly) UIView *reactAccessibilityElement; + +/** + * Accessibility properties + */ +@property (nonatomic, copy) NSString *accessibilityRole; +@property (nonatomic, copy) NSDictionary *accessibilityState; +@property (nonatomic, copy) NSArray *accessibilityActions; +@property (nonatomic, copy) NSDictionary *accessibilityValueInternal; + +/** + * Used in debugging to get a description of the view hierarchy rooted at + * the current view. + */ +- (NSString *)react_recursiveDescription; + +@end diff --git a/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/libReact-Core.a b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/libReact-Core.a new file mode 100644 index 0000000..dca7e57 Binary files /dev/null and b/Frameworks/React-Core.xcframework/ios-arm64_x86_64-simulator/libReact-Core.a differ diff --git a/Frameworks/React-CoreModules.xcframework/Info.plist b/Frameworks/React-CoreModules.xcframework/Info.plist new file mode 100644 index 0000000..a3d28e5 --- /dev/null +++ b/Frameworks/React-CoreModules.xcframework/Info.plist @@ -0,0 +1,44 @@ + + + + + AvailableLibraries + + + BinaryPath + libReact-CoreModules.a + LibraryIdentifier + ios-arm64 + LibraryPath + libReact-CoreModules.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libReact-CoreModules.a + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libReact-CoreModules.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/React-CoreModules.xcframework/ios-arm64/libReact-CoreModules.a b/Frameworks/React-CoreModules.xcframework/ios-arm64/libReact-CoreModules.a new file mode 100644 index 0000000..c5b5cc5 Binary files /dev/null and b/Frameworks/React-CoreModules.xcframework/ios-arm64/libReact-CoreModules.a differ diff --git a/Frameworks/React-CoreModules.xcframework/ios-arm64_x86_64-simulator/libReact-CoreModules.a b/Frameworks/React-CoreModules.xcframework/ios-arm64_x86_64-simulator/libReact-CoreModules.a new file mode 100644 index 0000000..dfd08c8 Binary files /dev/null and b/Frameworks/React-CoreModules.xcframework/ios-arm64_x86_64-simulator/libReact-CoreModules.a differ diff --git a/Frameworks/React-RCTAnimation.xcframework/Info.plist b/Frameworks/React-RCTAnimation.xcframework/Info.plist new file mode 100644 index 0000000..b203443 --- /dev/null +++ b/Frameworks/React-RCTAnimation.xcframework/Info.plist @@ -0,0 +1,44 @@ + + + + + AvailableLibraries + + + BinaryPath + libReact-RCTAnimation.a + LibraryIdentifier + ios-arm64 + LibraryPath + libReact-RCTAnimation.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libReact-RCTAnimation.a + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libReact-RCTAnimation.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/React-RCTAnimation.xcframework/ios-arm64/libReact-RCTAnimation.a b/Frameworks/React-RCTAnimation.xcframework/ios-arm64/libReact-RCTAnimation.a new file mode 100644 index 0000000..63e1b87 Binary files /dev/null and b/Frameworks/React-RCTAnimation.xcframework/ios-arm64/libReact-RCTAnimation.a differ diff --git a/Frameworks/React-RCTAnimation.xcframework/ios-arm64_x86_64-simulator/libReact-RCTAnimation.a b/Frameworks/React-RCTAnimation.xcframework/ios-arm64_x86_64-simulator/libReact-RCTAnimation.a new file mode 100644 index 0000000..d54be05 Binary files /dev/null and b/Frameworks/React-RCTAnimation.xcframework/ios-arm64_x86_64-simulator/libReact-RCTAnimation.a differ diff --git a/Frameworks/React-RCTBlob.xcframework/Info.plist b/Frameworks/React-RCTBlob.xcframework/Info.plist new file mode 100644 index 0000000..1f02303 --- /dev/null +++ b/Frameworks/React-RCTBlob.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libReact-RCTBlob.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libReact-RCTBlob.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libReact-RCTBlob.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libReact-RCTBlob.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/React-RCTBlob.xcframework/ios-arm64/Headers/RCTBlob/RCTBlobCollector.h b/Frameworks/React-RCTBlob.xcframework/ios-arm64/Headers/RCTBlob/RCTBlobCollector.h new file mode 100644 index 0000000..43179d9 --- /dev/null +++ b/Frameworks/React-RCTBlob.xcframework/ios-arm64/Headers/RCTBlob/RCTBlobCollector.h @@ -0,0 +1,30 @@ +/* + * 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 + +using namespace facebook; + +@class RCTBlobManager; + +namespace facebook { +namespace react { + +class JSI_EXPORT RCTBlobCollector : public jsi::HostObject { + public: + RCTBlobCollector(RCTBlobManager *blobManager, const std::string &blobId); + ~RCTBlobCollector(); + + static void install(RCTBlobManager *blobManager); + + private: + const std::string blobId_; + RCTBlobManager *blobManager_; +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-RCTBlob.xcframework/ios-arm64/Headers/RCTBlob/RCTBlobManager.h b/Frameworks/React-RCTBlob.xcframework/ios-arm64/Headers/RCTBlob/RCTBlobManager.h new file mode 100755 index 0000000..04b905c --- /dev/null +++ b/Frameworks/React-RCTBlob.xcframework/ios-arm64/Headers/RCTBlob/RCTBlobManager.h @@ -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 +#import +#import +#import + +@interface RCTBlobManager : NSObject + +- (NSString *)store:(NSData *)data; + +- (void)store:(NSData *)data withId:(NSString *)blobId; + +- (NSData *)resolve:(NSDictionary *)blob; + +- (NSData *)resolve:(NSString *)blobId offset:(NSInteger)offset size:(NSInteger)size; + +- (NSData *)resolveURL:(NSURL *)url; + +- (void)remove:(NSString *)blobId; + +- (void)createFromParts:(NSArray *> *)parts withId:(NSString *)blobId; + +@end diff --git a/Frameworks/React-RCTBlob.xcframework/ios-arm64/Headers/RCTBlob/RCTBlobPlugins.h b/Frameworks/React-RCTBlob.xcframework/ios-arm64/Headers/RCTBlob/RCTBlobPlugins.h new file mode 100644 index 0000000..141ca35 --- /dev/null +++ b/Frameworks/React-RCTBlob.xcframework/ios-arm64/Headers/RCTBlob/RCTBlobPlugins.h @@ -0,0 +1,41 @@ +/** + * 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 an internal plugin build system + */ + +#ifdef RN_DISABLE_OSS_PLUGIN_HEADER + +// FB Internal: FBRCTBlobPlugins.h is autogenerated by the build system. +#import + +#else + +// OSS-compatibility layer + +#import + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wreturn-type-c-linkage" + +#ifdef __cplusplus +extern "C" { +#endif + +// RCTTurboModuleManagerDelegate should call this to resolve module classes. +Class RCTBlobClassProvider(const char *name); + +// Lookup functions +Class RCTFileReaderModuleCls(void) __attribute__((used)); +Class RCTBlobManagerCls(void) __attribute__((used)); + +#ifdef __cplusplus +} +#endif + +#pragma GCC diagnostic pop + +#endif // RN_DISABLE_OSS_PLUGIN_HEADER diff --git a/Frameworks/React-RCTBlob.xcframework/ios-arm64/Headers/RCTBlob/RCTFileReaderModule.h b/Frameworks/React-RCTBlob.xcframework/ios-arm64/Headers/RCTBlob/RCTFileReaderModule.h new file mode 100644 index 0000000..0eb246b --- /dev/null +++ b/Frameworks/React-RCTBlob.xcframework/ios-arm64/Headers/RCTBlob/RCTFileReaderModule.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTFileReaderModule : NSObject + +@end diff --git a/Frameworks/React-RCTBlob.xcframework/ios-arm64/libReact-RCTBlob.a b/Frameworks/React-RCTBlob.xcframework/ios-arm64/libReact-RCTBlob.a new file mode 100644 index 0000000..b824e4c Binary files /dev/null and b/Frameworks/React-RCTBlob.xcframework/ios-arm64/libReact-RCTBlob.a differ diff --git a/Frameworks/React-RCTBlob.xcframework/ios-arm64_x86_64-simulator/Headers/RCTBlob/RCTBlobCollector.h b/Frameworks/React-RCTBlob.xcframework/ios-arm64_x86_64-simulator/Headers/RCTBlob/RCTBlobCollector.h new file mode 100644 index 0000000..43179d9 --- /dev/null +++ b/Frameworks/React-RCTBlob.xcframework/ios-arm64_x86_64-simulator/Headers/RCTBlob/RCTBlobCollector.h @@ -0,0 +1,30 @@ +/* + * 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 + +using namespace facebook; + +@class RCTBlobManager; + +namespace facebook { +namespace react { + +class JSI_EXPORT RCTBlobCollector : public jsi::HostObject { + public: + RCTBlobCollector(RCTBlobManager *blobManager, const std::string &blobId); + ~RCTBlobCollector(); + + static void install(RCTBlobManager *blobManager); + + private: + const std::string blobId_; + RCTBlobManager *blobManager_; +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-RCTBlob.xcframework/ios-arm64_x86_64-simulator/Headers/RCTBlob/RCTBlobManager.h b/Frameworks/React-RCTBlob.xcframework/ios-arm64_x86_64-simulator/Headers/RCTBlob/RCTBlobManager.h new file mode 100755 index 0000000..04b905c --- /dev/null +++ b/Frameworks/React-RCTBlob.xcframework/ios-arm64_x86_64-simulator/Headers/RCTBlob/RCTBlobManager.h @@ -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 +#import +#import +#import + +@interface RCTBlobManager : NSObject + +- (NSString *)store:(NSData *)data; + +- (void)store:(NSData *)data withId:(NSString *)blobId; + +- (NSData *)resolve:(NSDictionary *)blob; + +- (NSData *)resolve:(NSString *)blobId offset:(NSInteger)offset size:(NSInteger)size; + +- (NSData *)resolveURL:(NSURL *)url; + +- (void)remove:(NSString *)blobId; + +- (void)createFromParts:(NSArray *> *)parts withId:(NSString *)blobId; + +@end diff --git a/Frameworks/React-RCTBlob.xcframework/ios-arm64_x86_64-simulator/Headers/RCTBlob/RCTBlobPlugins.h b/Frameworks/React-RCTBlob.xcframework/ios-arm64_x86_64-simulator/Headers/RCTBlob/RCTBlobPlugins.h new file mode 100644 index 0000000..141ca35 --- /dev/null +++ b/Frameworks/React-RCTBlob.xcframework/ios-arm64_x86_64-simulator/Headers/RCTBlob/RCTBlobPlugins.h @@ -0,0 +1,41 @@ +/** + * 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 an internal plugin build system + */ + +#ifdef RN_DISABLE_OSS_PLUGIN_HEADER + +// FB Internal: FBRCTBlobPlugins.h is autogenerated by the build system. +#import + +#else + +// OSS-compatibility layer + +#import + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wreturn-type-c-linkage" + +#ifdef __cplusplus +extern "C" { +#endif + +// RCTTurboModuleManagerDelegate should call this to resolve module classes. +Class RCTBlobClassProvider(const char *name); + +// Lookup functions +Class RCTFileReaderModuleCls(void) __attribute__((used)); +Class RCTBlobManagerCls(void) __attribute__((used)); + +#ifdef __cplusplus +} +#endif + +#pragma GCC diagnostic pop + +#endif // RN_DISABLE_OSS_PLUGIN_HEADER diff --git a/Frameworks/React-RCTBlob.xcframework/ios-arm64_x86_64-simulator/Headers/RCTBlob/RCTFileReaderModule.h b/Frameworks/React-RCTBlob.xcframework/ios-arm64_x86_64-simulator/Headers/RCTBlob/RCTFileReaderModule.h new file mode 100644 index 0000000..0eb246b --- /dev/null +++ b/Frameworks/React-RCTBlob.xcframework/ios-arm64_x86_64-simulator/Headers/RCTBlob/RCTFileReaderModule.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTFileReaderModule : NSObject + +@end diff --git a/Frameworks/React-RCTBlob.xcframework/ios-arm64_x86_64-simulator/libReact-RCTBlob.a b/Frameworks/React-RCTBlob.xcframework/ios-arm64_x86_64-simulator/libReact-RCTBlob.a new file mode 100644 index 0000000..71719cf Binary files /dev/null and b/Frameworks/React-RCTBlob.xcframework/ios-arm64_x86_64-simulator/libReact-RCTBlob.a differ diff --git a/Frameworks/React-RCTImage.xcframework/Info.plist b/Frameworks/React-RCTImage.xcframework/Info.plist new file mode 100644 index 0000000..40f8e70 --- /dev/null +++ b/Frameworks/React-RCTImage.xcframework/Info.plist @@ -0,0 +1,44 @@ + + + + + AvailableLibraries + + + BinaryPath + libReact-RCTImage.a + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libReact-RCTImage.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + libReact-RCTImage.a + LibraryIdentifier + ios-arm64 + LibraryPath + libReact-RCTImage.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/React-RCTImage.xcframework/ios-arm64/libReact-RCTImage.a b/Frameworks/React-RCTImage.xcframework/ios-arm64/libReact-RCTImage.a new file mode 100644 index 0000000..379fca6 Binary files /dev/null and b/Frameworks/React-RCTImage.xcframework/ios-arm64/libReact-RCTImage.a differ diff --git a/Frameworks/React-RCTImage.xcframework/ios-arm64_x86_64-simulator/libReact-RCTImage.a b/Frameworks/React-RCTImage.xcframework/ios-arm64_x86_64-simulator/libReact-RCTImage.a new file mode 100644 index 0000000..d6f6918 Binary files /dev/null and b/Frameworks/React-RCTImage.xcframework/ios-arm64_x86_64-simulator/libReact-RCTImage.a differ diff --git a/Frameworks/React-RCTLinking.xcframework/Info.plist b/Frameworks/React-RCTLinking.xcframework/Info.plist new file mode 100644 index 0000000..51f40f5 --- /dev/null +++ b/Frameworks/React-RCTLinking.xcframework/Info.plist @@ -0,0 +1,44 @@ + + + + + AvailableLibraries + + + BinaryPath + libReact-RCTLinking.a + LibraryIdentifier + ios-arm64 + LibraryPath + libReact-RCTLinking.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libReact-RCTLinking.a + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libReact-RCTLinking.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/React-RCTLinking.xcframework/ios-arm64/libReact-RCTLinking.a b/Frameworks/React-RCTLinking.xcframework/ios-arm64/libReact-RCTLinking.a new file mode 100644 index 0000000..1e2e0b4 Binary files /dev/null and b/Frameworks/React-RCTLinking.xcframework/ios-arm64/libReact-RCTLinking.a differ diff --git a/Frameworks/React-RCTLinking.xcframework/ios-arm64_x86_64-simulator/libReact-RCTLinking.a b/Frameworks/React-RCTLinking.xcframework/ios-arm64_x86_64-simulator/libReact-RCTLinking.a new file mode 100644 index 0000000..d45fd90 Binary files /dev/null and b/Frameworks/React-RCTLinking.xcframework/ios-arm64_x86_64-simulator/libReact-RCTLinking.a differ diff --git a/Frameworks/React-RCTNetwork.xcframework/Info.plist b/Frameworks/React-RCTNetwork.xcframework/Info.plist new file mode 100644 index 0000000..4e8e94b --- /dev/null +++ b/Frameworks/React-RCTNetwork.xcframework/Info.plist @@ -0,0 +1,44 @@ + + + + + AvailableLibraries + + + BinaryPath + libReact-RCTNetwork.a + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libReact-RCTNetwork.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + libReact-RCTNetwork.a + LibraryIdentifier + ios-arm64 + LibraryPath + libReact-RCTNetwork.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/React-RCTNetwork.xcframework/ios-arm64/libReact-RCTNetwork.a b/Frameworks/React-RCTNetwork.xcframework/ios-arm64/libReact-RCTNetwork.a new file mode 100644 index 0000000..0d4f117 Binary files /dev/null and b/Frameworks/React-RCTNetwork.xcframework/ios-arm64/libReact-RCTNetwork.a differ diff --git a/Frameworks/React-RCTNetwork.xcframework/ios-arm64_x86_64-simulator/libReact-RCTNetwork.a b/Frameworks/React-RCTNetwork.xcframework/ios-arm64_x86_64-simulator/libReact-RCTNetwork.a new file mode 100644 index 0000000..8c3530b Binary files /dev/null and b/Frameworks/React-RCTNetwork.xcframework/ios-arm64_x86_64-simulator/libReact-RCTNetwork.a differ diff --git a/Frameworks/React-RCTSettings.xcframework/Info.plist b/Frameworks/React-RCTSettings.xcframework/Info.plist new file mode 100644 index 0000000..38592b9 --- /dev/null +++ b/Frameworks/React-RCTSettings.xcframework/Info.plist @@ -0,0 +1,44 @@ + + + + + AvailableLibraries + + + BinaryPath + libReact-RCTSettings.a + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libReact-RCTSettings.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + libReact-RCTSettings.a + LibraryIdentifier + ios-arm64 + LibraryPath + libReact-RCTSettings.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/React-RCTSettings.xcframework/ios-arm64/libReact-RCTSettings.a b/Frameworks/React-RCTSettings.xcframework/ios-arm64/libReact-RCTSettings.a new file mode 100644 index 0000000..26f4462 Binary files /dev/null and b/Frameworks/React-RCTSettings.xcframework/ios-arm64/libReact-RCTSettings.a differ diff --git a/Frameworks/React-RCTSettings.xcframework/ios-arm64_x86_64-simulator/libReact-RCTSettings.a b/Frameworks/React-RCTSettings.xcframework/ios-arm64_x86_64-simulator/libReact-RCTSettings.a new file mode 100644 index 0000000..fd5a47a Binary files /dev/null and b/Frameworks/React-RCTSettings.xcframework/ios-arm64_x86_64-simulator/libReact-RCTSettings.a differ diff --git a/Frameworks/React-RCTText.xcframework/Info.plist b/Frameworks/React-RCTText.xcframework/Info.plist new file mode 100644 index 0000000..f08a96d --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libReact-RCTText.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libReact-RCTText.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + libReact-RCTText.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libReact-RCTText.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/NSTextStorage+FontScaling.h b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/NSTextStorage+FontScaling.h new file mode 100644 index 0000000..61b1634 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/NSTextStorage+FontScaling.h @@ -0,0 +1,20 @@ +/* + * 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 + +@interface NSTextStorage (FontScaling) + +- (void)scaleFontSizeToFitSize:(CGSize)size + minimumFontSize:(CGFloat)minimumFontSize + maximumFontSize:(CGFloat)maximumFontSize; + +- (void)scaleFontSizeWithRatio:(CGFloat)ratio + minimumFontSize:(CGFloat)minimumFontSize + maximumFontSize:(CGFloat)maximumFontSize; + +@end diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTBackedTextInputDelegate.h b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTBackedTextInputDelegate.h new file mode 100644 index 0000000..3e1839b --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTBackedTextInputDelegate.h @@ -0,0 +1,42 @@ +/* + * 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 + +@protocol RCTBackedTextInputViewProtocol; + +NS_ASSUME_NONNULL_BEGIN + +@protocol RCTBackedTextInputDelegate + +- (BOOL)textInputShouldBeginEditing; // Return `NO` to disallow editing. +- (void)textInputDidBeginEditing; + +- (BOOL)textInputShouldEndEditing; // Return `YES` to allow editing to stop and to resign first responder status. `NO` to disallow the editing session to end. +- (void)textInputDidEndEditing; // May be called if forced even if `textInputShouldEndEditing` returns `NO` (e.g. view removed from window) or `[textInput endEditing:YES]` called. + +- (BOOL)textInputShouldReturn; // May be called right before `textInputShouldEndEditing` if "Return" button was pressed. +- (void)textInputDidReturn; + +/* + * Called before any change in the TextInput. The delegate has the opportunity to change the replacement string or reject the change completely. + * To change the replacement, return the changed version of the `text`. + * To accept the change, return `text` argument as-is. + * To reject the change, return `nil`. + */ +- (NSString *)textInputShouldChangeText:(NSString *)text inRange:(NSRange)range; +- (void)textInputDidChange; + +- (void)textInputDidChangeSelection; + +@optional + +- (void)scrollViewDidScroll:(UIScrollView *)scrollView; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTBackedTextInputDelegateAdapter.h b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTBackedTextInputDelegateAdapter.h new file mode 100644 index 0000000..a7f3251 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTBackedTextInputDelegateAdapter.h @@ -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 + +#import "RCTBackedTextInputViewProtocol.h" +#import "RCTBackedTextInputDelegate.h" + +NS_ASSUME_NONNULL_BEGIN + +#pragma mark - RCTBackedTextFieldDelegateAdapter (for UITextField) + +@interface RCTBackedTextFieldDelegateAdapter : NSObject + +- (instancetype)initWithTextField:(UITextField *)backedTextInputView; + +- (void)skipNextTextInputDidChangeSelectionEventWithTextRange:(UITextRange *)textRange; +- (void)selectedTextRangeWasSet; + +@end + +#pragma mark - RCTBackedTextViewDelegateAdapter (for UITextView) + +@interface RCTBackedTextViewDelegateAdapter : NSObject + +- (instancetype)initWithTextView:(UITextView *)backedTextInputView; + +- (void)skipNextTextInputDidChangeSelectionEventWithTextRange:(UITextRange *)textRange; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTBackedTextInputViewProtocol.h b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTBackedTextInputViewProtocol.h new file mode 100644 index 0000000..09f4fe2 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTBackedTextInputViewProtocol.h @@ -0,0 +1,50 @@ +/* + * 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 + +@protocol RCTBackedTextInputDelegate; +@class RCTTextAttributes; + +NS_ASSUME_NONNULL_BEGIN + +@protocol RCTBackedTextInputViewProtocol + +@property (nonatomic, copy, nullable) NSAttributedString *attributedText; +@property (nonatomic, copy, nullable) NSString *placeholder; +@property (nonatomic, strong, nullable) UIColor *placeholderColor; +@property (nonatomic, assign, readonly) BOOL textWasPasted; +@property (nonatomic, assign) UIEdgeInsets textContainerInset; +@property (nonatomic, strong, nullable) UIView *inputAccessoryView; +@property (nonatomic, strong, nullable) UIView *inputView; +@property (nonatomic, weak, nullable) id textInputDelegate; +@property (nonatomic, readonly) CGSize contentSize; +@property (nonatomic, strong, nullable) NSDictionary *defaultTextAttributes; +@property (nonatomic, assign) BOOL contextMenuHidden; +@property (nonatomic, assign, getter=isEditable) BOOL editable; +@property (nonatomic, assign) BOOL caretHidden; +@property (nonatomic, assign) BOOL enablesReturnKeyAutomatically; +@property (nonatomic, assign) UITextFieldViewMode clearButtonMode; +@property (nonatomic, getter=isScrollEnabled) BOOL scrollEnabled; +@property (nonatomic, strong, nullable) NSString *inputAccessoryViewID; + +// This protocol disallows direct access to `selectedTextRange` property because +// unwise usage of it can break the `delegate` behavior. So, we always have to +// explicitly specify should `delegate` be notified about the change or not. +// If the change was initiated programmatically, we must NOT notify the delegate. +// If the change was a result of user actions (like typing or touches), we MUST notify the delegate. +- (void)setSelectedTextRange:(nullable UITextRange *)selectedTextRange NS_UNAVAILABLE; +- (void)setSelectedTextRange:(nullable UITextRange *)selectedTextRange notifyDelegate:(BOOL)notifyDelegate; + +// This protocol disallows direct access to `text` property because +// unwise usage of it can break the `attributeText` behavior. +// Use `attributedText.string` instead. +@property (nonatomic, copy, nullable) NSString *text NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTBaseTextInputShadowView.h b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTBaseTextInputShadowView.h new file mode 100644 index 0000000..44b46db --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTBaseTextInputShadowView.h @@ -0,0 +1,25 @@ +/* + * 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 "RCTBaseTextShadowView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTBaseTextInputShadowView : RCTBaseTextShadowView + +- (instancetype)initWithBridge:(RCTBridge *)bridge; + +@property (nonatomic, copy, nullable) NSString *text; +@property (nonatomic, copy, nullable) NSString *placeholder; +@property (nonatomic, assign) NSInteger maximumNumberOfLines; +@property (nonatomic, copy, nullable) RCTDirectEventBlock onContentSizeChange; + +- (void)uiManagerWillPerformMounting; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTBaseTextInputView.h b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTBaseTextInputView.h new file mode 100644 index 0000000..d73f082 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTBaseTextInputView.h @@ -0,0 +1,63 @@ +/* + * 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 + +#import + +#import "RCTBackedTextInputDelegate.h" +#import "RCTBackedTextInputViewProtocol.h" + +@class RCTBridge; +@class RCTTextAttributes; +@class RCTTextSelection; + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTBaseTextInputView : RCTView + +- (instancetype)initWithBridge:(RCTBridge *)bridge NS_DESIGNATED_INITIALIZER; + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithCoder:(NSCoder *)decoder NS_UNAVAILABLE; +- (instancetype)initWithFrame:(CGRect)frame NS_UNAVAILABLE; + +@property (nonatomic, readonly) UIView *backedTextInputView; + +@property (nonatomic, strong, nullable) RCTTextAttributes *textAttributes; +@property (nonatomic, assign) UIEdgeInsets reactPaddingInsets; +@property (nonatomic, assign) UIEdgeInsets reactBorderInsets; + +@property (nonatomic, copy, nullable) RCTDirectEventBlock onContentSizeChange; +@property (nonatomic, copy, nullable) RCTDirectEventBlock onSelectionChange; +@property (nonatomic, copy, nullable) RCTDirectEventBlock onChange; +@property (nonatomic, copy, nullable) RCTDirectEventBlock onTextInput; +@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; +@property (nonatomic, assign) BOOL clearTextOnFocus; +@property (nonatomic, assign) BOOL secureTextEntry; +@property (nonatomic, copy) RCTTextSelection *selection; +@property (nonatomic, strong, nullable) NSNumber *maxLength; +@property (nonatomic, copy, nullable) NSAttributedString *attributedText; +@property (nonatomic, copy) NSString *inputAccessoryViewID; +@property (nonatomic, assign) UIKeyboardType keyboardType; +@property (nonatomic, assign) BOOL showSoftInputOnFocus; + +/** + Sets selection intext input if both start and end are within range of the text input. + **/ +- (void)setSelectionStart:(NSInteger)start + selectionEnd:(NSInteger)end; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTBaseTextInputViewManager.h b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTBaseTextInputViewManager.h new file mode 100644 index 0000000..5201bdb --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTBaseTextInputViewManager.h @@ -0,0 +1,12 @@ +/* + * 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 "RCTBaseTextViewManager.h" + +@interface RCTBaseTextInputViewManager : RCTBaseTextViewManager + +@end diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTBaseTextShadowView.h b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTBaseTextShadowView.h new file mode 100644 index 0000000..9f2c944 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTBaseTextShadowView.h @@ -0,0 +1,27 @@ +/* + * 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 + +#import "RCTTextAttributes.h" + +NS_ASSUME_NONNULL_BEGIN + +extern NSString *const RCTBaseTextShadowViewEmbeddedShadowViewAttributeName; + +@interface RCTBaseTextShadowView : RCTShadowView { + @protected NSAttributedString *_Nullable cachedAttributedText; + @protected RCTTextAttributes *_Nullable cachedTextAttributes; +} + +@property (nonatomic, strong) RCTTextAttributes *textAttributes; + +- (NSAttributedString *)attributedTextWithBaseTextAttributes:(nullable RCTTextAttributes *)baseTextAttributes; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTBaseTextViewManager.h b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTBaseTextViewManager.h new file mode 100644 index 0000000..b0f9470 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTBaseTextViewManager.h @@ -0,0 +1,16 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTBaseTextViewManager : RCTViewManager + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTConvert+Text.h b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTConvert+Text.h new file mode 100644 index 0000000..eafbdb3 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTConvert+Text.h @@ -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 + +#import "RCTTextTransform.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTConvert (Text) + ++ (UITextAutocorrectionType)UITextAutocorrectionType:(nullable id)json; ++ (UITextSpellCheckingType)UITextSpellCheckingType:(nullable id)json; ++ (RCTTextTransform)RCTTextTransform:(nullable id)json; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTInputAccessoryShadowView.h b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTInputAccessoryShadowView.h new file mode 100644 index 0000000..8ed5110 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTInputAccessoryShadowView.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTInputAccessoryShadowView : RCTShadowView + +@end diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTInputAccessoryView.h b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTInputAccessoryView.h new file mode 100644 index 0000000..d4c48ce --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTInputAccessoryView.h @@ -0,0 +1,17 @@ +/* + * 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 + +@class RCTBridge; +@class RCTInputAccessoryViewContent; + +@interface RCTInputAccessoryView : UIView + +- (instancetype)initWithBridge:(RCTBridge *)bridge; + +@end diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTInputAccessoryViewContent.h b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTInputAccessoryViewContent.h new file mode 100644 index 0000000..f65eea7 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTInputAccessoryViewContent.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTInputAccessoryViewContent : UIView + +@end diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTInputAccessoryViewManager.h b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTInputAccessoryViewManager.h new file mode 100644 index 0000000..251048d --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTInputAccessoryViewManager.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTInputAccessoryViewManager : RCTViewManager + +@end diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTMultilineTextInputView.h b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTMultilineTextInputView.h new file mode 100644 index 0000000..0efd63a --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTMultilineTextInputView.h @@ -0,0 +1,16 @@ +/* + * 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 "RCTBaseTextInputView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTMultilineTextInputView : RCTBaseTextInputView + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTMultilineTextInputViewManager.h b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTMultilineTextInputViewManager.h new file mode 100644 index 0000000..3347fbb --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTMultilineTextInputViewManager.h @@ -0,0 +1,16 @@ +/* + * 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 "RCTBaseTextInputViewManager.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTMultilineTextInputViewManager : RCTBaseTextInputViewManager + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTRawTextShadowView.h b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTRawTextShadowView.h new file mode 100644 index 0000000..1b63014 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTRawTextShadowView.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTRawTextShadowView : RCTShadowView + +@property (nonatomic, copy, nullable) NSString *text; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTRawTextViewManager.h b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTRawTextViewManager.h new file mode 100644 index 0000000..ef9a076 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTRawTextViewManager.h @@ -0,0 +1,16 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTRawTextViewManager : RCTViewManager + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTSinglelineTextInputView.h b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTSinglelineTextInputView.h new file mode 100644 index 0000000..d9450db --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTSinglelineTextInputView.h @@ -0,0 +1,16 @@ +/* + * 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 "RCTBaseTextInputView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTSinglelineTextInputView : RCTBaseTextInputView + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTSinglelineTextInputViewManager.h b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTSinglelineTextInputViewManager.h new file mode 100644 index 0000000..314993a --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTSinglelineTextInputViewManager.h @@ -0,0 +1,16 @@ +/* + * 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 "RCTBaseTextInputViewManager.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTSinglelineTextInputViewManager : RCTBaseTextInputViewManager + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTTextAttributes.h b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTTextAttributes.h new file mode 100644 index 0000000..ce04362 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTTextAttributes.h @@ -0,0 +1,97 @@ +/* + * 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 + +#import + +#import "RCTTextTransform.h" + +NS_ASSUME_NONNULL_BEGIN + +extern NSString *const RCTTextAttributesIsHighlightedAttributeName; +extern NSString *const RCTTextAttributesTagAttributeName; + +/** + * Represents knowledge about all supported *text* attributes + * assigned to some text component such as , , + * and . + */ +@interface RCTTextAttributes : NSObject + +// Color +@property (nonatomic, strong, nullable) UIColor *foregroundColor; +@property (nonatomic, strong, nullable) UIColor *backgroundColor; +@property (nonatomic, assign) CGFloat opacity; +// Font +@property (nonatomic, copy, nullable) NSString *fontFamily; +@property (nonatomic, assign) CGFloat fontSize; +@property (nonatomic, assign) CGFloat fontSizeMultiplier; +@property (nonatomic, assign) CGFloat maxFontSizeMultiplier; +@property (nonatomic, copy, nullable) NSString *fontWeight; +@property (nonatomic, copy, nullable) NSString *fontStyle; +@property (nonatomic, copy, nullable) NSArray *fontVariant; +@property (nonatomic, assign) BOOL allowFontScaling; +@property (nonatomic, assign) CGFloat letterSpacing; +// Paragraph Styles +@property (nonatomic, assign) CGFloat lineHeight; +@property (nonatomic, assign) NSTextAlignment alignment; +@property (nonatomic, assign) NSWritingDirection baseWritingDirection; +// Decoration +@property (nonatomic, strong, nullable) UIColor *textDecorationColor; +@property (nonatomic, assign) NSUnderlineStyle textDecorationStyle; +@property (nonatomic, assign) RCTTextDecorationLineType textDecorationLine; +// Shadow +@property (nonatomic, assign) CGSize textShadowOffset; +@property (nonatomic, assign) CGFloat textShadowRadius; +@property (nonatomic, strong, nullable) UIColor *textShadowColor; +// Special +@property (nonatomic, assign) BOOL isHighlighted; +@property (nonatomic, strong, nullable) NSNumber *tag; +@property (nonatomic, assign) UIUserInterfaceLayoutDirection layoutDirection; +@property (nonatomic, assign) RCTTextTransform textTransform; + +#pragma mark - Inheritance + +- (void)applyTextAttributes:(RCTTextAttributes *)textAttributes; + +#pragma mark - Adapters + +/** + * Text attributes in NSAttributedString terms. + */ +- (NSDictionary *)effectiveTextAttributes; + +/** + * Constructed paragraph style. + */ +- (NSParagraphStyle *_Nullable)effectiveParagraphStyle; + +/** + * Constructed font. + */ +- (UIFont *)effectiveFont; + +/** + * Font size multiplier reflects `allowFontScaling`, `fontSizeMultiplier`, and `maxFontSizeMultiplier`. + */ +- (CGFloat)effectiveFontSizeMultiplier; + +/** + * Foreground and background colors with opacity and right defaults. + */ +- (UIColor *)effectiveForegroundColor; +- (UIColor *)effectiveBackgroundColor; + +/** + * Text transformed per 'none', 'uppercase', 'lowercase', 'capitalize' + */ +- (NSString *)applyTextAttributesToText:(NSString *)text; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTTextSelection.h b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTTextSelection.h new file mode 100644 index 0000000..0bb7583 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTTextSelection.h @@ -0,0 +1,26 @@ +/* + * 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 + +/** + * Object containing information about a TextInput's selection. + */ +@interface RCTTextSelection : NSObject + +@property (nonatomic, assign, readonly) NSInteger start; +@property (nonatomic, assign, readonly) NSInteger end; + +- (instancetype)initWithStart:(NSInteger)start end:(NSInteger)end; + +@end + +@interface RCTConvert (RCTTextSelection) + ++ (RCTTextSelection *)RCTTextSelection:(id)json; + +@end diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTTextShadowView.h b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTTextShadowView.h new file mode 100644 index 0000000..d364db5 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTTextShadowView.h @@ -0,0 +1,28 @@ +/* + * 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 + +#import "RCTBaseTextShadowView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTTextShadowView : RCTBaseTextShadowView + +- (instancetype)initWithBridge:(RCTBridge *)bridge; + +@property (nonatomic, assign) NSInteger maximumNumberOfLines; +@property (nonatomic, assign) NSLineBreakMode lineBreakMode; +@property (nonatomic, assign) BOOL adjustsFontSizeToFit; +@property (nonatomic, assign) CGFloat minimumFontScale; +@property (nonatomic, copy) RCTDirectEventBlock onTextLayout; + +- (void)uiManagerWillPerformMounting; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTTextTransform.h b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTTextTransform.h new file mode 100644 index 0000000..15d328c --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTTextTransform.h @@ -0,0 +1,16 @@ +/* + * 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 + +typedef NS_ENUM(NSInteger, RCTTextTransform) { + RCTTextTransformUndefined = 0, + RCTTextTransformNone, + RCTTextTransformCapitalize, + RCTTextTransformUppercase, + RCTTextTransformLowercase, +}; diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTTextView.h b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTTextView.h new file mode 100644 index 0000000..5928b70 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTTextView.h @@ -0,0 +1,24 @@ +/* + * 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 + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTTextView : UIView + +@property (nonatomic, assign) BOOL selectable; + +- (void)setTextStorage:(NSTextStorage *)textStorage + contentFrame:(CGRect)contentFrame + descendantViews:(NSArray *)descendantViews; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTTextViewManager.h b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTTextViewManager.h new file mode 100644 index 0000000..446a5db --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTTextViewManager.h @@ -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 + +#import "RCTBaseTextViewManager.h" + +@interface RCTTextViewManager : RCTBaseTextViewManager + +@end diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTUITextField.h b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTUITextField.h new file mode 100644 index 0000000..f3b3492 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTUITextField.h @@ -0,0 +1,35 @@ +/* + * 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 + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +/* + * Just regular UITextField... but much better! + */ +@interface RCTUITextField : UITextField + +- (instancetype)initWithCoder:(NSCoder *)decoder NS_UNAVAILABLE; + +@property (nonatomic, weak) id textInputDelegate; + +@property (nonatomic, assign) BOOL caretHidden; +@property (nonatomic, assign) BOOL contextMenuHidden; +@property (nonatomic, assign, readonly) BOOL textWasPasted; +@property (nonatomic, strong, nullable) UIColor *placeholderColor; +@property (nonatomic, assign) UIEdgeInsets textContainerInset; +@property (nonatomic, assign, getter=isEditable) BOOL editable; +@property (nonatomic, getter=isScrollEnabled) BOOL scrollEnabled; +@property (nonatomic, strong, nullable) NSString *inputAccessoryViewID; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTUITextView.h b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTUITextView.h new file mode 100644 index 0000000..5cb03ee --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTUITextView.h @@ -0,0 +1,42 @@ +/* + * 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 + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +/* + * Just regular UITextView... but much better! + */ +@interface RCTUITextView : UITextView + +- (instancetype)initWithFrame:(CGRect)frame textContainer:(nullable NSTextContainer *)textContainer NS_UNAVAILABLE; +- (instancetype)initWithCoder:(NSCoder *)decoder NS_UNAVAILABLE; + +@property (nonatomic, weak) id textInputDelegate; + +@property (nonatomic, assign) BOOL contextMenuHidden; +@property (nonatomic, assign, readonly) BOOL textWasPasted; +@property (nonatomic, copy, nullable) NSString *placeholder; +@property (nonatomic, strong, nullable) UIColor *placeholderColor; + +@property (nonatomic, assign) CGFloat preferredMaxLayoutWidth; + +// The `clearButtonMode` property actually is not supported yet; +// it's declared here only to conform to the interface. +@property (nonatomic, assign) UITextFieldViewMode clearButtonMode; + +@property (nonatomic, assign) BOOL caretHidden; + +@property (nonatomic, strong, nullable) NSString *inputAccessoryViewID; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTVirtualTextShadowView.h b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTVirtualTextShadowView.h new file mode 100644 index 0000000..bce9ea8 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTVirtualTextShadowView.h @@ -0,0 +1,12 @@ +/* + * 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 "RCTBaseTextShadowView.h" + +@interface RCTVirtualTextShadowView : RCTBaseTextShadowView + +@end diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTVirtualTextViewManager.h b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTVirtualTextViewManager.h new file mode 100644 index 0000000..91d4f78 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64/Headers/RCTText/RCTVirtualTextViewManager.h @@ -0,0 +1,12 @@ +/* + * 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 "RCTBaseTextViewManager.h" + +@interface RCTVirtualTextViewManager : RCTBaseTextViewManager + +@end diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64/libReact-RCTText.a b/Frameworks/React-RCTText.xcframework/ios-arm64/libReact-RCTText.a new file mode 100644 index 0000000..17f8350 Binary files /dev/null and b/Frameworks/React-RCTText.xcframework/ios-arm64/libReact-RCTText.a differ diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/NSTextStorage+FontScaling.h b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/NSTextStorage+FontScaling.h new file mode 100644 index 0000000..61b1634 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/NSTextStorage+FontScaling.h @@ -0,0 +1,20 @@ +/* + * 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 + +@interface NSTextStorage (FontScaling) + +- (void)scaleFontSizeToFitSize:(CGSize)size + minimumFontSize:(CGFloat)minimumFontSize + maximumFontSize:(CGFloat)maximumFontSize; + +- (void)scaleFontSizeWithRatio:(CGFloat)ratio + minimumFontSize:(CGFloat)minimumFontSize + maximumFontSize:(CGFloat)maximumFontSize; + +@end diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTBackedTextInputDelegate.h b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTBackedTextInputDelegate.h new file mode 100644 index 0000000..3e1839b --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTBackedTextInputDelegate.h @@ -0,0 +1,42 @@ +/* + * 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 + +@protocol RCTBackedTextInputViewProtocol; + +NS_ASSUME_NONNULL_BEGIN + +@protocol RCTBackedTextInputDelegate + +- (BOOL)textInputShouldBeginEditing; // Return `NO` to disallow editing. +- (void)textInputDidBeginEditing; + +- (BOOL)textInputShouldEndEditing; // Return `YES` to allow editing to stop and to resign first responder status. `NO` to disallow the editing session to end. +- (void)textInputDidEndEditing; // May be called if forced even if `textInputShouldEndEditing` returns `NO` (e.g. view removed from window) or `[textInput endEditing:YES]` called. + +- (BOOL)textInputShouldReturn; // May be called right before `textInputShouldEndEditing` if "Return" button was pressed. +- (void)textInputDidReturn; + +/* + * Called before any change in the TextInput. The delegate has the opportunity to change the replacement string or reject the change completely. + * To change the replacement, return the changed version of the `text`. + * To accept the change, return `text` argument as-is. + * To reject the change, return `nil`. + */ +- (NSString *)textInputShouldChangeText:(NSString *)text inRange:(NSRange)range; +- (void)textInputDidChange; + +- (void)textInputDidChangeSelection; + +@optional + +- (void)scrollViewDidScroll:(UIScrollView *)scrollView; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTBackedTextInputDelegateAdapter.h b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTBackedTextInputDelegateAdapter.h new file mode 100644 index 0000000..a7f3251 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTBackedTextInputDelegateAdapter.h @@ -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 + +#import "RCTBackedTextInputViewProtocol.h" +#import "RCTBackedTextInputDelegate.h" + +NS_ASSUME_NONNULL_BEGIN + +#pragma mark - RCTBackedTextFieldDelegateAdapter (for UITextField) + +@interface RCTBackedTextFieldDelegateAdapter : NSObject + +- (instancetype)initWithTextField:(UITextField *)backedTextInputView; + +- (void)skipNextTextInputDidChangeSelectionEventWithTextRange:(UITextRange *)textRange; +- (void)selectedTextRangeWasSet; + +@end + +#pragma mark - RCTBackedTextViewDelegateAdapter (for UITextView) + +@interface RCTBackedTextViewDelegateAdapter : NSObject + +- (instancetype)initWithTextView:(UITextView *)backedTextInputView; + +- (void)skipNextTextInputDidChangeSelectionEventWithTextRange:(UITextRange *)textRange; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTBackedTextInputViewProtocol.h b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTBackedTextInputViewProtocol.h new file mode 100644 index 0000000..09f4fe2 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTBackedTextInputViewProtocol.h @@ -0,0 +1,50 @@ +/* + * 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 + +@protocol RCTBackedTextInputDelegate; +@class RCTTextAttributes; + +NS_ASSUME_NONNULL_BEGIN + +@protocol RCTBackedTextInputViewProtocol + +@property (nonatomic, copy, nullable) NSAttributedString *attributedText; +@property (nonatomic, copy, nullable) NSString *placeholder; +@property (nonatomic, strong, nullable) UIColor *placeholderColor; +@property (nonatomic, assign, readonly) BOOL textWasPasted; +@property (nonatomic, assign) UIEdgeInsets textContainerInset; +@property (nonatomic, strong, nullable) UIView *inputAccessoryView; +@property (nonatomic, strong, nullable) UIView *inputView; +@property (nonatomic, weak, nullable) id textInputDelegate; +@property (nonatomic, readonly) CGSize contentSize; +@property (nonatomic, strong, nullable) NSDictionary *defaultTextAttributes; +@property (nonatomic, assign) BOOL contextMenuHidden; +@property (nonatomic, assign, getter=isEditable) BOOL editable; +@property (nonatomic, assign) BOOL caretHidden; +@property (nonatomic, assign) BOOL enablesReturnKeyAutomatically; +@property (nonatomic, assign) UITextFieldViewMode clearButtonMode; +@property (nonatomic, getter=isScrollEnabled) BOOL scrollEnabled; +@property (nonatomic, strong, nullable) NSString *inputAccessoryViewID; + +// This protocol disallows direct access to `selectedTextRange` property because +// unwise usage of it can break the `delegate` behavior. So, we always have to +// explicitly specify should `delegate` be notified about the change or not. +// If the change was initiated programmatically, we must NOT notify the delegate. +// If the change was a result of user actions (like typing or touches), we MUST notify the delegate. +- (void)setSelectedTextRange:(nullable UITextRange *)selectedTextRange NS_UNAVAILABLE; +- (void)setSelectedTextRange:(nullable UITextRange *)selectedTextRange notifyDelegate:(BOOL)notifyDelegate; + +// This protocol disallows direct access to `text` property because +// unwise usage of it can break the `attributeText` behavior. +// Use `attributedText.string` instead. +@property (nonatomic, copy, nullable) NSString *text NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTBaseTextInputShadowView.h b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTBaseTextInputShadowView.h new file mode 100644 index 0000000..44b46db --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTBaseTextInputShadowView.h @@ -0,0 +1,25 @@ +/* + * 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 "RCTBaseTextShadowView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTBaseTextInputShadowView : RCTBaseTextShadowView + +- (instancetype)initWithBridge:(RCTBridge *)bridge; + +@property (nonatomic, copy, nullable) NSString *text; +@property (nonatomic, copy, nullable) NSString *placeholder; +@property (nonatomic, assign) NSInteger maximumNumberOfLines; +@property (nonatomic, copy, nullable) RCTDirectEventBlock onContentSizeChange; + +- (void)uiManagerWillPerformMounting; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTBaseTextInputView.h b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTBaseTextInputView.h new file mode 100644 index 0000000..d73f082 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTBaseTextInputView.h @@ -0,0 +1,63 @@ +/* + * 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 + +#import + +#import "RCTBackedTextInputDelegate.h" +#import "RCTBackedTextInputViewProtocol.h" + +@class RCTBridge; +@class RCTTextAttributes; +@class RCTTextSelection; + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTBaseTextInputView : RCTView + +- (instancetype)initWithBridge:(RCTBridge *)bridge NS_DESIGNATED_INITIALIZER; + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithCoder:(NSCoder *)decoder NS_UNAVAILABLE; +- (instancetype)initWithFrame:(CGRect)frame NS_UNAVAILABLE; + +@property (nonatomic, readonly) UIView *backedTextInputView; + +@property (nonatomic, strong, nullable) RCTTextAttributes *textAttributes; +@property (nonatomic, assign) UIEdgeInsets reactPaddingInsets; +@property (nonatomic, assign) UIEdgeInsets reactBorderInsets; + +@property (nonatomic, copy, nullable) RCTDirectEventBlock onContentSizeChange; +@property (nonatomic, copy, nullable) RCTDirectEventBlock onSelectionChange; +@property (nonatomic, copy, nullable) RCTDirectEventBlock onChange; +@property (nonatomic, copy, nullable) RCTDirectEventBlock onTextInput; +@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; +@property (nonatomic, assign) BOOL clearTextOnFocus; +@property (nonatomic, assign) BOOL secureTextEntry; +@property (nonatomic, copy) RCTTextSelection *selection; +@property (nonatomic, strong, nullable) NSNumber *maxLength; +@property (nonatomic, copy, nullable) NSAttributedString *attributedText; +@property (nonatomic, copy) NSString *inputAccessoryViewID; +@property (nonatomic, assign) UIKeyboardType keyboardType; +@property (nonatomic, assign) BOOL showSoftInputOnFocus; + +/** + Sets selection intext input if both start and end are within range of the text input. + **/ +- (void)setSelectionStart:(NSInteger)start + selectionEnd:(NSInteger)end; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTBaseTextInputViewManager.h b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTBaseTextInputViewManager.h new file mode 100644 index 0000000..5201bdb --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTBaseTextInputViewManager.h @@ -0,0 +1,12 @@ +/* + * 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 "RCTBaseTextViewManager.h" + +@interface RCTBaseTextInputViewManager : RCTBaseTextViewManager + +@end diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTBaseTextShadowView.h b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTBaseTextShadowView.h new file mode 100644 index 0000000..9f2c944 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTBaseTextShadowView.h @@ -0,0 +1,27 @@ +/* + * 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 + +#import "RCTTextAttributes.h" + +NS_ASSUME_NONNULL_BEGIN + +extern NSString *const RCTBaseTextShadowViewEmbeddedShadowViewAttributeName; + +@interface RCTBaseTextShadowView : RCTShadowView { + @protected NSAttributedString *_Nullable cachedAttributedText; + @protected RCTTextAttributes *_Nullable cachedTextAttributes; +} + +@property (nonatomic, strong) RCTTextAttributes *textAttributes; + +- (NSAttributedString *)attributedTextWithBaseTextAttributes:(nullable RCTTextAttributes *)baseTextAttributes; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTBaseTextViewManager.h b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTBaseTextViewManager.h new file mode 100644 index 0000000..b0f9470 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTBaseTextViewManager.h @@ -0,0 +1,16 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTBaseTextViewManager : RCTViewManager + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTConvert+Text.h b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTConvert+Text.h new file mode 100644 index 0000000..eafbdb3 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTConvert+Text.h @@ -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 + +#import "RCTTextTransform.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTConvert (Text) + ++ (UITextAutocorrectionType)UITextAutocorrectionType:(nullable id)json; ++ (UITextSpellCheckingType)UITextSpellCheckingType:(nullable id)json; ++ (RCTTextTransform)RCTTextTransform:(nullable id)json; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTInputAccessoryShadowView.h b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTInputAccessoryShadowView.h new file mode 100644 index 0000000..8ed5110 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTInputAccessoryShadowView.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTInputAccessoryShadowView : RCTShadowView + +@end diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTInputAccessoryView.h b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTInputAccessoryView.h new file mode 100644 index 0000000..d4c48ce --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTInputAccessoryView.h @@ -0,0 +1,17 @@ +/* + * 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 + +@class RCTBridge; +@class RCTInputAccessoryViewContent; + +@interface RCTInputAccessoryView : UIView + +- (instancetype)initWithBridge:(RCTBridge *)bridge; + +@end diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTInputAccessoryViewContent.h b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTInputAccessoryViewContent.h new file mode 100644 index 0000000..f65eea7 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTInputAccessoryViewContent.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTInputAccessoryViewContent : UIView + +@end diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTInputAccessoryViewManager.h b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTInputAccessoryViewManager.h new file mode 100644 index 0000000..251048d --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTInputAccessoryViewManager.h @@ -0,0 +1,12 @@ +/* + * 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 + +@interface RCTInputAccessoryViewManager : RCTViewManager + +@end diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTMultilineTextInputView.h b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTMultilineTextInputView.h new file mode 100644 index 0000000..0efd63a --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTMultilineTextInputView.h @@ -0,0 +1,16 @@ +/* + * 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 "RCTBaseTextInputView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTMultilineTextInputView : RCTBaseTextInputView + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTMultilineTextInputViewManager.h b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTMultilineTextInputViewManager.h new file mode 100644 index 0000000..3347fbb --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTMultilineTextInputViewManager.h @@ -0,0 +1,16 @@ +/* + * 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 "RCTBaseTextInputViewManager.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTMultilineTextInputViewManager : RCTBaseTextInputViewManager + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTRawTextShadowView.h b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTRawTextShadowView.h new file mode 100644 index 0000000..1b63014 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTRawTextShadowView.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTRawTextShadowView : RCTShadowView + +@property (nonatomic, copy, nullable) NSString *text; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTRawTextViewManager.h b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTRawTextViewManager.h new file mode 100644 index 0000000..ef9a076 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTRawTextViewManager.h @@ -0,0 +1,16 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTRawTextViewManager : RCTViewManager + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTSinglelineTextInputView.h b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTSinglelineTextInputView.h new file mode 100644 index 0000000..d9450db --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTSinglelineTextInputView.h @@ -0,0 +1,16 @@ +/* + * 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 "RCTBaseTextInputView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTSinglelineTextInputView : RCTBaseTextInputView + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTSinglelineTextInputViewManager.h b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTSinglelineTextInputViewManager.h new file mode 100644 index 0000000..314993a --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTSinglelineTextInputViewManager.h @@ -0,0 +1,16 @@ +/* + * 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 "RCTBaseTextInputViewManager.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTSinglelineTextInputViewManager : RCTBaseTextInputViewManager + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTTextAttributes.h b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTTextAttributes.h new file mode 100644 index 0000000..ce04362 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTTextAttributes.h @@ -0,0 +1,97 @@ +/* + * 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 + +#import + +#import "RCTTextTransform.h" + +NS_ASSUME_NONNULL_BEGIN + +extern NSString *const RCTTextAttributesIsHighlightedAttributeName; +extern NSString *const RCTTextAttributesTagAttributeName; + +/** + * Represents knowledge about all supported *text* attributes + * assigned to some text component such as , , + * and . + */ +@interface RCTTextAttributes : NSObject + +// Color +@property (nonatomic, strong, nullable) UIColor *foregroundColor; +@property (nonatomic, strong, nullable) UIColor *backgroundColor; +@property (nonatomic, assign) CGFloat opacity; +// Font +@property (nonatomic, copy, nullable) NSString *fontFamily; +@property (nonatomic, assign) CGFloat fontSize; +@property (nonatomic, assign) CGFloat fontSizeMultiplier; +@property (nonatomic, assign) CGFloat maxFontSizeMultiplier; +@property (nonatomic, copy, nullable) NSString *fontWeight; +@property (nonatomic, copy, nullable) NSString *fontStyle; +@property (nonatomic, copy, nullable) NSArray *fontVariant; +@property (nonatomic, assign) BOOL allowFontScaling; +@property (nonatomic, assign) CGFloat letterSpacing; +// Paragraph Styles +@property (nonatomic, assign) CGFloat lineHeight; +@property (nonatomic, assign) NSTextAlignment alignment; +@property (nonatomic, assign) NSWritingDirection baseWritingDirection; +// Decoration +@property (nonatomic, strong, nullable) UIColor *textDecorationColor; +@property (nonatomic, assign) NSUnderlineStyle textDecorationStyle; +@property (nonatomic, assign) RCTTextDecorationLineType textDecorationLine; +// Shadow +@property (nonatomic, assign) CGSize textShadowOffset; +@property (nonatomic, assign) CGFloat textShadowRadius; +@property (nonatomic, strong, nullable) UIColor *textShadowColor; +// Special +@property (nonatomic, assign) BOOL isHighlighted; +@property (nonatomic, strong, nullable) NSNumber *tag; +@property (nonatomic, assign) UIUserInterfaceLayoutDirection layoutDirection; +@property (nonatomic, assign) RCTTextTransform textTransform; + +#pragma mark - Inheritance + +- (void)applyTextAttributes:(RCTTextAttributes *)textAttributes; + +#pragma mark - Adapters + +/** + * Text attributes in NSAttributedString terms. + */ +- (NSDictionary *)effectiveTextAttributes; + +/** + * Constructed paragraph style. + */ +- (NSParagraphStyle *_Nullable)effectiveParagraphStyle; + +/** + * Constructed font. + */ +- (UIFont *)effectiveFont; + +/** + * Font size multiplier reflects `allowFontScaling`, `fontSizeMultiplier`, and `maxFontSizeMultiplier`. + */ +- (CGFloat)effectiveFontSizeMultiplier; + +/** + * Foreground and background colors with opacity and right defaults. + */ +- (UIColor *)effectiveForegroundColor; +- (UIColor *)effectiveBackgroundColor; + +/** + * Text transformed per 'none', 'uppercase', 'lowercase', 'capitalize' + */ +- (NSString *)applyTextAttributesToText:(NSString *)text; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTTextSelection.h b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTTextSelection.h new file mode 100644 index 0000000..0bb7583 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTTextSelection.h @@ -0,0 +1,26 @@ +/* + * 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 + +/** + * Object containing information about a TextInput's selection. + */ +@interface RCTTextSelection : NSObject + +@property (nonatomic, assign, readonly) NSInteger start; +@property (nonatomic, assign, readonly) NSInteger end; + +- (instancetype)initWithStart:(NSInteger)start end:(NSInteger)end; + +@end + +@interface RCTConvert (RCTTextSelection) + ++ (RCTTextSelection *)RCTTextSelection:(id)json; + +@end diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTTextShadowView.h b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTTextShadowView.h new file mode 100644 index 0000000..d364db5 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTTextShadowView.h @@ -0,0 +1,28 @@ +/* + * 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 + +#import "RCTBaseTextShadowView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTTextShadowView : RCTBaseTextShadowView + +- (instancetype)initWithBridge:(RCTBridge *)bridge; + +@property (nonatomic, assign) NSInteger maximumNumberOfLines; +@property (nonatomic, assign) NSLineBreakMode lineBreakMode; +@property (nonatomic, assign) BOOL adjustsFontSizeToFit; +@property (nonatomic, assign) CGFloat minimumFontScale; +@property (nonatomic, copy) RCTDirectEventBlock onTextLayout; + +- (void)uiManagerWillPerformMounting; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTTextTransform.h b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTTextTransform.h new file mode 100644 index 0000000..15d328c --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTTextTransform.h @@ -0,0 +1,16 @@ +/* + * 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 + +typedef NS_ENUM(NSInteger, RCTTextTransform) { + RCTTextTransformUndefined = 0, + RCTTextTransformNone, + RCTTextTransformCapitalize, + RCTTextTransformUppercase, + RCTTextTransformLowercase, +}; diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTTextView.h b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTTextView.h new file mode 100644 index 0000000..5928b70 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTTextView.h @@ -0,0 +1,24 @@ +/* + * 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 + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTTextView : UIView + +@property (nonatomic, assign) BOOL selectable; + +- (void)setTextStorage:(NSTextStorage *)textStorage + contentFrame:(CGRect)contentFrame + descendantViews:(NSArray *)descendantViews; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTTextViewManager.h b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTTextViewManager.h new file mode 100644 index 0000000..446a5db --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTTextViewManager.h @@ -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 + +#import "RCTBaseTextViewManager.h" + +@interface RCTTextViewManager : RCTBaseTextViewManager + +@end diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTUITextField.h b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTUITextField.h new file mode 100644 index 0000000..f3b3492 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTUITextField.h @@ -0,0 +1,35 @@ +/* + * 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 + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +/* + * Just regular UITextField... but much better! + */ +@interface RCTUITextField : UITextField + +- (instancetype)initWithCoder:(NSCoder *)decoder NS_UNAVAILABLE; + +@property (nonatomic, weak) id textInputDelegate; + +@property (nonatomic, assign) BOOL caretHidden; +@property (nonatomic, assign) BOOL contextMenuHidden; +@property (nonatomic, assign, readonly) BOOL textWasPasted; +@property (nonatomic, strong, nullable) UIColor *placeholderColor; +@property (nonatomic, assign) UIEdgeInsets textContainerInset; +@property (nonatomic, assign, getter=isEditable) BOOL editable; +@property (nonatomic, getter=isScrollEnabled) BOOL scrollEnabled; +@property (nonatomic, strong, nullable) NSString *inputAccessoryViewID; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTUITextView.h b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTUITextView.h new file mode 100644 index 0000000..5cb03ee --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTUITextView.h @@ -0,0 +1,42 @@ +/* + * 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 + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +/* + * Just regular UITextView... but much better! + */ +@interface RCTUITextView : UITextView + +- (instancetype)initWithFrame:(CGRect)frame textContainer:(nullable NSTextContainer *)textContainer NS_UNAVAILABLE; +- (instancetype)initWithCoder:(NSCoder *)decoder NS_UNAVAILABLE; + +@property (nonatomic, weak) id textInputDelegate; + +@property (nonatomic, assign) BOOL contextMenuHidden; +@property (nonatomic, assign, readonly) BOOL textWasPasted; +@property (nonatomic, copy, nullable) NSString *placeholder; +@property (nonatomic, strong, nullable) UIColor *placeholderColor; + +@property (nonatomic, assign) CGFloat preferredMaxLayoutWidth; + +// The `clearButtonMode` property actually is not supported yet; +// it's declared here only to conform to the interface. +@property (nonatomic, assign) UITextFieldViewMode clearButtonMode; + +@property (nonatomic, assign) BOOL caretHidden; + +@property (nonatomic, strong, nullable) NSString *inputAccessoryViewID; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTVirtualTextShadowView.h b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTVirtualTextShadowView.h new file mode 100644 index 0000000..bce9ea8 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTVirtualTextShadowView.h @@ -0,0 +1,12 @@ +/* + * 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 "RCTBaseTextShadowView.h" + +@interface RCTVirtualTextShadowView : RCTBaseTextShadowView + +@end diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTVirtualTextViewManager.h b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTVirtualTextViewManager.h new file mode 100644 index 0000000..91d4f78 --- /dev/null +++ b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/Headers/RCTText/RCTVirtualTextViewManager.h @@ -0,0 +1,12 @@ +/* + * 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 "RCTBaseTextViewManager.h" + +@interface RCTVirtualTextViewManager : RCTBaseTextViewManager + +@end diff --git a/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/libReact-RCTText.a b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/libReact-RCTText.a new file mode 100644 index 0000000..9a25b70 Binary files /dev/null and b/Frameworks/React-RCTText.xcframework/ios-arm64_x86_64-simulator/libReact-RCTText.a differ diff --git a/Frameworks/React-RCTVibration.xcframework/Info.plist b/Frameworks/React-RCTVibration.xcframework/Info.plist new file mode 100644 index 0000000..25826dc --- /dev/null +++ b/Frameworks/React-RCTVibration.xcframework/Info.plist @@ -0,0 +1,44 @@ + + + + + AvailableLibraries + + + BinaryPath + libReact-RCTVibration.a + LibraryIdentifier + ios-arm64 + LibraryPath + libReact-RCTVibration.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libReact-RCTVibration.a + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libReact-RCTVibration.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/React-RCTVibration.xcframework/ios-arm64/libReact-RCTVibration.a b/Frameworks/React-RCTVibration.xcframework/ios-arm64/libReact-RCTVibration.a new file mode 100644 index 0000000..7e8e808 Binary files /dev/null and b/Frameworks/React-RCTVibration.xcframework/ios-arm64/libReact-RCTVibration.a differ diff --git a/Frameworks/React-RCTVibration.xcframework/ios-arm64_x86_64-simulator/libReact-RCTVibration.a b/Frameworks/React-RCTVibration.xcframework/ios-arm64_x86_64-simulator/libReact-RCTVibration.a new file mode 100644 index 0000000..1005f2f Binary files /dev/null and b/Frameworks/React-RCTVibration.xcframework/ios-arm64_x86_64-simulator/libReact-RCTVibration.a differ diff --git a/Frameworks/React-cxxreact.xcframework/Info.plist b/Frameworks/React-cxxreact.xcframework/Info.plist new file mode 100644 index 0000000..ed0bf7b --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libReact-cxxreact.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libReact-cxxreact.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + libReact-cxxreact.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libReact-cxxreact.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/CxxModule.h b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/CxxModule.h new file mode 100644 index 0000000..64b7db6 --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/CxxModule.h @@ -0,0 +1,258 @@ +/* + * 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. + */ + +#pragma once + +#include +#include +#include +#include + +#include + +using namespace std::placeholders; + +namespace facebook { +namespace react { + +class Instance; + +} +} // namespace facebook + +namespace facebook { +namespace xplat { +namespace module { + +/** + * Base class for Catalyst native modules whose implementations are + * written in C++. Native methods are represented by instances of the + * Method struct. Generally, a derived class will manage an instance + * which represents the data for the module, and non-Catalyst-specific + * methods can be wrapped in lambdas which convert between + * folly::dynamic and native C++ objects. The Callback arguments will + * pass through to js functions passed to the analogous javascript + * methods. At most two callbacks will be converted. Results should + * be passed to the first callback, and errors to the second callback. + * Exceptions thrown by a method will be converted to platform + * exceptions, and handled however they are handled on that platform. + * (TODO mhorowitz #7128529: this exception behavior is not yet + * implemented.) + * + * There are two sets of constructors here. The first set initializes + * a Method using a name and anything convertible to a std::function. + * This is most useful for registering a lambda as a RN method. There + * are overloads to support functions which take no arguments, + * arguments only, and zero, one, or two callbacks. + * + * The second set of methods is similar, but instead of taking a + * function, takes the method name, an object, and a pointer to a + * method on that object. + */ + +class CxxModule { + class AsyncTagType {}; + class SyncTagType {}; + + public: + typedef std::function()> Provider; + + typedef std::function)> Callback; + + constexpr static AsyncTagType AsyncTag = AsyncTagType(); + constexpr static SyncTagType SyncTag = SyncTagType(); + + struct Method { + std::string name; + + size_t callbacks; + bool isPromise; + std::function func; + + std::function syncFunc; + + const char *getType() { + assert(func || syncFunc); + return func ? (isPromise ? "promise" : "async") : "sync"; + } + + // std::function/lambda ctors + + Method(std::string aname, std::function &&afunc) + : name(std::move(aname)), + callbacks(0), + isPromise(false), + func(std::bind(std::move(afunc))) {} + + Method(std::string aname, std::function &&afunc) + : name(std::move(aname)), + callbacks(0), + isPromise(false), + func(std::bind(std::move(afunc), std::placeholders::_1)) {} + + Method( + std::string aname, + std::function &&afunc) + : name(std::move(aname)), + callbacks(1), + isPromise(false), + func(std::bind( + std::move(afunc), + std::placeholders::_1, + std::placeholders::_2)) {} + + Method( + std::string aname, + std::function &&afunc) + : name(std::move(aname)), + callbacks(2), + isPromise(true), + func(std::move(afunc)) {} + + Method( + std::string aname, + std::function &&afunc, + AsyncTagType) + : name(std::move(aname)), + callbacks(2), + isPromise(false), + func(std::move(afunc)) {} + + // method pointer ctors + + template + Method(std::string aname, T *t, void (T::*method)()) + : name(std::move(aname)), + callbacks(0), + isPromise(false), + func(std::bind(method, t)) {} + + template + Method(std::string aname, T *t, void (T::*method)(folly::dynamic)) + : name(std::move(aname)), + callbacks(0), + isPromise(false), + func(std::bind(method, t, std::placeholders::_1)) {} + + template + Method(std::string aname, T *t, void (T::*method)(folly::dynamic, Callback)) + : name(std::move(aname)), + callbacks(1), + isPromise(false), + func(std::bind( + method, + t, + std::placeholders::_1, + std::placeholders::_2)) {} + + template + Method( + std::string aname, + T *t, + void (T::*method)(folly::dynamic, Callback, Callback)) + : name(std::move(aname)), + callbacks(2), + isPromise(true), + func(std::bind( + method, + t, + std::placeholders::_1, + std::placeholders::_2, + std::placeholders::_3)) {} + + template + Method( + std::string aname, + T *t, + void (T::*method)(folly::dynamic, Callback, Callback), + AsyncTagType) + : name(std::move(aname)), + callbacks(2), + isPromise(false), + func(std::bind( + method, + t, + std::placeholders::_1, + std::placeholders::_2, + std::placeholders::_3)) {} + + // sync std::function/lambda ctors + + // Overloads for functions returning void give ambiguity errors. + // I am not sure if this is a runtime/compiler bug, or a + // limitation I do not understand. + + Method( + std::string aname, + std::function &&afunc, + SyncTagType) + : name(std::move(aname)), + callbacks(0), + isPromise(false), + syncFunc([afunc = std::move(afunc)](const folly::dynamic &) { + return afunc(); + }) {} + + Method( + std::string aname, + std::function &&afunc, + SyncTagType) + : name(std::move(aname)), + callbacks(0), + isPromise(false), + syncFunc(std::move(afunc)) {} + }; + + /** + * This may block, if necessary to complete cleanup before the + * object is destroyed. + */ + virtual ~CxxModule() {} + + /** + * @return the name of this module. This will be the name used to {@code + * require()} this module from javascript. + */ + virtual std::string getName() = 0; + + /** + * Each entry in the map will be exported as a property to JS. The + * key is the property name, and the value can be anything. + */ + virtual auto getConstants() -> std::map { + return {}; + }; + + /** + * @return a list of methods this module exports to JS. + */ + virtual auto getMethods() -> std::vector = 0; + + /** + * Called during the construction of CxxNativeModule. + */ + void setInstance(std::weak_ptr instance) { + instance_ = instance; + } + + /** + * @return a weak_ptr to the current instance of the bridge. + * When used with CxxNativeModule, this gives Cxx modules access to functions + * such as `callJSFunction`, allowing them to communicate back to JS outside + * of the regular callbacks. + */ + std::weak_ptr getInstance() { + return instance_; + } + + private: + std::weak_ptr instance_; +}; + +} // namespace module +} // namespace xplat +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/CxxNativeModule.h b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/CxxNativeModule.h new file mode 100644 index 0000000..a10f0ec --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/CxxNativeModule.h @@ -0,0 +1,70 @@ +/* + * 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. + */ + +#pragma once + +#include +#include + +#ifndef RN_EXPORT +#define RN_EXPORT __attribute__((visibility("default"))) +#endif + +namespace facebook { +namespace react { + +class Instance; +class MessageQueueThread; + +typedef void (*WarnOnUsageLogger)(std::string message); + +std::function makeCallback( + std::weak_ptr instance, + const folly::dynamic &callbackId); + +class RN_EXPORT CxxNativeModule : public NativeModule { + public: + CxxNativeModule( + std::weak_ptr instance, + std::string name, + xplat::module::CxxModule::Provider provider, + std::shared_ptr messageQueueThread) + : instance_(instance), + name_(std::move(name)), + provider_(provider), + messageQueueThread_(messageQueueThread) {} + + std::string getName() override; + std::string getSyncMethodName(unsigned int methodId) override; + std::vector getMethods() override; + folly::dynamic getConstants() override; + void invoke(unsigned int reactMethodId, folly::dynamic &¶ms, int callId) + override; + MethodCallResult callSerializableNativeHook( + unsigned int hookId, + folly::dynamic &&args) override; + + static void setShouldWarnOnUse(bool value); + + private: + void lazyInit(); + + std::weak_ptr instance_; + std::string name_; + xplat::module::CxxModule::Provider provider_; + std::shared_ptr messageQueueThread_; + std::unique_ptr module_; + std::vector methods_; + void emitWarnIfWarnOnUsage( + const std::string &method_name, + const std::string &module_name); + + static bool shouldWarnOnUse_; +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/ErrorUtils.h b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/ErrorUtils.h new file mode 100644 index 0000000..3ab715b --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/ErrorUtils.h @@ -0,0 +1,44 @@ +/* + * 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. + */ + +#include + +namespace facebook { +namespace react { + +inline static void +handleJSError(jsi::Runtime &runtime, const jsi::JSError &error, bool isFatal) { + auto errorUtils = runtime.global().getProperty(runtime, "ErrorUtils"); + if (errorUtils.isUndefined() || !errorUtils.isObject() || + !errorUtils.getObject(runtime).hasProperty(runtime, "reportFatalError") || + !errorUtils.getObject(runtime).hasProperty(runtime, "reportError")) { + // ErrorUtils was not set up. This probably means the bundle didn't + // load properly. + throw jsi::JSError( + runtime, + "ErrorUtils is not set up properly. Something probably went wrong trying to load the JS bundle. Trying to report error " + + error.getMessage(), + error.getStack()); + } + + // TODO(janzer): Rewrite this function to return the processed error + // instead of just reporting it through the native module + if (isFatal) { + auto func = errorUtils.asObject(runtime).getPropertyAsFunction( + runtime, "reportFatalError"); + + func.call(runtime, error.value()); + } else { + auto func = errorUtils.asObject(runtime).getPropertyAsFunction( + runtime, "reportError"); + + func.call(runtime, error.value()); + } +} + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/Instance.h b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/Instance.h new file mode 100644 index 0000000..7cd11f9 --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/Instance.h @@ -0,0 +1,179 @@ +/* + * 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. + */ + +#pragma once + +#include +#include +#include +#include + +#include +#include + +#ifndef RN_EXPORT +#define RN_EXPORT __attribute__((visibility("default"))) +#endif + +namespace folly { +struct dynamic; +} + +namespace facebook { +namespace react { + +class JSBigString; +class JSExecutorFactory; +class MessageQueueThread; +class ModuleRegistry; +class RAMBundleRegistry; + +struct InstanceCallback { + virtual ~InstanceCallback() {} + virtual void onBatchComplete() {} + virtual void incrementPendingJSCalls() {} + virtual void decrementPendingJSCalls() {} +}; + +class RN_EXPORT Instance { + public: + ~Instance(); + void initializeBridge( + std::unique_ptr callback, + std::shared_ptr jsef, + std::shared_ptr jsQueue, + std::shared_ptr moduleRegistry); + + void initializeRuntime(); + + void setSourceURL(std::string sourceURL); + + void loadScriptFromString( + std::unique_ptr string, + std::string sourceURL, + bool loadSynchronously); + static bool isHBCBundle(const char *sourcePath); + static bool isIndexedRAMBundle(const char *sourcePath); + static bool isIndexedRAMBundle(std::unique_ptr *string); + void loadRAMBundleFromString( + std::unique_ptr script, + const std::string &sourceURL); + void loadRAMBundleFromFile( + const std::string &sourcePath, + const std::string &sourceURL, + bool loadSynchronously); + void loadRAMBundle( + std::unique_ptr bundleRegistry, + std::unique_ptr startupScript, + std::string startupScriptSourceURL, + bool loadSynchronously); + bool supportsProfiling(); + void setGlobalVariable( + std::string propName, + std::unique_ptr jsonValue); + void *getJavaScriptContext(); + bool isInspectable(); + bool isBatchActive(); + void callJSFunction( + std::string &&module, + std::string &&method, + folly::dynamic &¶ms); + void callJSCallback(uint64_t callbackId, folly::dynamic &¶ms); + + // This method is experimental, and may be modified or removed. + void registerBundle(uint32_t bundleId, const std::string &bundlePath); + + const ModuleRegistry &getModuleRegistry() const; + ModuleRegistry &getModuleRegistry(); + + void handleMemoryPressure(int pressureLevel); + + /** + * JS CallInvoker is used by TurboModules to schedule work on the JS thread. + * + * Why is the bridge creating JS CallInvoker? + * + * - After every Native -> JS call in the TurboModule system, the bridge + * needs to flush all queued NativeModule method calls. The bridge must + * also dispatch onBatchComplete if the queue of NativeModule method calls + * was not empty. + */ + std::shared_ptr getJSCallInvoker(); + + /** + * Native CallInvoker is used by TurboModules to schedule work on the + * NativeModule thread(s). + * + * Why is the bridge decorating native CallInvoker? + * + * - The bridge must be informed of all TurboModule async method calls. Why? + * When all queued NativeModule method calls are flushed by a call from + * Native -> JS, if that queue was non-zero in size, JsToNativeBridge + * dispatches onBatchComplete. When we turn our NativeModules to + * TurboModuels, there will be less and less pending NativeModule method + * calls, so onBatchComplete will not fire as often. Therefore, the bridge + * needs to know how many TurboModule async method calls have been completed + * since the last time the bridge was flushed. If this number is non-zero, + * we fire onBatchComplete. + * + * Why can't we just create and return a new native CallInvoker? + * + * - On Android, we have one NativeModule thread. That thread is created and + * managed outisde of NativeToJsBridge. On iOS, we have one MethodQueue per + * module. Those MethodQueues are also created and managed outside of + * NativeToJsBridge. Therefore, we need to pass in a CallInvoker that + * schedules work on the respective thread. + */ + std::shared_ptr getDecoratedNativeCallInvoker( + std::shared_ptr nativeInvoker); + + /** + * RuntimeExecutor is used by Fabric to access the jsi::Runtime. + */ + RuntimeExecutor getRuntimeExecutor(); + + private: + void callNativeModules(folly::dynamic &&calls, bool isEndOfBatch); + void loadBundle( + std::unique_ptr bundleRegistry, + std::unique_ptr startupScript, + std::string startupScriptSourceURL); + void loadBundleSync( + std::unique_ptr bundleRegistry, + std::unique_ptr startupScript, + std::string startupScriptSourceURL); + + std::shared_ptr callback_; + std::shared_ptr nativeToJsBridge_; + std::shared_ptr moduleRegistry_; + + std::mutex m_syncMutex; + std::condition_variable m_syncCV; + bool m_syncReady = false; + + class JSCallInvoker : public CallInvoker { + private: + std::weak_ptr m_nativeToJsBridge; + std::mutex m_mutex; + bool m_shouldBuffer = true; + std::list> m_workBuffer; + + void scheduleAsync(std::function &&work); + + public: + void setNativeToJsBridgeAndFlushCalls( + std::weak_ptr nativeToJsBridge); + void invokeAsync(std::function &&work) override; + void invokeSync(std::function &&work) override; + }; + + std::shared_ptr jsCallInvoker_ = + std::make_shared(); +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/JSBigString.h b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/JSBigString.h new file mode 100644 index 0000000..c4996c4 --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/JSBigString.h @@ -0,0 +1,137 @@ +/* + * 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. + */ + +#pragma once + +#include + +#ifndef RN_EXPORT +#ifdef _MSC_VER +#define RN_EXPORT +#else +#define RN_EXPORT __attribute__((visibility("default"))) +#endif +#endif + +namespace facebook { +namespace react { + +// JSExecutor functions sometimes take large strings, on the order of +// megabytes. Copying these can be expensive. Introducing a +// move-only, non-CopyConstructible type will let the compiler ensure +// that no copies occur. folly::MoveWrapper should be used when a +// large string needs to be curried into a std::function<>, which must +// by CopyConstructible. + +class JSBigString { + public: + JSBigString() = default; + + // Not copyable + JSBigString(const JSBigString &) = delete; + JSBigString &operator=(const JSBigString &) = delete; + + virtual ~JSBigString() {} + + virtual bool isAscii() const = 0; + + // This needs to be a \0 terminated string + virtual const char *c_str() const = 0; + + // Length of the c_str without the NULL byte. + virtual size_t size() const = 0; +}; + +// Concrete JSBigString implementation which holds a std::string +// instance. +class JSBigStdString : public JSBigString { + public: + JSBigStdString(std::string str, bool isAscii = false) + : m_isAscii(isAscii), m_str(std::move(str)) {} + + bool isAscii() const override { + return m_isAscii; + } + + const char *c_str() const override { + return m_str.c_str(); + } + + size_t size() const override { + return m_str.size(); + } + + private: + bool m_isAscii; + std::string m_str; +}; + +// Concrete JSBigString implementation which holds a heap-allocated +// buffer, and provides an accessor for writing to it. This can be +// used to construct a JSBigString in place, such as by reading from a +// file. +class RN_EXPORT JSBigBufferString : public JSBigString { + public: + JSBigBufferString(size_t size) : m_data(new char[size + 1]), m_size(size) { + // Guarantee nul-termination. The caller is responsible for + // filling in the rest of m_data. + m_data[m_size] = '\0'; + } + + ~JSBigBufferString() { + delete[] m_data; + } + + bool isAscii() const override { + return true; + } + + const char *c_str() const override { + return m_data; + } + + size_t size() const override { + return m_size; + } + + char *data() { + return m_data; + } + + private: + char *m_data; + size_t m_size; +}; + +// JSBigString interface implemented by a file-backed mmap region. +class RN_EXPORT JSBigFileString : public JSBigString { + public: + JSBigFileString(int fd, size_t size, off_t offset = 0); + ~JSBigFileString(); + + bool isAscii() const override { + return true; + } + + const char *c_str() const override; + + size_t size() const override; + int fd() const; + + static std::unique_ptr fromPath( + const std::string &sourceURL); + + private: + int m_fd; // The file descriptor being mmaped + size_t m_size; // The size of the mmaped region + mutable off_t m_pageOff; // The offset in the mmaped region to the data. + off_t m_mapOff; // The offset in the file to the mmaped region. + mutable const char *m_data; // Pointer to the mmaped region. +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/JSBundleType.h b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/JSBundleType.h new file mode 100644 index 0000000..be39711 --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/JSBundleType.h @@ -0,0 +1,69 @@ +/* + * 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. + */ + +#pragma once + +#include +#include +#include + +#ifndef RN_EXPORT +#define RN_EXPORT __attribute__((visibility("default"))) +#endif + +namespace facebook { +namespace react { + +/* + * ScriptTag + * + * Scripts given to the JS Executors to run could be in any of the following + * formats. They are tagged so the executor knows how to run them. + */ +enum struct ScriptTag { + String = 0, + RAMBundle, + HBCBundle, +}; + +/** + * BundleHeader + * + * RAM bundles and BC bundles begin with headers. For RAM bundles this is + * 4 bytes, for BC bundles this is 12 bytes. This structure holds the first 12 + * bytes from a bundle in a way that gives access to that information. + */ +FOLLY_PACK_PUSH +struct FOLLY_PACK_ATTR BundleHeader { + BundleHeader() { + std::memset(this, 0, sizeof(BundleHeader)); + } + + uint32_t magic; + uint32_t reserved_; + uint32_t version; +}; +FOLLY_PACK_POP + +/** + * parseTypeFromHeader + * + * Takes the first 8 bytes of a bundle, and returns a tag describing the + * bundle's format. + */ +RN_EXPORT ScriptTag parseTypeFromHeader(const BundleHeader &header); + +/** + * stringForScriptTag + * + * Convert an `ScriptTag` enum into a string, useful for emitting in errors + * and diagnostic messages. + */ +RN_EXPORT const char *stringForScriptTag(const ScriptTag &tag); + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/JSExecutor.h b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/JSExecutor.h new file mode 100644 index 0000000..b3b29d1 --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/JSExecutor.h @@ -0,0 +1,144 @@ +/* + * 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. + */ + +#pragma once + +#include +#include + +#include +#include + +#ifndef RN_EXPORT +#define RN_EXPORT __attribute__((visibility("default"))) +#endif + +namespace facebook { +namespace react { + +class JSBigString; +class JSExecutor; +class JSModulesUnbundle; +class MessageQueueThread; +class ModuleRegistry; +class RAMBundleRegistry; + +// This interface describes the delegate interface required by +// Executor implementations to call from JS into native code. +class ExecutorDelegate { + public: + virtual ~ExecutorDelegate() {} + + virtual std::shared_ptr getModuleRegistry() = 0; + + virtual void callNativeModules( + JSExecutor &executor, + folly::dynamic &&calls, + bool isEndOfBatch) = 0; + virtual MethodCallResult callSerializableNativeHook( + JSExecutor &executor, + unsigned int moduleId, + unsigned int methodId, + folly::dynamic &&args) = 0; +}; + +using NativeExtensionsProvider = + std::function; + +class JSExecutorFactory { + public: + virtual std::unique_ptr createJSExecutor( + std::shared_ptr delegate, + std::shared_ptr jsQueue) = 0; + virtual ~JSExecutorFactory() {} +}; + +class RN_EXPORT JSExecutor { + public: + /** + * Prepares the JS runtime for React Native by installing global variables. + * Called once before any JS is evaluated. + */ + virtual void initializeRuntime() = 0; + /** + * Execute an application script bundle in the JS context. + */ + virtual void loadBundle( + std::unique_ptr script, + std::string sourceURL) = 0; + + /** + * Add an application "RAM" bundle registry + */ + virtual void setBundleRegistry( + std::unique_ptr bundleRegistry) = 0; + + /** + * Register a file path for an additional "RAM" bundle + */ + virtual void registerBundle( + uint32_t bundleId, + const std::string &bundlePath) = 0; + + /** + * Executes BatchedBridge.callFunctionReturnFlushedQueue with the module ID, + * method ID and optional additional arguments in JS. The executor is + * responsible for using Bridge->callNativeModules to invoke any necessary + * native modules methods. + */ + virtual void callFunction( + const std::string &moduleId, + const std::string &methodId, + const folly::dynamic &arguments) = 0; + + /** + * Executes BatchedBridge.invokeCallbackAndReturnFlushedQueue with the cbID, + * and optional additional arguments in JS and returns the next queue. The + * executor is responsible for using Bridge->callNativeModules to invoke any + * necessary native modules methods. + */ + virtual void invokeCallback( + const double callbackId, + const folly::dynamic &arguments) = 0; + + virtual void setGlobalVariable( + std::string propName, + std::unique_ptr jsonValue) = 0; + + virtual void *getJavaScriptContext() { + return nullptr; + } + + /** + * Returns whether or not the underlying executor supports debugging via the + * Chrome remote debugging protocol. + */ + virtual bool isInspectable() { + return false; + } + + /** + * The description is displayed in the dev menu, if there is one in + * this build. There is a default, but if this method returns a + * non-empty string, it will be used instead. + */ + virtual std::string getDescription() = 0; + + virtual void handleMemoryPressure(__unused int pressureLevel) {} + + virtual void destroy() {} + virtual ~JSExecutor() {} + + virtual void flush() {} + + static std::string getSyntheticBundlePath( + uint32_t bundleId, + const std::string &bundlePath); +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/JSIndexedRAMBundle.h b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/JSIndexedRAMBundle.h new file mode 100644 index 0000000..3045eb6 --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/JSIndexedRAMBundle.h @@ -0,0 +1,73 @@ +/* + * 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. + */ + +#pragma once + +#include +#include + +#include +#include + +#ifndef RN_EXPORT +#define RN_EXPORT __attribute__((visibility("default"))) +#endif + +namespace facebook { +namespace react { + +class RN_EXPORT JSIndexedRAMBundle : public JSModulesUnbundle { + public: + static std::function(std::string)> + buildFactory(); + + // Throws std::runtime_error on failure. + JSIndexedRAMBundle(const char *sourceURL); + JSIndexedRAMBundle(std::unique_ptr script); + + // Throws std::runtime_error on failure. + std::unique_ptr getStartupCode(); + // Throws std::runtime_error on failure. + Module getModule(uint32_t moduleId) const override; + + private: + struct ModuleData { + uint32_t offset; + uint32_t length; + }; + static_assert( + sizeof(ModuleData) == 8, + "ModuleData must not have any padding and use sizes matching input files"); + + struct ModuleTable { + size_t numEntries; + std::unique_ptr data; + ModuleTable() : numEntries(0){}; + ModuleTable(size_t entries) + : numEntries(entries), + data(std::unique_ptr(new ModuleData[numEntries])){}; + size_t byteLength() const { + return numEntries * sizeof(ModuleData); + } + }; + + void init(); + std::string getModuleCode(const uint32_t id) const; + void readBundle(char *buffer, const std::streamsize bytes) const; + void readBundle( + char *buffer, + const std::streamsize bytes, + const std::istream::pos_type position) const; + + mutable std::unique_ptr m_bundle; + ModuleTable m_table; + size_t m_baseOffset; + std::unique_ptr m_startupCode; +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/JSModulesUnbundle.h b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/JSModulesUnbundle.h new file mode 100644 index 0000000..52103f7 --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/JSModulesUnbundle.h @@ -0,0 +1,48 @@ +/* + * 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. + */ + +#pragma once + +#include +#include +#include + +#include + +namespace facebook { +namespace react { + +class JSModulesUnbundle { + /** + * Represents the set of JavaScript modules that the application consists of. + * The source code of each module can be retrieved by module ID. + * + * The class is non-copyable because copying instances might involve copying + * several megabytes of memory. + */ + public: + class ModuleNotFound : public std::out_of_range { + public: + using std::out_of_range::out_of_range; + ModuleNotFound(uint32_t moduleId) + : std::out_of_range::out_of_range( + folly::to("Module not found: ", moduleId)) {} + }; + struct Module { + std::string name; + std::string code; + }; + JSModulesUnbundle() {} + virtual ~JSModulesUnbundle() {} + virtual Module getModule(uint32_t moduleId) const = 0; + + private: + JSModulesUnbundle(const JSModulesUnbundle &) = delete; +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/JsArgumentHelpers-inl.h b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/JsArgumentHelpers-inl.h new file mode 100644 index 0000000..fa76074 --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/JsArgumentHelpers-inl.h @@ -0,0 +1,120 @@ +/* + * 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. + */ + +#pragma once +#include + +namespace facebook { +namespace xplat { + +namespace detail { + +template +R jsArg1(const folly::dynamic &arg, M asFoo, const T &...desc) { + try { + return (arg.*asFoo)(); + } catch (const folly::TypeError &ex) { + throw JsArgumentException(folly::to( + "Error converting javascript arg ", desc..., " to C++: ", ex.what())); + } catch (const std::range_error &ex) { + throw JsArgumentException(folly::to( + "Could not convert argument ", + desc..., + " to required type: ", + ex.what())); + } +} + +} // namespace detail + +template +R jsArg( + const folly::dynamic &arg, + R (folly::dynamic::*asFoo)() const, + const T &...desc) { + return detail::jsArg1(arg, asFoo, desc...); +} + +template +R jsArg( + const folly::dynamic &arg, + R (folly::dynamic::*asFoo)() const &, + const T &...desc) { + return detail::jsArg1(arg, asFoo, desc...); +} + +template +// NOLINTNEXTLINE (T62192316) +typename detail::is_dynamic::type &jsArgAsDynamic(T &&args, size_t n) { + try { + return args[n]; + } catch (const std::out_of_range &ex) { + // Use 1-base counting for argument description. + throw JsArgumentException(folly::to( + "JavaScript provided ", + args.size(), + " arguments for C++ method which references at least ", + n + 1, + " arguments: ", + ex.what())); + } +} + +template +R jsArgN( + const folly::dynamic &args, + size_t n, + R (folly::dynamic::*asFoo)() const) { + return jsArg(jsArgAsDynamic(args, n), asFoo, n); +} +template +R jsArgN( + const folly::dynamic &args, + size_t n, + R (folly::dynamic::*asFoo)() const &) { + return jsArg(jsArgAsDynamic(args, n), asFoo, n); +} + +namespace detail { + +// This is a helper for jsArgAsArray and jsArgAsObject. + +template +typename detail::is_dynamic::type &jsArgAsType( + T &&args, + size_t n, + const char *required, + bool (folly::dynamic::*isFoo)() const) { + T &ret = jsArgAsDynamic(args, n); + if ((ret.*isFoo)()) { + return ret; + } + + // Use 1-base counting for argument description. + throw JsArgumentException(folly::to( + "Argument ", + n + 1, + " of type ", + ret.typeName(), + " is not required type ", + required)); +} + +} // end namespace detail + +template +typename detail::is_dynamic::type &jsArgAsArray(T &&args, size_t n) { + return detail::jsArgAsType(args, n, "Array", &folly::dynamic::isArray); +} + +template +typename detail::is_dynamic::type &jsArgAsObject(T &&args, size_t n) { + return detail::jsArgAsType(args, n, "Object", &folly::dynamic::isObject); +} + +} // namespace xplat +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/JsArgumentHelpers.h b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/JsArgumentHelpers.h new file mode 100644 index 0000000..25702ba --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/JsArgumentHelpers.h @@ -0,0 +1,125 @@ +/* + * 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. + */ + +#pragma once + +#include +#include + +#include +#include + +// When building a cross-platform module for React Native, arguments passed +// from JS are represented as a folly::dynamic. This class provides helpers to +// extract arguments from the folly::dynamic to concrete types usable by +// cross-platform code, and converting exceptions to a JsArgumentException so +// they can be caught and reported to RN consistently. The goal is to make the +// jsArgAs... methods at the end simple to use should be most common, but any +// non-detail method can be used when needed. + +namespace facebook { +namespace xplat { + +class JsArgumentException : public std::logic_error { + public: + JsArgumentException(const std::string &msg) : std::logic_error(msg) {} +}; + +// This extracts a single argument by calling the given method pointer on it. +// If an exception is thrown, the additional arguments are passed to +// folly::to<> to be included in the exception string. This will be most +// commonly used when extracting values from non-scalar argument. The second +// overload accepts ref-qualified member functions. + +template +R jsArg( + const folly::dynamic &arg, + R (folly::dynamic::*asFoo)() const, + const T &...desc); +template +R jsArg( + const folly::dynamic &arg, + R (folly::dynamic::*asFoo)() const &, + const T &...desc); + +// This is like jsArg, but a operates on a dynamic representing an array of +// arguments. The argument n is used both to index the array and build the +// exception message, if any. It can be used directly, but will more often be +// used by the type-specific methods following. + +template +R jsArgN( + const folly::dynamic &args, + size_t n, + R (folly::dynamic::*asFoo)() const); +template +R jsArgN( + const folly::dynamic &args, + size_t n, + R (folly::dynamic::*asFoo)() const &); + +namespace detail { + +// This is a type helper to implement functions which should work on both const +// and non-const folly::dynamic arguments, and return a type with the same +// constness. Basically, it causes the templates which use it to be defined +// only for types compatible with folly::dynamic. +template +struct is_dynamic { + typedef typename std:: + enable_if::value, T>::type type; +}; + +} // end namespace detail + +// Easy to use conversion helpers are here: + +// Extract the n'th arg from the given dynamic, as a dynamic. Throws a +// JsArgumentException if there is no n'th arg in the input. +template +typename detail::is_dynamic::type &jsArgAsDynamic(T &&args, size_t n); + +// Extract the n'th arg from the given dynamic, as a dynamic Array. Throws a +// JsArgumentException if there is no n'th arg in the input, or it is not an +// Array. +template +typename detail::is_dynamic::type &jsArgAsArray(T &&args, size_t n); + +// Extract the n'th arg from the given dynamic, as a dynamic Object. Throws a +// JsArgumentException if there is no n'th arg in the input, or it is not an +// Object. +template +typename detail::is_dynamic::type &jsArgAsObject(T &&args, size_t n); + +// Extract the n'th arg from the given dynamic, as a bool. Throws a +// JsArgumentException if this fails for some reason. +inline bool jsArgAsBool(const folly::dynamic &args, size_t n) { + return jsArgN(args, n, &folly::dynamic::asBool); +} + +// Extract the n'th arg from the given dynamic, as an integer. Throws a +// JsArgumentException if this fails for some reason. +inline int64_t jsArgAsInt(const folly::dynamic &args, size_t n) { + return jsArgN(args, n, &folly::dynamic::asInt); +} + +// Extract the n'th arg from the given dynamic, as a double. Throws a +// JsArgumentException if this fails for some reason. +inline double jsArgAsDouble(const folly::dynamic &args, size_t n) { + return jsArgN(args, n, &folly::dynamic::asDouble); +} + +// Extract the n'th arg from the given dynamic, as a string. Throws a +// JsArgumentException if this fails for some reason. +inline std::string jsArgAsString(const folly::dynamic &args, size_t n) { + return jsArgN(args, n, &folly::dynamic::asString); +} + +} // namespace xplat +} // namespace facebook + +#include diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/MessageQueueThread.h b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/MessageQueueThread.h new file mode 100644 index 0000000..9026a0b --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/MessageQueueThread.h @@ -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. + */ + +#pragma once + +#include +#include +#include + +namespace facebook { +namespace react { + +class MessageQueueThread { + public: + virtual ~MessageQueueThread() {} + virtual void runOnQueue(std::function &&) = 0; + // runOnQueueSync and quitSynchronous are dangerous. They should only be + // used for initialization and cleanup. + virtual void runOnQueueSync(std::function &&) = 0; + // Once quitSynchronous() returns, no further work should run on the queue. + virtual void quitSynchronous() = 0; +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/MethodCall.h b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/MethodCall.h new file mode 100644 index 0000000..665cd70 --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/MethodCall.h @@ -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. + */ + +#pragma once + +#include +#include +#include + +#include + +namespace facebook { +namespace react { + +struct MethodCall { + int moduleId; + int methodId; + folly::dynamic arguments; + int callId; + + MethodCall(int mod, int meth, folly::dynamic &&args, int cid) + : moduleId(mod), + methodId(meth), + arguments(std::move(args)), + callId(cid) {} +}; + +/// \throws std::invalid_argument +std::vector parseMethodCalls(folly::dynamic &&calls); + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/ModuleRegistry.h b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/ModuleRegistry.h new file mode 100644 index 0000000..fba4496 --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/ModuleRegistry.h @@ -0,0 +1,92 @@ +/* + * 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. + */ + +#pragma once + +#include +#include +#include + +#include +#include +#include + +#ifndef RN_EXPORT +#define RN_EXPORT __attribute__((visibility("default"))) +#endif + +namespace facebook { +namespace react { + +class NativeModule; + +struct ModuleConfig { + size_t index; + folly::dynamic config; +}; + +class RN_EXPORT ModuleRegistry { + public: + // not implemented: + // onBatchComplete: see + // https://our.intern.facebook.com/intern/tasks/?t=5279396 getModule: only + // used by views getAllModules: only used for cleanup; use RAII instead + // notifyCatalystInstanceInitialized: this is really only used by view-related + // code notifyCatalystInstanceDestroy: use RAII instead + + using ModuleNotFoundCallback = std::function; + + ModuleRegistry( + std::vector> modules, + ModuleNotFoundCallback callback = nullptr); + void registerModules(std::vector> modules); + + std::vector moduleNames(); + + folly::Optional getConfig(const std::string &name); + + void callNativeMethod( + unsigned int moduleId, + unsigned int methodId, + folly::dynamic &¶ms, + int callId); + MethodCallResult callSerializableNativeHook( + unsigned int moduleId, + unsigned int methodId, + folly::dynamic &&args); + + std::string getModuleName(unsigned int moduleId); + std::string getModuleSyncMethodName( + unsigned int moduleId, + unsigned int methodName); + + private: + // This is always populated + std::vector> modules_; + + // This is used to extend the population of modulesByName_ if registerModules + // is called after moduleNames + void updateModuleNamesFromIndex(size_t size); + + // This is only populated if moduleNames() is called. Values are indices into + // modules_. + std::unordered_map modulesByName_; + + // This is populated with modules that are requested via getConfig but are + // unknown. An error will be thrown if they are subsequently added to the + // registry. + std::unordered_set unknownModules_; + + // Function will be called if a module was requested but was not found. + // If the function returns true, ModuleRegistry will try to find the module + // again (assuming it's registered) If the functon returns false, + // ModuleRegistry will not try to find the module and return nullptr instead. + ModuleNotFoundCallback moduleNotFoundCallback_; +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/NativeModule.h b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/NativeModule.h new file mode 100644 index 0000000..2441953 --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/NativeModule.h @@ -0,0 +1,45 @@ +/* + * 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. + */ + +#pragma once + +#include +#include + +#include +#include + +namespace facebook { +namespace react { + +struct MethodDescriptor { + std::string name; + // type is one of js MessageQueue.MethodTypes + std::string type; + + MethodDescriptor(std::string n, std::string t) + : name(std::move(n)), type(std::move(t)) {} +}; + +using MethodCallResult = folly::Optional; + +class NativeModule { + public: + virtual ~NativeModule() {} + virtual std::string getName() = 0; + virtual std::string getSyncMethodName(unsigned int methodId) = 0; + virtual std::vector getMethods() = 0; + virtual folly::dynamic getConstants() = 0; + virtual void + invoke(unsigned int reactMethodId, folly::dynamic &¶ms, int callId) = 0; + virtual MethodCallResult callSerializableNativeHook( + unsigned int reactMethodId, + folly::dynamic &&args) = 0; +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/NativeToJsBridge.h b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/NativeToJsBridge.h new file mode 100644 index 0000000..f9548c5 --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/NativeToJsBridge.h @@ -0,0 +1,136 @@ +/* + * 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. + */ + +#pragma once + +#include +#include +#include +#include + +#include +#include +#include + +namespace folly { +struct dynamic; +} + +namespace facebook { +namespace react { + +struct InstanceCallback; +class JsToNativeBridge; +class MessageQueueThread; +class ModuleRegistry; +class RAMBundleRegistry; + +// This class manages calls from native code to JS. It also manages +// executors and their threads. All functions here can be called from +// any thread. +// +// Except for loadBundleSync(), all void methods will queue +// work to run on the jsQueue passed to the ctor, and return +// immediately. +class NativeToJsBridge { + public: + friend class JsToNativeBridge; + + /** + * This must be called on the main JS thread. + */ + NativeToJsBridge( + JSExecutorFactory *jsExecutorFactory, + std::shared_ptr registry, + std::shared_ptr jsQueue, + std::shared_ptr callback); + virtual ~NativeToJsBridge(); + + /** + * Executes a function with the module ID and method ID and any additional + * arguments in JS. + */ + void callFunction( + std::string &&module, + std::string &&method, + folly::dynamic &&args); + + /** + * Invokes a callback with the cbID, and optional additional arguments in JS. + */ + void invokeCallback(double callbackId, folly::dynamic &&args); + + /** + * Sets global variables in the JS Context. + */ + void initializeRuntime(); + + /** + * Starts the JS application. If bundleRegistry is non-null, then it is + * used to fetch JavaScript modules as individual scripts. + * Otherwise, the script is assumed to include all the modules. + */ + void loadBundle( + std::unique_ptr bundleRegistry, + std::unique_ptr startupCode, + std::string sourceURL); + void loadBundleSync( + std::unique_ptr bundleRegistry, + std::unique_ptr startupCode, + std::string sourceURL); + + void registerBundle(uint32_t bundleId, const std::string &bundlePath); + void setGlobalVariable( + std::string propName, + std::unique_ptr jsonValue); + void *getJavaScriptContext(); + bool isInspectable(); + bool isBatchActive(); + + void handleMemoryPressure(int pressureLevel); + + /** + * Synchronously tears down the bridge and the main executor. + */ + void destroy(); + + void runOnExecutorQueue(std::function task); + + /** + * Native CallInvoker is used by TurboModules to schedule work on the + * NativeModule thread(s). + */ + std::shared_ptr getDecoratedNativeCallInvoker( + std::shared_ptr nativeInvoker); + + private: + // This is used to avoid a race condition where a proxyCallback gets queued + // after ~NativeToJsBridge(), on the same thread. In that case, the callback + // will try to run the task on m_callback which will have been destroyed + // within ~NativeToJsBridge(), thus causing a SIGSEGV. + std::shared_ptr m_destroyed; + std::shared_ptr m_delegate; + std::unique_ptr m_executor; + std::shared_ptr m_executorMessageQueueThread; + + // Memoize this on the JS thread, so that it can be inspected from + // any thread later. This assumes inspectability doesn't change for + // a JSExecutor instance, which is true for all existing implementations. + bool m_inspectable; + + // Keep track of whether the JS bundle containing the application logic causes + // exception when evaluated initially. If so, more calls to JS will very + // likely fail as well, so this flag can help prevent them. + bool m_applicationScriptHasFailure = false; + +#ifdef WITH_FBSYSTRACE + std::atomic_uint_least32_t m_systraceCookie = ATOMIC_VAR_INIT(0); +#endif +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/RAMBundleRegistry.h b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/RAMBundleRegistry.h new file mode 100644 index 0000000..9dcb210 --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/RAMBundleRegistry.h @@ -0,0 +1,56 @@ +/* + * 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. + */ + +#pragma once + +#include +#include +#include +#include +#include + +#include + +#ifndef RN_EXPORT +#define RN_EXPORT __attribute__((visibility("default"))) +#endif + +namespace facebook { +namespace react { + +class RN_EXPORT RAMBundleRegistry { + public: + constexpr static uint32_t MAIN_BUNDLE_ID = 0; + + static std::unique_ptr singleBundleRegistry( + std::unique_ptr mainBundle); + static std::unique_ptr multipleBundlesRegistry( + std::unique_ptr mainBundle, + std::function(std::string)> factory); + + explicit RAMBundleRegistry( + std::unique_ptr mainBundle, + std::function(std::string)> factory = + nullptr); + + RAMBundleRegistry(RAMBundleRegistry &&) = default; + RAMBundleRegistry &operator=(RAMBundleRegistry &&) = default; + + void registerBundle(uint32_t bundleId, std::string bundlePath); + JSModulesUnbundle::Module getModule(uint32_t bundleId, uint32_t moduleId); + virtual ~RAMBundleRegistry(){}; + + private: + JSModulesUnbundle *getBundle(uint32_t bundleId) const; + + std::function(std::string)> m_factory; + std::unordered_map m_bundlePaths; + std::unordered_map> m_bundles; +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/ReactMarker.h b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/ReactMarker.h new file mode 100644 index 0000000..875f7b2 --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/ReactMarker.h @@ -0,0 +1,58 @@ +/* + * 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. + */ + +#pragma once + +#ifdef __APPLE__ +#include +#endif + +namespace facebook { +namespace react { +namespace ReactMarker { + +enum ReactMarkerId { + NATIVE_REQUIRE_START, + NATIVE_REQUIRE_STOP, + RUN_JS_BUNDLE_START, + RUN_JS_BUNDLE_STOP, + CREATE_REACT_CONTEXT_STOP, + JS_BUNDLE_STRING_CONVERT_START, + JS_BUNDLE_STRING_CONVERT_STOP, + NATIVE_MODULE_SETUP_START, + NATIVE_MODULE_SETUP_STOP, + REGISTER_JS_SEGMENT_START, + REGISTER_JS_SEGMENT_STOP, + REACT_INSTANCE_INIT_START, + REACT_INSTANCE_INIT_STOP +}; + +#ifdef __APPLE__ +using LogTaggedMarker = + std::function; +using LogTaggedMarkerWithInstanceKey = std::function< + void(const ReactMarkerId, const char *tag, const int instanceKey)>; +#else +typedef void (*LogTaggedMarker)(const ReactMarkerId, const char *tag); +typedef void (*LogTaggedMarkerWithInstanceKey)( + const ReactMarkerId, + const char *tag, + const int instanceKey); +#endif + +#ifndef RN_EXPORT +#define RN_EXPORT __attribute__((visibility("default"))) +#endif + +extern RN_EXPORT LogTaggedMarker logTaggedMarker; +extern RN_EXPORT LogTaggedMarkerWithInstanceKey logTaggedMarkerWithInstanceKey; + +extern RN_EXPORT void logMarker(const ReactMarkerId markerId); + +} // namespace ReactMarker +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/ReactNativeVersion.h b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/ReactNativeVersion.h new file mode 100644 index 0000000..a99f81f --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/ReactNativeVersion.h @@ -0,0 +1,24 @@ +/** + * 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 scripts/set-rn-version.js + */ + +#pragma once + +#include +#include + +namespace facebook::react { + +constexpr struct { + int32_t Major = 0; + int32_t Minor = 67; + int32_t Patch = 5; + std::string_view Prerelease = ""; +} ReactNativeVersion; + +} // namespace facebook::react diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/RecoverableError.h b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/RecoverableError.h new file mode 100644 index 0000000..362fea2 --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/RecoverableError.h @@ -0,0 +1,50 @@ +/* + * 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. + */ + +#pragma once + +#include +#include +#include + +namespace facebook { +namespace react { + +/** + * RecoverableError + * + * An exception that it is expected we should be able to recover from. + */ +struct RecoverableError : public std::exception { + explicit RecoverableError(const std::string &what_) + : m_what{"facebook::react::Recoverable: " + what_} {} + + virtual const char *what() const noexcept override { + return m_what.c_str(); + } + + /** + * runRethrowingAsRecoverable + * + * Helper function that converts any exception of type `E`, thrown within the + * `act` routine into a recoverable error with the same message. + */ + template + inline static void runRethrowingAsRecoverable(std::function act) { + try { + act(); + } catch (const E &err) { + throw RecoverableError(err.what()); + } + } + + private: + std::string m_what; +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/SharedProxyCxxModule.h b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/SharedProxyCxxModule.h new file mode 100644 index 0000000..97d67dd --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/SharedProxyCxxModule.h @@ -0,0 +1,42 @@ +/* + * 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. + */ + +#include + +#include + +namespace facebook { +namespace xplat { +namespace module { + +// Allows a Cxx-module to be shared or reused across multiple React instances +// Caveat: the setInstance call is not forwarded, so usages of getInstance +// inside your module (e.g. dispatching events) will always be nullptr. +class SharedProxyCxxModule : public CxxModule { + public: + explicit SharedProxyCxxModule(std::shared_ptr shared) + : shared_(shared) {} + + std::string getName() override { + return shared_->getName(); + } + + auto getConstants() -> std::map override { + return shared_->getConstants(); + } + + auto getMethods() -> std::vector override { + return shared_->getMethods(); + } + + private: + std::shared_ptr shared_; +}; + +} // namespace module +} // namespace xplat +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/SystraceSection.h b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/SystraceSection.h new file mode 100644 index 0000000..3a59f0e --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64/Headers/cxxreact/SystraceSection.h @@ -0,0 +1,51 @@ +/* + * 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. + */ + +#pragma once + +#ifdef WITH_FBSYSTRACE +#include +#endif + +namespace facebook { +namespace react { + +/** + * This is a convenience class to avoid lots of verbose profiling + * #ifdefs. If WITH_FBSYSTRACE is not defined, the optimizer will + * remove this completely. If it is defined, it will behave as + * FbSystraceSection, with the right tag provided. Use two separate classes to + * to ensure that the ODR rule isn't violated, that is, if WITH_FBSYSTRACE has + * different values in different files, there is no inconsistency in the sizes + * of defined symbols. + */ +#ifdef WITH_FBSYSTRACE +struct ConcreteSystraceSection { + public: + template + explicit ConcreteSystraceSection( + const char *name, + ConvertsToStringPiece &&...args) + : m_section(TRACE_TAG_REACT_CXX_BRIDGE, name, args...) {} + + private: + fbsystrace::FbSystraceSection m_section; +}; +using SystraceSection = ConcreteSystraceSection; +#else +struct DummySystraceSection { + public: + template + explicit DummySystraceSection( + __unused const char *name, + __unused ConvertsToStringPiece &&...args) {} +}; +using SystraceSection = DummySystraceSection; +#endif + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64/libReact-cxxreact.a b/Frameworks/React-cxxreact.xcframework/ios-arm64/libReact-cxxreact.a new file mode 100644 index 0000000..db6d7cd Binary files /dev/null and b/Frameworks/React-cxxreact.xcframework/ios-arm64/libReact-cxxreact.a differ diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/CxxModule.h b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/CxxModule.h new file mode 100644 index 0000000..64b7db6 --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/CxxModule.h @@ -0,0 +1,258 @@ +/* + * 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. + */ + +#pragma once + +#include +#include +#include +#include + +#include + +using namespace std::placeholders; + +namespace facebook { +namespace react { + +class Instance; + +} +} // namespace facebook + +namespace facebook { +namespace xplat { +namespace module { + +/** + * Base class for Catalyst native modules whose implementations are + * written in C++. Native methods are represented by instances of the + * Method struct. Generally, a derived class will manage an instance + * which represents the data for the module, and non-Catalyst-specific + * methods can be wrapped in lambdas which convert between + * folly::dynamic and native C++ objects. The Callback arguments will + * pass through to js functions passed to the analogous javascript + * methods. At most two callbacks will be converted. Results should + * be passed to the first callback, and errors to the second callback. + * Exceptions thrown by a method will be converted to platform + * exceptions, and handled however they are handled on that platform. + * (TODO mhorowitz #7128529: this exception behavior is not yet + * implemented.) + * + * There are two sets of constructors here. The first set initializes + * a Method using a name and anything convertible to a std::function. + * This is most useful for registering a lambda as a RN method. There + * are overloads to support functions which take no arguments, + * arguments only, and zero, one, or two callbacks. + * + * The second set of methods is similar, but instead of taking a + * function, takes the method name, an object, and a pointer to a + * method on that object. + */ + +class CxxModule { + class AsyncTagType {}; + class SyncTagType {}; + + public: + typedef std::function()> Provider; + + typedef std::function)> Callback; + + constexpr static AsyncTagType AsyncTag = AsyncTagType(); + constexpr static SyncTagType SyncTag = SyncTagType(); + + struct Method { + std::string name; + + size_t callbacks; + bool isPromise; + std::function func; + + std::function syncFunc; + + const char *getType() { + assert(func || syncFunc); + return func ? (isPromise ? "promise" : "async") : "sync"; + } + + // std::function/lambda ctors + + Method(std::string aname, std::function &&afunc) + : name(std::move(aname)), + callbacks(0), + isPromise(false), + func(std::bind(std::move(afunc))) {} + + Method(std::string aname, std::function &&afunc) + : name(std::move(aname)), + callbacks(0), + isPromise(false), + func(std::bind(std::move(afunc), std::placeholders::_1)) {} + + Method( + std::string aname, + std::function &&afunc) + : name(std::move(aname)), + callbacks(1), + isPromise(false), + func(std::bind( + std::move(afunc), + std::placeholders::_1, + std::placeholders::_2)) {} + + Method( + std::string aname, + std::function &&afunc) + : name(std::move(aname)), + callbacks(2), + isPromise(true), + func(std::move(afunc)) {} + + Method( + std::string aname, + std::function &&afunc, + AsyncTagType) + : name(std::move(aname)), + callbacks(2), + isPromise(false), + func(std::move(afunc)) {} + + // method pointer ctors + + template + Method(std::string aname, T *t, void (T::*method)()) + : name(std::move(aname)), + callbacks(0), + isPromise(false), + func(std::bind(method, t)) {} + + template + Method(std::string aname, T *t, void (T::*method)(folly::dynamic)) + : name(std::move(aname)), + callbacks(0), + isPromise(false), + func(std::bind(method, t, std::placeholders::_1)) {} + + template + Method(std::string aname, T *t, void (T::*method)(folly::dynamic, Callback)) + : name(std::move(aname)), + callbacks(1), + isPromise(false), + func(std::bind( + method, + t, + std::placeholders::_1, + std::placeholders::_2)) {} + + template + Method( + std::string aname, + T *t, + void (T::*method)(folly::dynamic, Callback, Callback)) + : name(std::move(aname)), + callbacks(2), + isPromise(true), + func(std::bind( + method, + t, + std::placeholders::_1, + std::placeholders::_2, + std::placeholders::_3)) {} + + template + Method( + std::string aname, + T *t, + void (T::*method)(folly::dynamic, Callback, Callback), + AsyncTagType) + : name(std::move(aname)), + callbacks(2), + isPromise(false), + func(std::bind( + method, + t, + std::placeholders::_1, + std::placeholders::_2, + std::placeholders::_3)) {} + + // sync std::function/lambda ctors + + // Overloads for functions returning void give ambiguity errors. + // I am not sure if this is a runtime/compiler bug, or a + // limitation I do not understand. + + Method( + std::string aname, + std::function &&afunc, + SyncTagType) + : name(std::move(aname)), + callbacks(0), + isPromise(false), + syncFunc([afunc = std::move(afunc)](const folly::dynamic &) { + return afunc(); + }) {} + + Method( + std::string aname, + std::function &&afunc, + SyncTagType) + : name(std::move(aname)), + callbacks(0), + isPromise(false), + syncFunc(std::move(afunc)) {} + }; + + /** + * This may block, if necessary to complete cleanup before the + * object is destroyed. + */ + virtual ~CxxModule() {} + + /** + * @return the name of this module. This will be the name used to {@code + * require()} this module from javascript. + */ + virtual std::string getName() = 0; + + /** + * Each entry in the map will be exported as a property to JS. The + * key is the property name, and the value can be anything. + */ + virtual auto getConstants() -> std::map { + return {}; + }; + + /** + * @return a list of methods this module exports to JS. + */ + virtual auto getMethods() -> std::vector = 0; + + /** + * Called during the construction of CxxNativeModule. + */ + void setInstance(std::weak_ptr instance) { + instance_ = instance; + } + + /** + * @return a weak_ptr to the current instance of the bridge. + * When used with CxxNativeModule, this gives Cxx modules access to functions + * such as `callJSFunction`, allowing them to communicate back to JS outside + * of the regular callbacks. + */ + std::weak_ptr getInstance() { + return instance_; + } + + private: + std::weak_ptr instance_; +}; + +} // namespace module +} // namespace xplat +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/CxxNativeModule.h b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/CxxNativeModule.h new file mode 100644 index 0000000..a10f0ec --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/CxxNativeModule.h @@ -0,0 +1,70 @@ +/* + * 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. + */ + +#pragma once + +#include +#include + +#ifndef RN_EXPORT +#define RN_EXPORT __attribute__((visibility("default"))) +#endif + +namespace facebook { +namespace react { + +class Instance; +class MessageQueueThread; + +typedef void (*WarnOnUsageLogger)(std::string message); + +std::function makeCallback( + std::weak_ptr instance, + const folly::dynamic &callbackId); + +class RN_EXPORT CxxNativeModule : public NativeModule { + public: + CxxNativeModule( + std::weak_ptr instance, + std::string name, + xplat::module::CxxModule::Provider provider, + std::shared_ptr messageQueueThread) + : instance_(instance), + name_(std::move(name)), + provider_(provider), + messageQueueThread_(messageQueueThread) {} + + std::string getName() override; + std::string getSyncMethodName(unsigned int methodId) override; + std::vector getMethods() override; + folly::dynamic getConstants() override; + void invoke(unsigned int reactMethodId, folly::dynamic &¶ms, int callId) + override; + MethodCallResult callSerializableNativeHook( + unsigned int hookId, + folly::dynamic &&args) override; + + static void setShouldWarnOnUse(bool value); + + private: + void lazyInit(); + + std::weak_ptr instance_; + std::string name_; + xplat::module::CxxModule::Provider provider_; + std::shared_ptr messageQueueThread_; + std::unique_ptr module_; + std::vector methods_; + void emitWarnIfWarnOnUsage( + const std::string &method_name, + const std::string &module_name); + + static bool shouldWarnOnUse_; +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/ErrorUtils.h b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/ErrorUtils.h new file mode 100644 index 0000000..3ab715b --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/ErrorUtils.h @@ -0,0 +1,44 @@ +/* + * 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. + */ + +#include + +namespace facebook { +namespace react { + +inline static void +handleJSError(jsi::Runtime &runtime, const jsi::JSError &error, bool isFatal) { + auto errorUtils = runtime.global().getProperty(runtime, "ErrorUtils"); + if (errorUtils.isUndefined() || !errorUtils.isObject() || + !errorUtils.getObject(runtime).hasProperty(runtime, "reportFatalError") || + !errorUtils.getObject(runtime).hasProperty(runtime, "reportError")) { + // ErrorUtils was not set up. This probably means the bundle didn't + // load properly. + throw jsi::JSError( + runtime, + "ErrorUtils is not set up properly. Something probably went wrong trying to load the JS bundle. Trying to report error " + + error.getMessage(), + error.getStack()); + } + + // TODO(janzer): Rewrite this function to return the processed error + // instead of just reporting it through the native module + if (isFatal) { + auto func = errorUtils.asObject(runtime).getPropertyAsFunction( + runtime, "reportFatalError"); + + func.call(runtime, error.value()); + } else { + auto func = errorUtils.asObject(runtime).getPropertyAsFunction( + runtime, "reportError"); + + func.call(runtime, error.value()); + } +} + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/Instance.h b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/Instance.h new file mode 100644 index 0000000..7cd11f9 --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/Instance.h @@ -0,0 +1,179 @@ +/* + * 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. + */ + +#pragma once + +#include +#include +#include +#include + +#include +#include + +#ifndef RN_EXPORT +#define RN_EXPORT __attribute__((visibility("default"))) +#endif + +namespace folly { +struct dynamic; +} + +namespace facebook { +namespace react { + +class JSBigString; +class JSExecutorFactory; +class MessageQueueThread; +class ModuleRegistry; +class RAMBundleRegistry; + +struct InstanceCallback { + virtual ~InstanceCallback() {} + virtual void onBatchComplete() {} + virtual void incrementPendingJSCalls() {} + virtual void decrementPendingJSCalls() {} +}; + +class RN_EXPORT Instance { + public: + ~Instance(); + void initializeBridge( + std::unique_ptr callback, + std::shared_ptr jsef, + std::shared_ptr jsQueue, + std::shared_ptr moduleRegistry); + + void initializeRuntime(); + + void setSourceURL(std::string sourceURL); + + void loadScriptFromString( + std::unique_ptr string, + std::string sourceURL, + bool loadSynchronously); + static bool isHBCBundle(const char *sourcePath); + static bool isIndexedRAMBundle(const char *sourcePath); + static bool isIndexedRAMBundle(std::unique_ptr *string); + void loadRAMBundleFromString( + std::unique_ptr script, + const std::string &sourceURL); + void loadRAMBundleFromFile( + const std::string &sourcePath, + const std::string &sourceURL, + bool loadSynchronously); + void loadRAMBundle( + std::unique_ptr bundleRegistry, + std::unique_ptr startupScript, + std::string startupScriptSourceURL, + bool loadSynchronously); + bool supportsProfiling(); + void setGlobalVariable( + std::string propName, + std::unique_ptr jsonValue); + void *getJavaScriptContext(); + bool isInspectable(); + bool isBatchActive(); + void callJSFunction( + std::string &&module, + std::string &&method, + folly::dynamic &¶ms); + void callJSCallback(uint64_t callbackId, folly::dynamic &¶ms); + + // This method is experimental, and may be modified or removed. + void registerBundle(uint32_t bundleId, const std::string &bundlePath); + + const ModuleRegistry &getModuleRegistry() const; + ModuleRegistry &getModuleRegistry(); + + void handleMemoryPressure(int pressureLevel); + + /** + * JS CallInvoker is used by TurboModules to schedule work on the JS thread. + * + * Why is the bridge creating JS CallInvoker? + * + * - After every Native -> JS call in the TurboModule system, the bridge + * needs to flush all queued NativeModule method calls. The bridge must + * also dispatch onBatchComplete if the queue of NativeModule method calls + * was not empty. + */ + std::shared_ptr getJSCallInvoker(); + + /** + * Native CallInvoker is used by TurboModules to schedule work on the + * NativeModule thread(s). + * + * Why is the bridge decorating native CallInvoker? + * + * - The bridge must be informed of all TurboModule async method calls. Why? + * When all queued NativeModule method calls are flushed by a call from + * Native -> JS, if that queue was non-zero in size, JsToNativeBridge + * dispatches onBatchComplete. When we turn our NativeModules to + * TurboModuels, there will be less and less pending NativeModule method + * calls, so onBatchComplete will not fire as often. Therefore, the bridge + * needs to know how many TurboModule async method calls have been completed + * since the last time the bridge was flushed. If this number is non-zero, + * we fire onBatchComplete. + * + * Why can't we just create and return a new native CallInvoker? + * + * - On Android, we have one NativeModule thread. That thread is created and + * managed outisde of NativeToJsBridge. On iOS, we have one MethodQueue per + * module. Those MethodQueues are also created and managed outside of + * NativeToJsBridge. Therefore, we need to pass in a CallInvoker that + * schedules work on the respective thread. + */ + std::shared_ptr getDecoratedNativeCallInvoker( + std::shared_ptr nativeInvoker); + + /** + * RuntimeExecutor is used by Fabric to access the jsi::Runtime. + */ + RuntimeExecutor getRuntimeExecutor(); + + private: + void callNativeModules(folly::dynamic &&calls, bool isEndOfBatch); + void loadBundle( + std::unique_ptr bundleRegistry, + std::unique_ptr startupScript, + std::string startupScriptSourceURL); + void loadBundleSync( + std::unique_ptr bundleRegistry, + std::unique_ptr startupScript, + std::string startupScriptSourceURL); + + std::shared_ptr callback_; + std::shared_ptr nativeToJsBridge_; + std::shared_ptr moduleRegistry_; + + std::mutex m_syncMutex; + std::condition_variable m_syncCV; + bool m_syncReady = false; + + class JSCallInvoker : public CallInvoker { + private: + std::weak_ptr m_nativeToJsBridge; + std::mutex m_mutex; + bool m_shouldBuffer = true; + std::list> m_workBuffer; + + void scheduleAsync(std::function &&work); + + public: + void setNativeToJsBridgeAndFlushCalls( + std::weak_ptr nativeToJsBridge); + void invokeAsync(std::function &&work) override; + void invokeSync(std::function &&work) override; + }; + + std::shared_ptr jsCallInvoker_ = + std::make_shared(); +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/JSBigString.h b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/JSBigString.h new file mode 100644 index 0000000..c4996c4 --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/JSBigString.h @@ -0,0 +1,137 @@ +/* + * 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. + */ + +#pragma once + +#include + +#ifndef RN_EXPORT +#ifdef _MSC_VER +#define RN_EXPORT +#else +#define RN_EXPORT __attribute__((visibility("default"))) +#endif +#endif + +namespace facebook { +namespace react { + +// JSExecutor functions sometimes take large strings, on the order of +// megabytes. Copying these can be expensive. Introducing a +// move-only, non-CopyConstructible type will let the compiler ensure +// that no copies occur. folly::MoveWrapper should be used when a +// large string needs to be curried into a std::function<>, which must +// by CopyConstructible. + +class JSBigString { + public: + JSBigString() = default; + + // Not copyable + JSBigString(const JSBigString &) = delete; + JSBigString &operator=(const JSBigString &) = delete; + + virtual ~JSBigString() {} + + virtual bool isAscii() const = 0; + + // This needs to be a \0 terminated string + virtual const char *c_str() const = 0; + + // Length of the c_str without the NULL byte. + virtual size_t size() const = 0; +}; + +// Concrete JSBigString implementation which holds a std::string +// instance. +class JSBigStdString : public JSBigString { + public: + JSBigStdString(std::string str, bool isAscii = false) + : m_isAscii(isAscii), m_str(std::move(str)) {} + + bool isAscii() const override { + return m_isAscii; + } + + const char *c_str() const override { + return m_str.c_str(); + } + + size_t size() const override { + return m_str.size(); + } + + private: + bool m_isAscii; + std::string m_str; +}; + +// Concrete JSBigString implementation which holds a heap-allocated +// buffer, and provides an accessor for writing to it. This can be +// used to construct a JSBigString in place, such as by reading from a +// file. +class RN_EXPORT JSBigBufferString : public JSBigString { + public: + JSBigBufferString(size_t size) : m_data(new char[size + 1]), m_size(size) { + // Guarantee nul-termination. The caller is responsible for + // filling in the rest of m_data. + m_data[m_size] = '\0'; + } + + ~JSBigBufferString() { + delete[] m_data; + } + + bool isAscii() const override { + return true; + } + + const char *c_str() const override { + return m_data; + } + + size_t size() const override { + return m_size; + } + + char *data() { + return m_data; + } + + private: + char *m_data; + size_t m_size; +}; + +// JSBigString interface implemented by a file-backed mmap region. +class RN_EXPORT JSBigFileString : public JSBigString { + public: + JSBigFileString(int fd, size_t size, off_t offset = 0); + ~JSBigFileString(); + + bool isAscii() const override { + return true; + } + + const char *c_str() const override; + + size_t size() const override; + int fd() const; + + static std::unique_ptr fromPath( + const std::string &sourceURL); + + private: + int m_fd; // The file descriptor being mmaped + size_t m_size; // The size of the mmaped region + mutable off_t m_pageOff; // The offset in the mmaped region to the data. + off_t m_mapOff; // The offset in the file to the mmaped region. + mutable const char *m_data; // Pointer to the mmaped region. +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/JSBundleType.h b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/JSBundleType.h new file mode 100644 index 0000000..be39711 --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/JSBundleType.h @@ -0,0 +1,69 @@ +/* + * 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. + */ + +#pragma once + +#include +#include +#include + +#ifndef RN_EXPORT +#define RN_EXPORT __attribute__((visibility("default"))) +#endif + +namespace facebook { +namespace react { + +/* + * ScriptTag + * + * Scripts given to the JS Executors to run could be in any of the following + * formats. They are tagged so the executor knows how to run them. + */ +enum struct ScriptTag { + String = 0, + RAMBundle, + HBCBundle, +}; + +/** + * BundleHeader + * + * RAM bundles and BC bundles begin with headers. For RAM bundles this is + * 4 bytes, for BC bundles this is 12 bytes. This structure holds the first 12 + * bytes from a bundle in a way that gives access to that information. + */ +FOLLY_PACK_PUSH +struct FOLLY_PACK_ATTR BundleHeader { + BundleHeader() { + std::memset(this, 0, sizeof(BundleHeader)); + } + + uint32_t magic; + uint32_t reserved_; + uint32_t version; +}; +FOLLY_PACK_POP + +/** + * parseTypeFromHeader + * + * Takes the first 8 bytes of a bundle, and returns a tag describing the + * bundle's format. + */ +RN_EXPORT ScriptTag parseTypeFromHeader(const BundleHeader &header); + +/** + * stringForScriptTag + * + * Convert an `ScriptTag` enum into a string, useful for emitting in errors + * and diagnostic messages. + */ +RN_EXPORT const char *stringForScriptTag(const ScriptTag &tag); + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/JSExecutor.h b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/JSExecutor.h new file mode 100644 index 0000000..b3b29d1 --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/JSExecutor.h @@ -0,0 +1,144 @@ +/* + * 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. + */ + +#pragma once + +#include +#include + +#include +#include + +#ifndef RN_EXPORT +#define RN_EXPORT __attribute__((visibility("default"))) +#endif + +namespace facebook { +namespace react { + +class JSBigString; +class JSExecutor; +class JSModulesUnbundle; +class MessageQueueThread; +class ModuleRegistry; +class RAMBundleRegistry; + +// This interface describes the delegate interface required by +// Executor implementations to call from JS into native code. +class ExecutorDelegate { + public: + virtual ~ExecutorDelegate() {} + + virtual std::shared_ptr getModuleRegistry() = 0; + + virtual void callNativeModules( + JSExecutor &executor, + folly::dynamic &&calls, + bool isEndOfBatch) = 0; + virtual MethodCallResult callSerializableNativeHook( + JSExecutor &executor, + unsigned int moduleId, + unsigned int methodId, + folly::dynamic &&args) = 0; +}; + +using NativeExtensionsProvider = + std::function; + +class JSExecutorFactory { + public: + virtual std::unique_ptr createJSExecutor( + std::shared_ptr delegate, + std::shared_ptr jsQueue) = 0; + virtual ~JSExecutorFactory() {} +}; + +class RN_EXPORT JSExecutor { + public: + /** + * Prepares the JS runtime for React Native by installing global variables. + * Called once before any JS is evaluated. + */ + virtual void initializeRuntime() = 0; + /** + * Execute an application script bundle in the JS context. + */ + virtual void loadBundle( + std::unique_ptr script, + std::string sourceURL) = 0; + + /** + * Add an application "RAM" bundle registry + */ + virtual void setBundleRegistry( + std::unique_ptr bundleRegistry) = 0; + + /** + * Register a file path for an additional "RAM" bundle + */ + virtual void registerBundle( + uint32_t bundleId, + const std::string &bundlePath) = 0; + + /** + * Executes BatchedBridge.callFunctionReturnFlushedQueue with the module ID, + * method ID and optional additional arguments in JS. The executor is + * responsible for using Bridge->callNativeModules to invoke any necessary + * native modules methods. + */ + virtual void callFunction( + const std::string &moduleId, + const std::string &methodId, + const folly::dynamic &arguments) = 0; + + /** + * Executes BatchedBridge.invokeCallbackAndReturnFlushedQueue with the cbID, + * and optional additional arguments in JS and returns the next queue. The + * executor is responsible for using Bridge->callNativeModules to invoke any + * necessary native modules methods. + */ + virtual void invokeCallback( + const double callbackId, + const folly::dynamic &arguments) = 0; + + virtual void setGlobalVariable( + std::string propName, + std::unique_ptr jsonValue) = 0; + + virtual void *getJavaScriptContext() { + return nullptr; + } + + /** + * Returns whether or not the underlying executor supports debugging via the + * Chrome remote debugging protocol. + */ + virtual bool isInspectable() { + return false; + } + + /** + * The description is displayed in the dev menu, if there is one in + * this build. There is a default, but if this method returns a + * non-empty string, it will be used instead. + */ + virtual std::string getDescription() = 0; + + virtual void handleMemoryPressure(__unused int pressureLevel) {} + + virtual void destroy() {} + virtual ~JSExecutor() {} + + virtual void flush() {} + + static std::string getSyntheticBundlePath( + uint32_t bundleId, + const std::string &bundlePath); +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/JSIndexedRAMBundle.h b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/JSIndexedRAMBundle.h new file mode 100644 index 0000000..3045eb6 --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/JSIndexedRAMBundle.h @@ -0,0 +1,73 @@ +/* + * 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. + */ + +#pragma once + +#include +#include + +#include +#include + +#ifndef RN_EXPORT +#define RN_EXPORT __attribute__((visibility("default"))) +#endif + +namespace facebook { +namespace react { + +class RN_EXPORT JSIndexedRAMBundle : public JSModulesUnbundle { + public: + static std::function(std::string)> + buildFactory(); + + // Throws std::runtime_error on failure. + JSIndexedRAMBundle(const char *sourceURL); + JSIndexedRAMBundle(std::unique_ptr script); + + // Throws std::runtime_error on failure. + std::unique_ptr getStartupCode(); + // Throws std::runtime_error on failure. + Module getModule(uint32_t moduleId) const override; + + private: + struct ModuleData { + uint32_t offset; + uint32_t length; + }; + static_assert( + sizeof(ModuleData) == 8, + "ModuleData must not have any padding and use sizes matching input files"); + + struct ModuleTable { + size_t numEntries; + std::unique_ptr data; + ModuleTable() : numEntries(0){}; + ModuleTable(size_t entries) + : numEntries(entries), + data(std::unique_ptr(new ModuleData[numEntries])){}; + size_t byteLength() const { + return numEntries * sizeof(ModuleData); + } + }; + + void init(); + std::string getModuleCode(const uint32_t id) const; + void readBundle(char *buffer, const std::streamsize bytes) const; + void readBundle( + char *buffer, + const std::streamsize bytes, + const std::istream::pos_type position) const; + + mutable std::unique_ptr m_bundle; + ModuleTable m_table; + size_t m_baseOffset; + std::unique_ptr m_startupCode; +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/JSModulesUnbundle.h b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/JSModulesUnbundle.h new file mode 100644 index 0000000..52103f7 --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/JSModulesUnbundle.h @@ -0,0 +1,48 @@ +/* + * 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. + */ + +#pragma once + +#include +#include +#include + +#include + +namespace facebook { +namespace react { + +class JSModulesUnbundle { + /** + * Represents the set of JavaScript modules that the application consists of. + * The source code of each module can be retrieved by module ID. + * + * The class is non-copyable because copying instances might involve copying + * several megabytes of memory. + */ + public: + class ModuleNotFound : public std::out_of_range { + public: + using std::out_of_range::out_of_range; + ModuleNotFound(uint32_t moduleId) + : std::out_of_range::out_of_range( + folly::to("Module not found: ", moduleId)) {} + }; + struct Module { + std::string name; + std::string code; + }; + JSModulesUnbundle() {} + virtual ~JSModulesUnbundle() {} + virtual Module getModule(uint32_t moduleId) const = 0; + + private: + JSModulesUnbundle(const JSModulesUnbundle &) = delete; +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/JsArgumentHelpers-inl.h b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/JsArgumentHelpers-inl.h new file mode 100644 index 0000000..fa76074 --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/JsArgumentHelpers-inl.h @@ -0,0 +1,120 @@ +/* + * 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. + */ + +#pragma once +#include + +namespace facebook { +namespace xplat { + +namespace detail { + +template +R jsArg1(const folly::dynamic &arg, M asFoo, const T &...desc) { + try { + return (arg.*asFoo)(); + } catch (const folly::TypeError &ex) { + throw JsArgumentException(folly::to( + "Error converting javascript arg ", desc..., " to C++: ", ex.what())); + } catch (const std::range_error &ex) { + throw JsArgumentException(folly::to( + "Could not convert argument ", + desc..., + " to required type: ", + ex.what())); + } +} + +} // namespace detail + +template +R jsArg( + const folly::dynamic &arg, + R (folly::dynamic::*asFoo)() const, + const T &...desc) { + return detail::jsArg1(arg, asFoo, desc...); +} + +template +R jsArg( + const folly::dynamic &arg, + R (folly::dynamic::*asFoo)() const &, + const T &...desc) { + return detail::jsArg1(arg, asFoo, desc...); +} + +template +// NOLINTNEXTLINE (T62192316) +typename detail::is_dynamic::type &jsArgAsDynamic(T &&args, size_t n) { + try { + return args[n]; + } catch (const std::out_of_range &ex) { + // Use 1-base counting for argument description. + throw JsArgumentException(folly::to( + "JavaScript provided ", + args.size(), + " arguments for C++ method which references at least ", + n + 1, + " arguments: ", + ex.what())); + } +} + +template +R jsArgN( + const folly::dynamic &args, + size_t n, + R (folly::dynamic::*asFoo)() const) { + return jsArg(jsArgAsDynamic(args, n), asFoo, n); +} +template +R jsArgN( + const folly::dynamic &args, + size_t n, + R (folly::dynamic::*asFoo)() const &) { + return jsArg(jsArgAsDynamic(args, n), asFoo, n); +} + +namespace detail { + +// This is a helper for jsArgAsArray and jsArgAsObject. + +template +typename detail::is_dynamic::type &jsArgAsType( + T &&args, + size_t n, + const char *required, + bool (folly::dynamic::*isFoo)() const) { + T &ret = jsArgAsDynamic(args, n); + if ((ret.*isFoo)()) { + return ret; + } + + // Use 1-base counting for argument description. + throw JsArgumentException(folly::to( + "Argument ", + n + 1, + " of type ", + ret.typeName(), + " is not required type ", + required)); +} + +} // end namespace detail + +template +typename detail::is_dynamic::type &jsArgAsArray(T &&args, size_t n) { + return detail::jsArgAsType(args, n, "Array", &folly::dynamic::isArray); +} + +template +typename detail::is_dynamic::type &jsArgAsObject(T &&args, size_t n) { + return detail::jsArgAsType(args, n, "Object", &folly::dynamic::isObject); +} + +} // namespace xplat +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/JsArgumentHelpers.h b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/JsArgumentHelpers.h new file mode 100644 index 0000000..25702ba --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/JsArgumentHelpers.h @@ -0,0 +1,125 @@ +/* + * 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. + */ + +#pragma once + +#include +#include + +#include +#include + +// When building a cross-platform module for React Native, arguments passed +// from JS are represented as a folly::dynamic. This class provides helpers to +// extract arguments from the folly::dynamic to concrete types usable by +// cross-platform code, and converting exceptions to a JsArgumentException so +// they can be caught and reported to RN consistently. The goal is to make the +// jsArgAs... methods at the end simple to use should be most common, but any +// non-detail method can be used when needed. + +namespace facebook { +namespace xplat { + +class JsArgumentException : public std::logic_error { + public: + JsArgumentException(const std::string &msg) : std::logic_error(msg) {} +}; + +// This extracts a single argument by calling the given method pointer on it. +// If an exception is thrown, the additional arguments are passed to +// folly::to<> to be included in the exception string. This will be most +// commonly used when extracting values from non-scalar argument. The second +// overload accepts ref-qualified member functions. + +template +R jsArg( + const folly::dynamic &arg, + R (folly::dynamic::*asFoo)() const, + const T &...desc); +template +R jsArg( + const folly::dynamic &arg, + R (folly::dynamic::*asFoo)() const &, + const T &...desc); + +// This is like jsArg, but a operates on a dynamic representing an array of +// arguments. The argument n is used both to index the array and build the +// exception message, if any. It can be used directly, but will more often be +// used by the type-specific methods following. + +template +R jsArgN( + const folly::dynamic &args, + size_t n, + R (folly::dynamic::*asFoo)() const); +template +R jsArgN( + const folly::dynamic &args, + size_t n, + R (folly::dynamic::*asFoo)() const &); + +namespace detail { + +// This is a type helper to implement functions which should work on both const +// and non-const folly::dynamic arguments, and return a type with the same +// constness. Basically, it causes the templates which use it to be defined +// only for types compatible with folly::dynamic. +template +struct is_dynamic { + typedef typename std:: + enable_if::value, T>::type type; +}; + +} // end namespace detail + +// Easy to use conversion helpers are here: + +// Extract the n'th arg from the given dynamic, as a dynamic. Throws a +// JsArgumentException if there is no n'th arg in the input. +template +typename detail::is_dynamic::type &jsArgAsDynamic(T &&args, size_t n); + +// Extract the n'th arg from the given dynamic, as a dynamic Array. Throws a +// JsArgumentException if there is no n'th arg in the input, or it is not an +// Array. +template +typename detail::is_dynamic::type &jsArgAsArray(T &&args, size_t n); + +// Extract the n'th arg from the given dynamic, as a dynamic Object. Throws a +// JsArgumentException if there is no n'th arg in the input, or it is not an +// Object. +template +typename detail::is_dynamic::type &jsArgAsObject(T &&args, size_t n); + +// Extract the n'th arg from the given dynamic, as a bool. Throws a +// JsArgumentException if this fails for some reason. +inline bool jsArgAsBool(const folly::dynamic &args, size_t n) { + return jsArgN(args, n, &folly::dynamic::asBool); +} + +// Extract the n'th arg from the given dynamic, as an integer. Throws a +// JsArgumentException if this fails for some reason. +inline int64_t jsArgAsInt(const folly::dynamic &args, size_t n) { + return jsArgN(args, n, &folly::dynamic::asInt); +} + +// Extract the n'th arg from the given dynamic, as a double. Throws a +// JsArgumentException if this fails for some reason. +inline double jsArgAsDouble(const folly::dynamic &args, size_t n) { + return jsArgN(args, n, &folly::dynamic::asDouble); +} + +// Extract the n'th arg from the given dynamic, as a string. Throws a +// JsArgumentException if this fails for some reason. +inline std::string jsArgAsString(const folly::dynamic &args, size_t n) { + return jsArgN(args, n, &folly::dynamic::asString); +} + +} // namespace xplat +} // namespace facebook + +#include diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/MessageQueueThread.h b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/MessageQueueThread.h new file mode 100644 index 0000000..9026a0b --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/MessageQueueThread.h @@ -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. + */ + +#pragma once + +#include +#include +#include + +namespace facebook { +namespace react { + +class MessageQueueThread { + public: + virtual ~MessageQueueThread() {} + virtual void runOnQueue(std::function &&) = 0; + // runOnQueueSync and quitSynchronous are dangerous. They should only be + // used for initialization and cleanup. + virtual void runOnQueueSync(std::function &&) = 0; + // Once quitSynchronous() returns, no further work should run on the queue. + virtual void quitSynchronous() = 0; +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/MethodCall.h b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/MethodCall.h new file mode 100644 index 0000000..665cd70 --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/MethodCall.h @@ -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. + */ + +#pragma once + +#include +#include +#include + +#include + +namespace facebook { +namespace react { + +struct MethodCall { + int moduleId; + int methodId; + folly::dynamic arguments; + int callId; + + MethodCall(int mod, int meth, folly::dynamic &&args, int cid) + : moduleId(mod), + methodId(meth), + arguments(std::move(args)), + callId(cid) {} +}; + +/// \throws std::invalid_argument +std::vector parseMethodCalls(folly::dynamic &&calls); + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/ModuleRegistry.h b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/ModuleRegistry.h new file mode 100644 index 0000000..fba4496 --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/ModuleRegistry.h @@ -0,0 +1,92 @@ +/* + * 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. + */ + +#pragma once + +#include +#include +#include + +#include +#include +#include + +#ifndef RN_EXPORT +#define RN_EXPORT __attribute__((visibility("default"))) +#endif + +namespace facebook { +namespace react { + +class NativeModule; + +struct ModuleConfig { + size_t index; + folly::dynamic config; +}; + +class RN_EXPORT ModuleRegistry { + public: + // not implemented: + // onBatchComplete: see + // https://our.intern.facebook.com/intern/tasks/?t=5279396 getModule: only + // used by views getAllModules: only used for cleanup; use RAII instead + // notifyCatalystInstanceInitialized: this is really only used by view-related + // code notifyCatalystInstanceDestroy: use RAII instead + + using ModuleNotFoundCallback = std::function; + + ModuleRegistry( + std::vector> modules, + ModuleNotFoundCallback callback = nullptr); + void registerModules(std::vector> modules); + + std::vector moduleNames(); + + folly::Optional getConfig(const std::string &name); + + void callNativeMethod( + unsigned int moduleId, + unsigned int methodId, + folly::dynamic &¶ms, + int callId); + MethodCallResult callSerializableNativeHook( + unsigned int moduleId, + unsigned int methodId, + folly::dynamic &&args); + + std::string getModuleName(unsigned int moduleId); + std::string getModuleSyncMethodName( + unsigned int moduleId, + unsigned int methodName); + + private: + // This is always populated + std::vector> modules_; + + // This is used to extend the population of modulesByName_ if registerModules + // is called after moduleNames + void updateModuleNamesFromIndex(size_t size); + + // This is only populated if moduleNames() is called. Values are indices into + // modules_. + std::unordered_map modulesByName_; + + // This is populated with modules that are requested via getConfig but are + // unknown. An error will be thrown if they are subsequently added to the + // registry. + std::unordered_set unknownModules_; + + // Function will be called if a module was requested but was not found. + // If the function returns true, ModuleRegistry will try to find the module + // again (assuming it's registered) If the functon returns false, + // ModuleRegistry will not try to find the module and return nullptr instead. + ModuleNotFoundCallback moduleNotFoundCallback_; +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/NativeModule.h b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/NativeModule.h new file mode 100644 index 0000000..2441953 --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/NativeModule.h @@ -0,0 +1,45 @@ +/* + * 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. + */ + +#pragma once + +#include +#include + +#include +#include + +namespace facebook { +namespace react { + +struct MethodDescriptor { + std::string name; + // type is one of js MessageQueue.MethodTypes + std::string type; + + MethodDescriptor(std::string n, std::string t) + : name(std::move(n)), type(std::move(t)) {} +}; + +using MethodCallResult = folly::Optional; + +class NativeModule { + public: + virtual ~NativeModule() {} + virtual std::string getName() = 0; + virtual std::string getSyncMethodName(unsigned int methodId) = 0; + virtual std::vector getMethods() = 0; + virtual folly::dynamic getConstants() = 0; + virtual void + invoke(unsigned int reactMethodId, folly::dynamic &¶ms, int callId) = 0; + virtual MethodCallResult callSerializableNativeHook( + unsigned int reactMethodId, + folly::dynamic &&args) = 0; +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/NativeToJsBridge.h b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/NativeToJsBridge.h new file mode 100644 index 0000000..f9548c5 --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/NativeToJsBridge.h @@ -0,0 +1,136 @@ +/* + * 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. + */ + +#pragma once + +#include +#include +#include +#include + +#include +#include +#include + +namespace folly { +struct dynamic; +} + +namespace facebook { +namespace react { + +struct InstanceCallback; +class JsToNativeBridge; +class MessageQueueThread; +class ModuleRegistry; +class RAMBundleRegistry; + +// This class manages calls from native code to JS. It also manages +// executors and their threads. All functions here can be called from +// any thread. +// +// Except for loadBundleSync(), all void methods will queue +// work to run on the jsQueue passed to the ctor, and return +// immediately. +class NativeToJsBridge { + public: + friend class JsToNativeBridge; + + /** + * This must be called on the main JS thread. + */ + NativeToJsBridge( + JSExecutorFactory *jsExecutorFactory, + std::shared_ptr registry, + std::shared_ptr jsQueue, + std::shared_ptr callback); + virtual ~NativeToJsBridge(); + + /** + * Executes a function with the module ID and method ID and any additional + * arguments in JS. + */ + void callFunction( + std::string &&module, + std::string &&method, + folly::dynamic &&args); + + /** + * Invokes a callback with the cbID, and optional additional arguments in JS. + */ + void invokeCallback(double callbackId, folly::dynamic &&args); + + /** + * Sets global variables in the JS Context. + */ + void initializeRuntime(); + + /** + * Starts the JS application. If bundleRegistry is non-null, then it is + * used to fetch JavaScript modules as individual scripts. + * Otherwise, the script is assumed to include all the modules. + */ + void loadBundle( + std::unique_ptr bundleRegistry, + std::unique_ptr startupCode, + std::string sourceURL); + void loadBundleSync( + std::unique_ptr bundleRegistry, + std::unique_ptr startupCode, + std::string sourceURL); + + void registerBundle(uint32_t bundleId, const std::string &bundlePath); + void setGlobalVariable( + std::string propName, + std::unique_ptr jsonValue); + void *getJavaScriptContext(); + bool isInspectable(); + bool isBatchActive(); + + void handleMemoryPressure(int pressureLevel); + + /** + * Synchronously tears down the bridge and the main executor. + */ + void destroy(); + + void runOnExecutorQueue(std::function task); + + /** + * Native CallInvoker is used by TurboModules to schedule work on the + * NativeModule thread(s). + */ + std::shared_ptr getDecoratedNativeCallInvoker( + std::shared_ptr nativeInvoker); + + private: + // This is used to avoid a race condition where a proxyCallback gets queued + // after ~NativeToJsBridge(), on the same thread. In that case, the callback + // will try to run the task on m_callback which will have been destroyed + // within ~NativeToJsBridge(), thus causing a SIGSEGV. + std::shared_ptr m_destroyed; + std::shared_ptr m_delegate; + std::unique_ptr m_executor; + std::shared_ptr m_executorMessageQueueThread; + + // Memoize this on the JS thread, so that it can be inspected from + // any thread later. This assumes inspectability doesn't change for + // a JSExecutor instance, which is true for all existing implementations. + bool m_inspectable; + + // Keep track of whether the JS bundle containing the application logic causes + // exception when evaluated initially. If so, more calls to JS will very + // likely fail as well, so this flag can help prevent them. + bool m_applicationScriptHasFailure = false; + +#ifdef WITH_FBSYSTRACE + std::atomic_uint_least32_t m_systraceCookie = ATOMIC_VAR_INIT(0); +#endif +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/RAMBundleRegistry.h b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/RAMBundleRegistry.h new file mode 100644 index 0000000..9dcb210 --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/RAMBundleRegistry.h @@ -0,0 +1,56 @@ +/* + * 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. + */ + +#pragma once + +#include +#include +#include +#include +#include + +#include + +#ifndef RN_EXPORT +#define RN_EXPORT __attribute__((visibility("default"))) +#endif + +namespace facebook { +namespace react { + +class RN_EXPORT RAMBundleRegistry { + public: + constexpr static uint32_t MAIN_BUNDLE_ID = 0; + + static std::unique_ptr singleBundleRegistry( + std::unique_ptr mainBundle); + static std::unique_ptr multipleBundlesRegistry( + std::unique_ptr mainBundle, + std::function(std::string)> factory); + + explicit RAMBundleRegistry( + std::unique_ptr mainBundle, + std::function(std::string)> factory = + nullptr); + + RAMBundleRegistry(RAMBundleRegistry &&) = default; + RAMBundleRegistry &operator=(RAMBundleRegistry &&) = default; + + void registerBundle(uint32_t bundleId, std::string bundlePath); + JSModulesUnbundle::Module getModule(uint32_t bundleId, uint32_t moduleId); + virtual ~RAMBundleRegistry(){}; + + private: + JSModulesUnbundle *getBundle(uint32_t bundleId) const; + + std::function(std::string)> m_factory; + std::unordered_map m_bundlePaths; + std::unordered_map> m_bundles; +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/ReactMarker.h b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/ReactMarker.h new file mode 100644 index 0000000..875f7b2 --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/ReactMarker.h @@ -0,0 +1,58 @@ +/* + * 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. + */ + +#pragma once + +#ifdef __APPLE__ +#include +#endif + +namespace facebook { +namespace react { +namespace ReactMarker { + +enum ReactMarkerId { + NATIVE_REQUIRE_START, + NATIVE_REQUIRE_STOP, + RUN_JS_BUNDLE_START, + RUN_JS_BUNDLE_STOP, + CREATE_REACT_CONTEXT_STOP, + JS_BUNDLE_STRING_CONVERT_START, + JS_BUNDLE_STRING_CONVERT_STOP, + NATIVE_MODULE_SETUP_START, + NATIVE_MODULE_SETUP_STOP, + REGISTER_JS_SEGMENT_START, + REGISTER_JS_SEGMENT_STOP, + REACT_INSTANCE_INIT_START, + REACT_INSTANCE_INIT_STOP +}; + +#ifdef __APPLE__ +using LogTaggedMarker = + std::function; +using LogTaggedMarkerWithInstanceKey = std::function< + void(const ReactMarkerId, const char *tag, const int instanceKey)>; +#else +typedef void (*LogTaggedMarker)(const ReactMarkerId, const char *tag); +typedef void (*LogTaggedMarkerWithInstanceKey)( + const ReactMarkerId, + const char *tag, + const int instanceKey); +#endif + +#ifndef RN_EXPORT +#define RN_EXPORT __attribute__((visibility("default"))) +#endif + +extern RN_EXPORT LogTaggedMarker logTaggedMarker; +extern RN_EXPORT LogTaggedMarkerWithInstanceKey logTaggedMarkerWithInstanceKey; + +extern RN_EXPORT void logMarker(const ReactMarkerId markerId); + +} // namespace ReactMarker +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/ReactNativeVersion.h b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/ReactNativeVersion.h new file mode 100644 index 0000000..a99f81f --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/ReactNativeVersion.h @@ -0,0 +1,24 @@ +/** + * 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 scripts/set-rn-version.js + */ + +#pragma once + +#include +#include + +namespace facebook::react { + +constexpr struct { + int32_t Major = 0; + int32_t Minor = 67; + int32_t Patch = 5; + std::string_view Prerelease = ""; +} ReactNativeVersion; + +} // namespace facebook::react diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/RecoverableError.h b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/RecoverableError.h new file mode 100644 index 0000000..362fea2 --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/RecoverableError.h @@ -0,0 +1,50 @@ +/* + * 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. + */ + +#pragma once + +#include +#include +#include + +namespace facebook { +namespace react { + +/** + * RecoverableError + * + * An exception that it is expected we should be able to recover from. + */ +struct RecoverableError : public std::exception { + explicit RecoverableError(const std::string &what_) + : m_what{"facebook::react::Recoverable: " + what_} {} + + virtual const char *what() const noexcept override { + return m_what.c_str(); + } + + /** + * runRethrowingAsRecoverable + * + * Helper function that converts any exception of type `E`, thrown within the + * `act` routine into a recoverable error with the same message. + */ + template + inline static void runRethrowingAsRecoverable(std::function act) { + try { + act(); + } catch (const E &err) { + throw RecoverableError(err.what()); + } + } + + private: + std::string m_what; +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/SharedProxyCxxModule.h b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/SharedProxyCxxModule.h new file mode 100644 index 0000000..97d67dd --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/SharedProxyCxxModule.h @@ -0,0 +1,42 @@ +/* + * 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. + */ + +#include + +#include + +namespace facebook { +namespace xplat { +namespace module { + +// Allows a Cxx-module to be shared or reused across multiple React instances +// Caveat: the setInstance call is not forwarded, so usages of getInstance +// inside your module (e.g. dispatching events) will always be nullptr. +class SharedProxyCxxModule : public CxxModule { + public: + explicit SharedProxyCxxModule(std::shared_ptr shared) + : shared_(shared) {} + + std::string getName() override { + return shared_->getName(); + } + + auto getConstants() -> std::map override { + return shared_->getConstants(); + } + + auto getMethods() -> std::vector override { + return shared_->getMethods(); + } + + private: + std::shared_ptr shared_; +}; + +} // namespace module +} // namespace xplat +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/SystraceSection.h b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/SystraceSection.h new file mode 100644 index 0000000..3a59f0e --- /dev/null +++ b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/Headers/cxxreact/SystraceSection.h @@ -0,0 +1,51 @@ +/* + * 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. + */ + +#pragma once + +#ifdef WITH_FBSYSTRACE +#include +#endif + +namespace facebook { +namespace react { + +/** + * This is a convenience class to avoid lots of verbose profiling + * #ifdefs. If WITH_FBSYSTRACE is not defined, the optimizer will + * remove this completely. If it is defined, it will behave as + * FbSystraceSection, with the right tag provided. Use two separate classes to + * to ensure that the ODR rule isn't violated, that is, if WITH_FBSYSTRACE has + * different values in different files, there is no inconsistency in the sizes + * of defined symbols. + */ +#ifdef WITH_FBSYSTRACE +struct ConcreteSystraceSection { + public: + template + explicit ConcreteSystraceSection( + const char *name, + ConvertsToStringPiece &&...args) + : m_section(TRACE_TAG_REACT_CXX_BRIDGE, name, args...) {} + + private: + fbsystrace::FbSystraceSection m_section; +}; +using SystraceSection = ConcreteSystraceSection; +#else +struct DummySystraceSection { + public: + template + explicit DummySystraceSection( + __unused const char *name, + __unused ConvertsToStringPiece &&...args) {} +}; +using SystraceSection = DummySystraceSection; +#endif + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/libReact-cxxreact.a b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/libReact-cxxreact.a new file mode 100644 index 0000000..148d920 Binary files /dev/null and b/Frameworks/React-cxxreact.xcframework/ios-arm64_x86_64-simulator/libReact-cxxreact.a differ diff --git a/Frameworks/React-jsi.xcframework/Info.plist b/Frameworks/React-jsi.xcframework/Info.plist new file mode 100644 index 0000000..597d0e6 --- /dev/null +++ b/Frameworks/React-jsi.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libReact-jsi.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libReact-jsi.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libReact-jsi.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libReact-jsi.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/React-jsi.xcframework/ios-arm64/Headers/jsi/JSCRuntime.h b/Frameworks/React-jsi.xcframework/ios-arm64/Headers/jsi/JSCRuntime.h new file mode 100644 index 0000000..5455423 --- /dev/null +++ b/Frameworks/React-jsi.xcframework/ios-arm64/Headers/jsi/JSCRuntime.h @@ -0,0 +1,19 @@ +/* + * 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. + */ + +#pragma once + +#include +#include + +namespace facebook { +namespace jsc { + +std::unique_ptr makeJSCRuntime(); + +} // namespace jsc +} // namespace facebook diff --git a/Frameworks/React-jsi.xcframework/ios-arm64/Headers/jsi/JSIDynamic.h b/Frameworks/React-jsi.xcframework/ios-arm64/Headers/jsi/JSIDynamic.h new file mode 100644 index 0000000..41f9d9f --- /dev/null +++ b/Frameworks/React-jsi.xcframework/ios-arm64/Headers/jsi/JSIDynamic.h @@ -0,0 +1,25 @@ +/* + * 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. + */ + +#pragma once + +#include +#include + +namespace facebook { +namespace jsi { + +facebook::jsi::Value valueFromDynamic( + facebook::jsi::Runtime& runtime, + const folly::dynamic& dyn); + +folly::dynamic dynamicFromValue( + facebook::jsi::Runtime& runtime, + const facebook::jsi::Value& value); + +} // namespace jsi +} // namespace facebook diff --git a/Frameworks/React-jsi.xcframework/ios-arm64/Headers/jsi/decorator.h b/Frameworks/React-jsi.xcframework/ios-arm64/Headers/jsi/decorator.h new file mode 100644 index 0000000..be6f4f5 --- /dev/null +++ b/Frameworks/React-jsi.xcframework/ios-arm64/Headers/jsi/decorator.h @@ -0,0 +1,753 @@ +/* + * 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. + */ + +#pragma once + +#include + +#include +#include + +// This file contains objects to help API users create their own +// runtime adapters, i.e. if you want to compose runtimes to add your +// own behavior. + +namespace facebook { +namespace jsi { + +// Use this to wrap host functions. It will pass the member runtime as +// the first arg to the callback. The first argument to the ctor +// should be the decorated runtime, not the plain one. +class DecoratedHostFunction { + public: + DecoratedHostFunction(Runtime& drt, HostFunctionType plainHF) + : drt_(drt), plainHF_(std::move(plainHF)) {} + + Runtime& decoratedRuntime() { + return drt_; + } + + Value + operator()(Runtime&, const Value& thisVal, const Value* args, size_t count) { + return plainHF_(decoratedRuntime(), thisVal, args, count); + } + + private: + template + friend class RuntimeDecorator; + + Runtime& drt_; + HostFunctionType plainHF_; +}; + +// From the perspective of the caller, a plain HostObject is passed to +// the decorated Runtime, and the HostObject methods expect to get +// passed that Runtime. But the plain Runtime will pass itself to its +// callback, so we need a helper here which curries the decorated +// Runtime, and calls the plain HostObject with it. +// +// If the concrete RuntimeDecorator derives DecoratedHostObject, it +// should call the base class get() and set() to invoke the plain +// HostObject functionality. The Runtime& it passes does not matter, +// as it is not used. +class DecoratedHostObject : public HostObject { + public: + DecoratedHostObject(Runtime& drt, std::shared_ptr plainHO) + : drt_(drt), plainHO_(plainHO) {} + + // The derived class methods can call this to get a reference to the + // decorated runtime, since the rt passed to the callback will be + // the plain runtime. + Runtime& decoratedRuntime() { + return drt_; + } + + Value get(Runtime&, const PropNameID& name) override { + return plainHO_->get(decoratedRuntime(), name); + } + + void set(Runtime&, const PropNameID& name, const Value& value) override { + plainHO_->set(decoratedRuntime(), name, value); + } + + std::vector getPropertyNames(Runtime&) override { + return plainHO_->getPropertyNames(decoratedRuntime()); + } + + private: + template + friend class RuntimeDecorator; + + Runtime& drt_; + std::shared_ptr plainHO_; +}; + +/// C++ variant on a standard Decorator pattern, using template +/// parameters. The \c Plain template parameter type is the +/// undecorated Runtime type. You can usually use \c Runtime here, +/// but if you know the concrete type ahead of time and it's final, +/// the compiler can devirtualize calls to the decorated +/// implementation. The \c Base template parameter type will be used +/// as the base class of the decorated type. Here, too, you can +/// usually use \c Runtime, but if you want the decorated type to +/// implement a derived class of Runtime, you can specify that here. +/// For an example, see threadsafe.h. +template +class RuntimeDecorator : public Base, private jsi::Instrumentation { + public: + Plain& plain() { + static_assert( + std::is_base_of::value, + "RuntimeDecorator's Plain type must derive from jsi::Runtime"); + static_assert( + std::is_base_of::value, + "RuntimeDecorator's Base type must derive from jsi::Runtime"); + return plain_; + } + const Plain& plain() const { + return plain_; + } + + Value evaluateJavaScript( + const std::shared_ptr& buffer, + const std::string& sourceURL) override { + return plain().evaluateJavaScript(buffer, sourceURL); + } + std::shared_ptr prepareJavaScript( + const std::shared_ptr& buffer, + std::string sourceURL) override { + return plain().prepareJavaScript(buffer, std::move(sourceURL)); + } + Value evaluatePreparedJavaScript( + const std::shared_ptr& js) override { + return plain().evaluatePreparedJavaScript(js); + } + bool drainMicrotasks(int maxMicrotasksHint) override { + return plain().drainMicrotasks(maxMicrotasksHint); + } + Object global() override { + return plain().global(); + } + std::string description() override { + return plain().description(); + }; + bool isInspectable() override { + return plain().isInspectable(); + }; + Instrumentation& instrumentation() override { + return *this; + } + + protected: + // plain is generally going to be a reference to an object managed + // by a derived class. We cache it here so this class can be + // concrete, and avoid making virtual calls to find the plain + // Runtime. Note that the ctor and dtor do not access through the + // reference, so passing a reference to an object before its + // lifetime has started is ok. + RuntimeDecorator(Plain& plain) : plain_(plain) {} + + Runtime::PointerValue* cloneSymbol(const Runtime::PointerValue* pv) override { + return plain_.cloneSymbol(pv); + }; + Runtime::PointerValue* cloneString(const Runtime::PointerValue* pv) override { + return plain_.cloneString(pv); + }; + Runtime::PointerValue* cloneObject(const Runtime::PointerValue* pv) override { + return plain_.cloneObject(pv); + }; + Runtime::PointerValue* clonePropNameID( + const Runtime::PointerValue* pv) override { + return plain_.clonePropNameID(pv); + }; + + PropNameID createPropNameIDFromAscii(const char* str, size_t length) + override { + return plain_.createPropNameIDFromAscii(str, length); + }; + PropNameID createPropNameIDFromUtf8(const uint8_t* utf8, size_t length) + override { + return plain_.createPropNameIDFromUtf8(utf8, length); + }; + PropNameID createPropNameIDFromString(const String& str) override { + return plain_.createPropNameIDFromString(str); + }; + std::string utf8(const PropNameID& id) override { + return plain_.utf8(id); + }; + bool compare(const PropNameID& a, const PropNameID& b) override { + return plain_.compare(a, b); + }; + + std::string symbolToString(const Symbol& sym) override { + return plain_.symbolToString(sym); + } + + String createStringFromAscii(const char* str, size_t length) override { + return plain_.createStringFromAscii(str, length); + }; + String createStringFromUtf8(const uint8_t* utf8, size_t length) override { + return plain_.createStringFromUtf8(utf8, length); + }; + std::string utf8(const String& s) override { + return plain_.utf8(s); + } + + Object createObject() override { + return plain_.createObject(); + }; + + Object createObject(std::shared_ptr ho) override { + return plain_.createObject( + std::make_shared(*this, std::move(ho))); + }; + std::shared_ptr getHostObject(const jsi::Object& o) override { + std::shared_ptr dho = plain_.getHostObject(o); + return static_cast(*dho).plainHO_; + }; + HostFunctionType& getHostFunction(const jsi::Function& f) override { + HostFunctionType& dhf = plain_.getHostFunction(f); + // This will fail if a cpp file including this header is not compiled + // with RTTI. + return dhf.target()->plainHF_; + }; + + Value getProperty(const Object& o, const PropNameID& name) override { + return plain_.getProperty(o, name); + }; + Value getProperty(const Object& o, const String& name) override { + return plain_.getProperty(o, name); + }; + bool hasProperty(const Object& o, const PropNameID& name) override { + return plain_.hasProperty(o, name); + }; + bool hasProperty(const Object& o, const String& name) override { + return plain_.hasProperty(o, name); + }; + void setPropertyValue(Object& o, const PropNameID& name, const Value& value) + override { + plain_.setPropertyValue(o, name, value); + }; + void setPropertyValue(Object& o, const String& name, const Value& value) + override { + plain_.setPropertyValue(o, name, value); + }; + + bool isArray(const Object& o) const override { + return plain_.isArray(o); + }; + bool isArrayBuffer(const Object& o) const override { + return plain_.isArrayBuffer(o); + }; + bool isFunction(const Object& o) const override { + return plain_.isFunction(o); + }; + bool isHostObject(const jsi::Object& o) const override { + return plain_.isHostObject(o); + }; + bool isHostFunction(const jsi::Function& f) const override { + return plain_.isHostFunction(f); + }; + Array getPropertyNames(const Object& o) override { + return plain_.getPropertyNames(o); + }; + + WeakObject createWeakObject(const Object& o) override { + return plain_.createWeakObject(o); + }; + Value lockWeakObject(WeakObject& wo) override { + return plain_.lockWeakObject(wo); + }; + + Array createArray(size_t length) override { + return plain_.createArray(length); + }; + size_t size(const Array& a) override { + return plain_.size(a); + }; + size_t size(const ArrayBuffer& ab) override { + return plain_.size(ab); + }; + uint8_t* data(const ArrayBuffer& ab) override { + return plain_.data(ab); + }; + Value getValueAtIndex(const Array& a, size_t i) override { + return plain_.getValueAtIndex(a, i); + }; + void setValueAtIndexImpl(Array& a, size_t i, const Value& value) override { + plain_.setValueAtIndexImpl(a, i, value); + }; + + Function createFunctionFromHostFunction( + const PropNameID& name, + unsigned int paramCount, + HostFunctionType func) override { + return plain_.createFunctionFromHostFunction( + name, paramCount, DecoratedHostFunction(*this, std::move(func))); + }; + Value call( + const Function& f, + const Value& jsThis, + const Value* args, + size_t count) override { + return plain_.call(f, jsThis, args, count); + }; + Value callAsConstructor(const Function& f, const Value* args, size_t count) + override { + return plain_.callAsConstructor(f, args, count); + }; + + // Private data for managing scopes. + Runtime::ScopeState* pushScope() override { + return plain_.pushScope(); + } + void popScope(Runtime::ScopeState* ss) override { + plain_.popScope(ss); + } + + bool strictEquals(const Symbol& a, const Symbol& b) const override { + return plain_.strictEquals(a, b); + }; + bool strictEquals(const String& a, const String& b) const override { + return plain_.strictEquals(a, b); + }; + bool strictEquals(const Object& a, const Object& b) const override { + return plain_.strictEquals(a, b); + }; + + bool instanceOf(const Object& o, const Function& f) override { + return plain_.instanceOf(o, f); + }; + + // jsi::Instrumentation methods + + std::string getRecordedGCStats() override { + return plain().instrumentation().getRecordedGCStats(); + } + + std::unordered_map getHeapInfo( + bool includeExpensive) override { + return plain().instrumentation().getHeapInfo(includeExpensive); + } + + void collectGarbage(std::string cause) override { + plain().instrumentation().collectGarbage(std::move(cause)); + } + + void startTrackingHeapObjectStackTraces( + std::function)> callback) override { + plain().instrumentation().startTrackingHeapObjectStackTraces( + std::move(callback)); + } + + void stopTrackingHeapObjectStackTraces() override { + plain().instrumentation().stopTrackingHeapObjectStackTraces(); + } + + void startHeapSampling(size_t samplingInterval) override { + plain().instrumentation().startHeapSampling(samplingInterval); + } + + void stopHeapSampling(std::ostream& os) override { + plain().instrumentation().stopHeapSampling(os); + } + + void createSnapshotToFile(const std::string& path) override { + plain().instrumentation().createSnapshotToFile(path); + } + + void createSnapshotToStream(std::ostream& os) override { + plain().instrumentation().createSnapshotToStream(os); + } + + std::string flushAndDisableBridgeTrafficTrace() override { + return const_cast(plain()) + .instrumentation() + .flushAndDisableBridgeTrafficTrace(); + } + + void writeBasicBlockProfileTraceToFile( + const std::string& fileName) const override { + const_cast(plain()) + .instrumentation() + .writeBasicBlockProfileTraceToFile(fileName); + } + + /// Dump external profiler symbols to the given file name. + void dumpProfilerSymbolsToFile(const std::string& fileName) const override { + const_cast(plain()).instrumentation().dumpProfilerSymbolsToFile( + fileName); + } + + private: + Plain& plain_; +}; + +namespace detail { + +// This metaprogramming allows the With type's methods to be +// optional. + +template +struct BeforeCaller { + static void before(T&) {} +}; + +template +struct AfterCaller { + static void after(T&) {} +}; + +// decltype((void)&...) is either SFINAE, or void. +// So, if SFINAE does not happen for T, then this specialization exists +// for BeforeCaller, and always applies. If not, only the +// default above exists, and that is used instead. +template +struct BeforeCaller { + static void before(T& t) { + t.before(); + } +}; + +template +struct AfterCaller { + static void after(T& t) { + t.after(); + } +}; + +// It's possible to use multiple decorators by nesting +// WithRuntimeDecorator<...>, but this specialization allows use of +// std::tuple of decorator classes instead. See testlib.cpp for an +// example. +template +struct BeforeCaller> { + static void before(std::tuple& tuple) { + all_before<0, T...>(tuple); + } + + private: + template + static void all_before(std::tuple& tuple) { + detail::BeforeCaller::before(std::get(tuple)); + all_before(tuple); + } + + template + static void all_before(std::tuple&) {} +}; + +template +struct AfterCaller> { + static void after(std::tuple& tuple) { + all_after<0, T...>(tuple); + } + + private: + template + static void all_after(std::tuple& tuple) { + all_after(tuple); + detail::AfterCaller::after(std::get(tuple)); + } + + template + static void all_after(std::tuple&) {} +}; + +} // namespace detail + +// A decorator which implements an around idiom. A With instance is +// RAII constructed before each call to the undecorated class; the +// ctor is passed a single argument of type WithArg&. Plain and Base +// are used as in the base class. +template +class WithRuntimeDecorator : public RuntimeDecorator { + public: + using RD = RuntimeDecorator; + + // The reference arguments to the ctor are stored, but not used by + // the ctor, and there is no ctor, so they can be passed members of + // the derived class. + WithRuntimeDecorator(Plain& plain, With& with) : RD(plain), with_(with) {} + + Value evaluateJavaScript( + const std::shared_ptr& buffer, + const std::string& sourceURL) override { + Around around{with_}; + return RD::evaluateJavaScript(buffer, sourceURL); + } + std::shared_ptr prepareJavaScript( + const std::shared_ptr& buffer, + std::string sourceURL) override { + Around around{with_}; + return RD::prepareJavaScript(buffer, std::move(sourceURL)); + } + Value evaluatePreparedJavaScript( + const std::shared_ptr& js) override { + Around around{with_}; + return RD::evaluatePreparedJavaScript(js); + } + bool drainMicrotasks(int maxMicrotasksHint) override { + Around around{with_}; + return RD::drainMicrotasks(maxMicrotasksHint); + } + Object global() override { + Around around{with_}; + return RD::global(); + } + std::string description() override { + Around around{with_}; + return RD::description(); + }; + bool isInspectable() override { + Around around{with_}; + return RD::isInspectable(); + }; + + // The jsi:: prefix is necessary because MSVC compiler complains C2247: + // Instrumentation is not accessible because RuntimeDecorator uses private + // to inherit from Instrumentation. + // TODO(T40821815) Consider removing this workaround when updating MSVC + jsi::Instrumentation& instrumentation() override { + Around around{with_}; + return RD::instrumentation(); + } + + protected: + Runtime::PointerValue* cloneSymbol(const Runtime::PointerValue* pv) override { + Around around{with_}; + return RD::cloneSymbol(pv); + }; + Runtime::PointerValue* cloneString(const Runtime::PointerValue* pv) override { + Around around{with_}; + return RD::cloneString(pv); + }; + Runtime::PointerValue* cloneObject(const Runtime::PointerValue* pv) override { + Around around{with_}; + return RD::cloneObject(pv); + }; + Runtime::PointerValue* clonePropNameID( + const Runtime::PointerValue* pv) override { + Around around{with_}; + return RD::clonePropNameID(pv); + }; + + PropNameID createPropNameIDFromAscii(const char* str, size_t length) + override { + Around around{with_}; + return RD::createPropNameIDFromAscii(str, length); + }; + PropNameID createPropNameIDFromUtf8(const uint8_t* utf8, size_t length) + override { + Around around{with_}; + return RD::createPropNameIDFromUtf8(utf8, length); + }; + PropNameID createPropNameIDFromString(const String& str) override { + Around around{with_}; + return RD::createPropNameIDFromString(str); + }; + std::string utf8(const PropNameID& id) override { + Around around{with_}; + return RD::utf8(id); + }; + bool compare(const PropNameID& a, const PropNameID& b) override { + Around around{with_}; + return RD::compare(a, b); + }; + + std::string symbolToString(const Symbol& sym) override { + Around around{with_}; + return RD::symbolToString(sym); + }; + + String createStringFromAscii(const char* str, size_t length) override { + Around around{with_}; + return RD::createStringFromAscii(str, length); + }; + String createStringFromUtf8(const uint8_t* utf8, size_t length) override { + Around around{with_}; + return RD::createStringFromUtf8(utf8, length); + }; + std::string utf8(const String& s) override { + Around around{with_}; + return RD::utf8(s); + } + + Object createObject() override { + Around around{with_}; + return RD::createObject(); + }; + Object createObject(std::shared_ptr ho) override { + Around around{with_}; + return RD::createObject(std::move(ho)); + }; + std::shared_ptr getHostObject(const jsi::Object& o) override { + Around around{with_}; + return RD::getHostObject(o); + }; + HostFunctionType& getHostFunction(const jsi::Function& f) override { + Around around{with_}; + return RD::getHostFunction(f); + }; + + Value getProperty(const Object& o, const PropNameID& name) override { + Around around{with_}; + return RD::getProperty(o, name); + }; + Value getProperty(const Object& o, const String& name) override { + Around around{with_}; + return RD::getProperty(o, name); + }; + bool hasProperty(const Object& o, const PropNameID& name) override { + Around around{with_}; + return RD::hasProperty(o, name); + }; + bool hasProperty(const Object& o, const String& name) override { + Around around{with_}; + return RD::hasProperty(o, name); + }; + void setPropertyValue(Object& o, const PropNameID& name, const Value& value) + override { + Around around{with_}; + RD::setPropertyValue(o, name, value); + }; + void setPropertyValue(Object& o, const String& name, const Value& value) + override { + Around around{with_}; + RD::setPropertyValue(o, name, value); + }; + + bool isArray(const Object& o) const override { + Around around{with_}; + return RD::isArray(o); + }; + bool isArrayBuffer(const Object& o) const override { + Around around{with_}; + return RD::isArrayBuffer(o); + }; + bool isFunction(const Object& o) const override { + Around around{with_}; + return RD::isFunction(o); + }; + bool isHostObject(const jsi::Object& o) const override { + Around around{with_}; + return RD::isHostObject(o); + }; + bool isHostFunction(const jsi::Function& f) const override { + Around around{with_}; + return RD::isHostFunction(f); + }; + Array getPropertyNames(const Object& o) override { + Around around{with_}; + return RD::getPropertyNames(o); + }; + + WeakObject createWeakObject(const Object& o) override { + Around around{with_}; + return RD::createWeakObject(o); + }; + Value lockWeakObject(WeakObject& wo) override { + Around around{with_}; + return RD::lockWeakObject(wo); + }; + + Array createArray(size_t length) override { + Around around{with_}; + return RD::createArray(length); + }; + size_t size(const Array& a) override { + Around around{with_}; + return RD::size(a); + }; + size_t size(const ArrayBuffer& ab) override { + Around around{with_}; + return RD::size(ab); + }; + uint8_t* data(const ArrayBuffer& ab) override { + Around around{with_}; + return RD::data(ab); + }; + Value getValueAtIndex(const Array& a, size_t i) override { + Around around{with_}; + return RD::getValueAtIndex(a, i); + }; + void setValueAtIndexImpl(Array& a, size_t i, const Value& value) override { + Around around{with_}; + RD::setValueAtIndexImpl(a, i, value); + }; + + Function createFunctionFromHostFunction( + const PropNameID& name, + unsigned int paramCount, + HostFunctionType func) override { + Around around{with_}; + return RD::createFunctionFromHostFunction( + name, paramCount, std::move(func)); + }; + Value call( + const Function& f, + const Value& jsThis, + const Value* args, + size_t count) override { + Around around{with_}; + return RD::call(f, jsThis, args, count); + }; + Value callAsConstructor(const Function& f, const Value* args, size_t count) + override { + Around around{with_}; + return RD::callAsConstructor(f, args, count); + }; + + // Private data for managing scopes. + Runtime::ScopeState* pushScope() override { + Around around{with_}; + return RD::pushScope(); + } + void popScope(Runtime::ScopeState* ss) override { + Around around{with_}; + RD::popScope(ss); + } + + bool strictEquals(const Symbol& a, const Symbol& b) const override { + Around around{with_}; + return RD::strictEquals(a, b); + }; + bool strictEquals(const String& a, const String& b) const override { + Around around{with_}; + return RD::strictEquals(a, b); + }; + bool strictEquals(const Object& a, const Object& b) const override { + Around around{with_}; + return RD::strictEquals(a, b); + }; + + bool instanceOf(const Object& o, const Function& f) override { + Around around{with_}; + return RD::instanceOf(o, f); + }; + + private: + // Wrap an RAII type around With& to guarantee after always happens. + struct Around { + Around(With& with) : with_(with) { + detail::BeforeCaller::before(with_); + } + ~Around() { + detail::AfterCaller::after(with_); + } + + With& with_; + }; + + With& with_; +}; + +} // namespace jsi +} // namespace facebook diff --git a/Frameworks/React-jsi.xcframework/ios-arm64/Headers/jsi/instrumentation.h b/Frameworks/React-jsi.xcframework/ios-arm64/Headers/jsi/instrumentation.h new file mode 100644 index 0000000..a337a7a --- /dev/null +++ b/Frameworks/React-jsi.xcframework/ios-arm64/Headers/jsi/instrumentation.h @@ -0,0 +1,117 @@ +/* + * 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. + */ + +#pragma once + +#include +#include +#include +#include +#include + +#include + +namespace facebook { +namespace jsi { + +/// Methods for starting and collecting instrumentation, an \c Instrumentation +/// instance is associated with a particular \c Runtime instance, which it +/// controls the instrumentation of. +/// None of these functions should return newly created jsi values, nor should +/// it modify the values of any jsi values in the heap (although GCs are fine). +class JSI_EXPORT Instrumentation { + public: + virtual ~Instrumentation() = default; + + /// Returns GC statistics as a JSON-encoded string, with an object containing + /// "type" and "version" fields outermost. "type" is a string, unique to a + /// particular implementation of \c jsi::Instrumentation, and "version" is a + /// number to indicate any revision to that implementation and its output + /// format. + /// + /// \pre This call can only be made on the instrumentation instance of a + /// runtime initialised to collect GC statistics. + /// + /// \post All cumulative measurements mentioned in the output are accumulated + /// across the entire lifetime of the Runtime. + /// + /// \return the GC statistics collected so far, as a JSON-encoded string. + virtual std::string getRecordedGCStats() = 0; + + /// Request statistics about the current state of the runtime's heap. This + /// function can be called at any time, and should produce information that is + /// correct at the instant it is called (i.e, not stale). + /// + /// \return a map from a string key to a number associated with that + /// statistic. + virtual std::unordered_map getHeapInfo( + bool includeExpensive) = 0; + + /// Perform a full garbage collection. + /// \param cause The cause of this collection, as it should be reported in + /// logs. + virtual void collectGarbage(std::string cause) = 0; + + /// A HeapStatsUpdate is a tuple of the fragment index, the number of objects + /// in that fragment, and the number of bytes used by those objects. + /// A "fragment" is a view of all objects allocated within a time slice. + using HeapStatsUpdate = std::tuple; + + /// Start capturing JS stack-traces for all JS heap allocated objects. These + /// can be accessed via \c ::createSnapshotToFile(). + /// \param fragmentCallback If present, invoke this callback every so often + /// with the most recently seen object ID, and a list of fragments that have + /// been updated. This callback will be invoked on the same thread that the + /// runtime is using. + virtual void startTrackingHeapObjectStackTraces( + std::function stats)> fragmentCallback) = 0; + + /// Stop capture JS stack-traces for JS heap allocated objects. + virtual void stopTrackingHeapObjectStackTraces() = 0; + + /// Start a heap sampling profiler that will sample heap allocations, and the + /// stack trace they were allocated at. Reports a summary of which functions + /// allocated the most. + /// \param samplingInterval The number of bytes allocated to wait between + /// samples. This will be used as the expected value of a poisson + /// distribution. + virtual void startHeapSampling(size_t samplingInterval) = 0; + + /// Turns off the heap sampling profiler previously enabled via + /// \c startHeapSampling. Writes the output of the sampling heap profiler to + /// \p os. The output is a JSON formatted string. + virtual void stopHeapSampling(std::ostream& os) = 0; + + /// Captures the heap to a file + /// + /// \param path to save the heap capture + virtual void createSnapshotToFile(const std::string& path) = 0; + + /// Captures the heap to an output stream + /// + /// \param os output stream to write to. + virtual void createSnapshotToStream(std::ostream& os) = 0; + + /// If the runtime has been created to trace to a temp file, flush + /// any unwritten parts of the trace of bridge traffic to the file, + /// and return the name of the file. Otherwise, return the empty string. + /// Tracing is disabled after this call. + virtual std::string flushAndDisableBridgeTrafficTrace() = 0; + + /// Write basic block profile trace to the given file name. + virtual void writeBasicBlockProfileTraceToFile( + const std::string& fileName) const = 0; + + /// Dump external profiler symbols to the given file name. + virtual void dumpProfilerSymbolsToFile(const std::string& fileName) const = 0; +}; + +} // namespace jsi +} // namespace facebook diff --git a/Frameworks/React-jsi.xcframework/ios-arm64/Headers/jsi/jsi-inl.h b/Frameworks/React-jsi.xcframework/ios-arm64/Headers/jsi/jsi-inl.h new file mode 100644 index 0000000..63d4a2f --- /dev/null +++ b/Frameworks/React-jsi.xcframework/ios-arm64/Headers/jsi/jsi-inl.h @@ -0,0 +1,316 @@ +/* + * 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. + */ + +#pragma once + +namespace facebook { +namespace jsi { +namespace detail { + +inline Value toValue(Runtime&, std::nullptr_t) { + return Value::null(); +} +inline Value toValue(Runtime&, bool b) { + return Value(b); +} +inline Value toValue(Runtime&, double d) { + return Value(d); +} +inline Value toValue(Runtime&, float f) { + return Value(static_cast(f)); +} +inline Value toValue(Runtime&, int i) { + return Value(i); +} +inline Value toValue(Runtime& runtime, const char* str) { + return String::createFromAscii(runtime, str); +} +inline Value toValue(Runtime& runtime, const std::string& str) { + return String::createFromUtf8(runtime, str); +} +template +inline Value toValue(Runtime& runtime, const T& other) { + static_assert( + std::is_base_of::value, + "This type cannot be converted to Value"); + return Value(runtime, other); +} +inline Value toValue(Runtime& runtime, const Value& value) { + return Value(runtime, value); +} +inline Value&& toValue(Runtime&, Value&& value) { + return std::move(value); +} + +inline PropNameID toPropNameID(Runtime& runtime, const char* name) { + return PropNameID::forAscii(runtime, name); +} +inline PropNameID toPropNameID(Runtime& runtime, const std::string& name) { + return PropNameID::forUtf8(runtime, name); +} +inline PropNameID&& toPropNameID(Runtime&, PropNameID&& name) { + return std::move(name); +} + +void throwJSError(Runtime&, const char* msg); + +} // namespace detail + +template +inline T Runtime::make(Runtime::PointerValue* pv) { + return T(pv); +} + +inline Runtime::PointerValue* Runtime::getPointerValue(jsi::Pointer& pointer) { + return pointer.ptr_; +} + +inline const Runtime::PointerValue* Runtime::getPointerValue( + const jsi::Pointer& pointer) { + return pointer.ptr_; +} + +inline const Runtime::PointerValue* Runtime::getPointerValue( + const jsi::Value& value) { + return value.data_.pointer.ptr_; +} + +inline Value Object::getProperty(Runtime& runtime, const char* name) const { + return getProperty(runtime, String::createFromAscii(runtime, name)); +} + +inline Value Object::getProperty(Runtime& runtime, const String& name) const { + return runtime.getProperty(*this, name); +} + +inline Value Object::getProperty(Runtime& runtime, const PropNameID& name) + const { + return runtime.getProperty(*this, name); +} + +inline bool Object::hasProperty(Runtime& runtime, const char* name) const { + return hasProperty(runtime, String::createFromAscii(runtime, name)); +} + +inline bool Object::hasProperty(Runtime& runtime, const String& name) const { + return runtime.hasProperty(*this, name); +} + +inline bool Object::hasProperty(Runtime& runtime, const PropNameID& name) + const { + return runtime.hasProperty(*this, name); +} + +template +void Object::setProperty(Runtime& runtime, const char* name, T&& value) { + setProperty( + runtime, String::createFromAscii(runtime, name), std::forward(value)); +} + +template +void Object::setProperty(Runtime& runtime, const String& name, T&& value) { + setPropertyValue( + runtime, name, detail::toValue(runtime, std::forward(value))); +} + +template +void Object::setProperty(Runtime& runtime, const PropNameID& name, T&& value) { + setPropertyValue( + runtime, name, detail::toValue(runtime, std::forward(value))); +} + +inline Array Object::getArray(Runtime& runtime) const& { + assert(runtime.isArray(*this)); + (void)runtime; // when assert is disabled we need to mark this as used + return Array(runtime.cloneObject(ptr_)); +} + +inline Array Object::getArray(Runtime& runtime) && { + assert(runtime.isArray(*this)); + (void)runtime; // when assert is disabled we need to mark this as used + Runtime::PointerValue* value = ptr_; + ptr_ = nullptr; + return Array(value); +} + +inline ArrayBuffer Object::getArrayBuffer(Runtime& runtime) const& { + assert(runtime.isArrayBuffer(*this)); + (void)runtime; // when assert is disabled we need to mark this as used + return ArrayBuffer(runtime.cloneObject(ptr_)); +} + +inline ArrayBuffer Object::getArrayBuffer(Runtime& runtime) && { + assert(runtime.isArrayBuffer(*this)); + (void)runtime; // when assert is disabled we need to mark this as used + Runtime::PointerValue* value = ptr_; + ptr_ = nullptr; + return ArrayBuffer(value); +} + +inline Function Object::getFunction(Runtime& runtime) const& { + assert(runtime.isFunction(*this)); + return Function(runtime.cloneObject(ptr_)); +} + +inline Function Object::getFunction(Runtime& runtime) && { + assert(runtime.isFunction(*this)); + (void)runtime; // when assert is disabled we need to mark this as used + Runtime::PointerValue* value = ptr_; + ptr_ = nullptr; + return Function(value); +} + +template +inline bool Object::isHostObject(Runtime& runtime) const { + return runtime.isHostObject(*this) && + std::dynamic_pointer_cast(runtime.getHostObject(*this)); +} + +template <> +inline bool Object::isHostObject(Runtime& runtime) const { + return runtime.isHostObject(*this); +} + +template +inline std::shared_ptr Object::getHostObject(Runtime& runtime) const { + assert(isHostObject(runtime)); + return std::static_pointer_cast(runtime.getHostObject(*this)); +} + +template +inline std::shared_ptr Object::asHostObject(Runtime& runtime) const { + if (!isHostObject(runtime)) { + detail::throwJSError(runtime, "Object is not a HostObject of desired type"); + } + return std::static_pointer_cast(runtime.getHostObject(*this)); +} + +template <> +inline std::shared_ptr Object::getHostObject( + Runtime& runtime) const { + assert(runtime.isHostObject(*this)); + return runtime.getHostObject(*this); +} + +inline Array Object::getPropertyNames(Runtime& runtime) const { + return runtime.getPropertyNames(*this); +} + +inline Value WeakObject::lock(Runtime& runtime) { + return runtime.lockWeakObject(*this); +} + +template +void Array::setValueAtIndex(Runtime& runtime, size_t i, T&& value) { + setValueAtIndexImpl( + runtime, i, detail::toValue(runtime, std::forward(value))); +} + +inline Value Array::getValueAtIndex(Runtime& runtime, size_t i) const { + return runtime.getValueAtIndex(*this, i); +} + +inline Function Function::createFromHostFunction( + Runtime& runtime, + const jsi::PropNameID& name, + unsigned int paramCount, + jsi::HostFunctionType func) { + return runtime.createFunctionFromHostFunction( + name, paramCount, std::move(func)); +} + +inline Value Function::call(Runtime& runtime, const Value* args, size_t count) + const { + return runtime.call(*this, Value::undefined(), args, count); +} + +inline Value Function::call(Runtime& runtime, std::initializer_list args) + const { + return call(runtime, args.begin(), args.size()); +} + +template +inline Value Function::call(Runtime& runtime, Args&&... args) const { + // A more awesome version of this would be able to create raw values + // which can be used directly without wrapping and unwrapping, but + // this will do for now. + return call(runtime, {detail::toValue(runtime, std::forward(args))...}); +} + +inline Value Function::callWithThis( + Runtime& runtime, + const Object& jsThis, + const Value* args, + size_t count) const { + return runtime.call(*this, Value(runtime, jsThis), args, count); +} + +inline Value Function::callWithThis( + Runtime& runtime, + const Object& jsThis, + std::initializer_list args) const { + return callWithThis(runtime, jsThis, args.begin(), args.size()); +} + +template +inline Value Function::callWithThis( + Runtime& runtime, + const Object& jsThis, + Args&&... args) const { + // A more awesome version of this would be able to create raw values + // which can be used directly without wrapping and unwrapping, but + // this will do for now. + return callWithThis( + runtime, jsThis, {detail::toValue(runtime, std::forward(args))...}); +} + +template +inline Array Array::createWithElements(Runtime& runtime, Args&&... args) { + return createWithElements( + runtime, {detail::toValue(runtime, std::forward(args))...}); +} + +template +inline std::vector PropNameID::names( + Runtime& runtime, + Args&&... args) { + return names({detail::toPropNameID(runtime, std::forward(args))...}); +} + +template +inline std::vector PropNameID::names( + PropNameID(&&propertyNames)[N]) { + std::vector result; + result.reserve(N); + for (auto& name : propertyNames) { + result.push_back(std::move(name)); + } + return result; +} + +inline Value Function::callAsConstructor( + Runtime& runtime, + const Value* args, + size_t count) const { + return runtime.callAsConstructor(*this, args, count); +} + +inline Value Function::callAsConstructor( + Runtime& runtime, + std::initializer_list args) const { + return callAsConstructor(runtime, args.begin(), args.size()); +} + +template +inline Value Function::callAsConstructor(Runtime& runtime, Args&&... args) + const { + return callAsConstructor( + runtime, {detail::toValue(runtime, std::forward(args))...}); +} + +} // namespace jsi +} // namespace facebook diff --git a/Frameworks/React-jsi.xcframework/ios-arm64/Headers/jsi/jsi.h b/Frameworks/React-jsi.xcframework/ios-arm64/Headers/jsi/jsi.h new file mode 100644 index 0000000..ae64498 --- /dev/null +++ b/Frameworks/React-jsi.xcframework/ios-arm64/Headers/jsi/jsi.h @@ -0,0 +1,1317 @@ +/* + * 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. + */ + +#pragma once + +#include +#include +#include +#include +#include +#include +#include + +#ifndef JSI_EXPORT +#ifdef _MSC_VER +#ifdef CREATE_SHARED_LIBRARY +#define JSI_EXPORT __declspec(dllexport) +#else +#define JSI_EXPORT +#endif // CREATE_SHARED_LIBRARY +#else // _MSC_VER +#define JSI_EXPORT __attribute__((visibility("default"))) +#endif // _MSC_VER +#endif // !defined(JSI_EXPORT) + +class FBJSRuntime; +namespace facebook { +namespace jsi { + +class JSI_EXPORT Buffer { + public: + virtual ~Buffer(); + virtual size_t size() const = 0; + virtual const uint8_t* data() const = 0; +}; + +class JSI_EXPORT StringBuffer : public Buffer { + public: + StringBuffer(std::string s) : s_(std::move(s)) {} + size_t size() const override { + return s_.size(); + } + const uint8_t* data() const override { + return reinterpret_cast(s_.data()); + } + + private: + std::string s_; +}; + +/// PreparedJavaScript is a base class representing JavaScript which is in a +/// form optimized for execution, in a runtime-specific way. Construct one via +/// jsi::Runtime::prepareJavaScript(). +/// ** This is an experimental API that is subject to change. ** +class JSI_EXPORT PreparedJavaScript { + protected: + PreparedJavaScript() = default; + + public: + virtual ~PreparedJavaScript() = 0; +}; + +class Runtime; +class Pointer; +class PropNameID; +class Symbol; +class String; +class Object; +class WeakObject; +class Array; +class ArrayBuffer; +class Function; +class Value; +class Instrumentation; +class Scope; +class JSIException; +class JSError; + +/// A function which has this type can be registered as a function +/// callable from JavaScript using Function::createFromHostFunction(). +/// When the function is called, args will point to the arguments, and +/// count will indicate how many arguments are passed. The function +/// can return a Value to the caller, or throw an exception. If a C++ +/// exception is thrown, a JS Error will be created and thrown into +/// JS; if the C++ exception extends std::exception, the Error's +/// message will be whatever what() returns. Note that it is undefined whether +/// HostFunctions may or may not be called in strict mode; that is `thisVal` +/// can be any value - it will not necessarily be coerced to an object or +/// or set to the global object. +using HostFunctionType = std::function< + Value(Runtime& rt, const Value& thisVal, const Value* args, size_t count)>; + +/// An object which implements this interface can be registered as an +/// Object with the JS runtime. +class JSI_EXPORT HostObject { + public: + // The C++ object's dtor will be called when the GC finalizes this + // object. (This may be as late as when the Runtime is shut down.) + // You have no control over which thread it is called on. This will + // be called from inside the GC, so it is unsafe to do any VM + // operations which require a Runtime&. Derived classes' dtors + // should also avoid doing anything expensive. Calling the dtor on + // a jsi object is explicitly ok. If you want to do JS operations, + // or any nontrivial work, you should add it to a work queue, and + // manage it externally. + virtual ~HostObject(); + + // When JS wants a property with a given name from the HostObject, + // it will call this method. If it throws an exception, the call + // will throw a JS \c Error object. By default this returns undefined. + // \return the value for the property. + virtual Value get(Runtime&, const PropNameID& name); + + // When JS wants to set a property with a given name on the HostObject, + // it will call this method. If it throws an exception, the call will + // throw a JS \c Error object. By default this throws a type error exception + // mimicking the behavior of a frozen object in strict mode. + virtual void set(Runtime&, const PropNameID& name, const Value& value); + + // When JS wants a list of property names for the HostObject, it will + // call this method. If it throws an exception, the call will throw a + // JS \c Error object. The default implementation returns empty vector. + virtual std::vector getPropertyNames(Runtime& rt); +}; + +/// Represents a JS runtime. Movable, but not copyable. Note that +/// this object may not be thread-aware, but cannot be used safely from +/// multiple threads at once. The application is responsible for +/// ensuring that it is used safely. This could mean using the +/// Runtime from a single thread, using a mutex, doing all work on a +/// serial queue, etc. This restriction applies to the methods of +/// this class, and any method in the API which take a Runtime& as an +/// argument. Destructors (all but ~Scope), operators, or other methods +/// which do not take Runtime& as an argument are safe to call from any +/// thread, but it is still forbidden to make write operations on a single +/// instance of any class from more than one thread. In addition, to +/// make shutdown safe, destruction of objects associated with the Runtime +/// must be destroyed before the Runtime is destroyed, or from the +/// destructor of a managed HostObject or HostFunction. Informally, this +/// means that the main source of unsafe behavior is to hold a jsi object +/// in a non-Runtime-managed object, and not clean it up before the Runtime +/// is shut down. If your lifecycle is such that avoiding this is hard, +/// you will probably need to do use your own locks. +class JSI_EXPORT Runtime { + public: + virtual ~Runtime(); + + /// Evaluates the given JavaScript \c buffer. \c sourceURL is used + /// to annotate the stack trace if there is an exception. The + /// contents may be utf8-encoded JS source code, or binary bytecode + /// whose format is specific to the implementation. If the input + /// format is unknown, or evaluation causes an error, a JSIException + /// will be thrown. + /// Note this function should ONLY be used when there isn't another means + /// through the JSI API. For example, it will be much slower to use this to + /// call a global function than using the JSI APIs to read the function + /// property from the global object and then calling it explicitly. + virtual Value evaluateJavaScript( + const std::shared_ptr& buffer, + const std::string& sourceURL) = 0; + + /// Prepares to evaluate the given JavaScript \c buffer by processing it into + /// a form optimized for execution. This may include pre-parsing, compiling, + /// etc. If the input is invalid (for example, cannot be parsed), a + /// JSIException will be thrown. The resulting object is tied to the + /// particular concrete type of Runtime from which it was created. It may be + /// used (via evaluatePreparedJavaScript) in any Runtime of the same concrete + /// type. + /// The PreparedJavaScript object may be passed to multiple VM instances, so + /// they can all share and benefit from the prepared script. + /// As with evaluateJavaScript(), using JavaScript code should be avoided + /// when the JSI API is sufficient. + virtual std::shared_ptr prepareJavaScript( + const std::shared_ptr& buffer, + std::string sourceURL) = 0; + + /// Evaluates a PreparedJavaScript. If evaluation causes an error, a + /// JSIException will be thrown. + /// As with evaluateJavaScript(), using JavaScript code should be avoided + /// when the JSI API is sufficient. + virtual Value evaluatePreparedJavaScript( + const std::shared_ptr& js) = 0; + + /// Drain the JavaScript VM internal Microtask (a.k.a. Job in ECMA262) queue. + /// + /// \param maxMicrotasksHint a hint to tell an implementation that it should + /// make a best effort not execute more than the given number. It's default + /// to -1 for infinity (unbounded execution). + /// \return true if the queue is drained or false if there is more work to do. + /// + /// When there were exceptions thrown from the execution of microtasks, + /// implementations shall discard the exceptional jobs. An implementation may + /// \throw a \c JSError object to signal the hosts to handle. In that case, an + /// implementation may or may not suspend the draining. + /// + /// Hosts may call this function again to resume the draining if it was + /// suspended due to either exceptions or the \p maxMicrotasksHint bound. + /// E.g. a host may repetitively invoke this function until the queue is + /// drained to implement the "microtask checkpint" defined in WHATWG HTML + /// event loop: https://html.spec.whatwg.org/C#perform-a-microtask-checkpoint. + /// + /// Note that error propagation is only a concern if a host needs to implement + /// `queueMicrotask`, a recent API that allows enqueueing aribitary functions + /// (hence may throw) as microtasks. Exceptions from ECMA-262 Promise Jobs are + /// handled internally to VMs and are never propagrated to hosts. + /// + /// This API offers some queue management to hosts at its best effort due to + /// different behaviors and limitations imposed by different VMs and APIs. By + /// the time this is written, An implementation may swallow exceptions (JSC), + /// may not pause (V8), and may not support bounded executions. + virtual bool drainMicrotasks(int maxMicrotasksHint = -1) = 0; + + /// \return the global object + virtual Object global() = 0; + + /// \return a short printable description of the instance. It should + /// at least include some human-readable indication of the runtime + /// implementation. This should only be used by logging, debugging, + /// and other developer-facing callers. + virtual std::string description() = 0; + + /// \return whether or not the underlying runtime supports debugging via the + /// Chrome remote debugging protocol. + /// + /// NOTE: the API for determining whether a runtime is debuggable and + /// registering a runtime with the debugger is still in flux, so please don't + /// use this API unless you know what you're doing. + virtual bool isInspectable() = 0; + + /// \return an interface to extract metrics from this \c Runtime. The default + /// implementation of this function returns an \c Instrumentation instance + /// which returns no metrics. + virtual Instrumentation& instrumentation(); + + protected: + friend class Pointer; + friend class PropNameID; + friend class Symbol; + friend class String; + friend class Object; + friend class WeakObject; + friend class Array; + friend class ArrayBuffer; + friend class Function; + friend class Value; + friend class Scope; + friend class JSError; + + // Potential optimization: avoid the cloneFoo() virtual dispatch, + // and instead just fix the number of fields, and copy them, since + // in practice they are trivially copyable. Sufficient use of + // rvalue arguments/methods would also reduce the number of clones. + + struct PointerValue { + virtual void invalidate() = 0; + + protected: + virtual ~PointerValue() = default; + }; + + virtual PointerValue* cloneSymbol(const Runtime::PointerValue* pv) = 0; + virtual PointerValue* cloneString(const Runtime::PointerValue* pv) = 0; + virtual PointerValue* cloneObject(const Runtime::PointerValue* pv) = 0; + virtual PointerValue* clonePropNameID(const Runtime::PointerValue* pv) = 0; + + virtual PropNameID createPropNameIDFromAscii( + const char* str, + size_t length) = 0; + virtual PropNameID createPropNameIDFromUtf8( + const uint8_t* utf8, + size_t length) = 0; + virtual PropNameID createPropNameIDFromString(const String& str) = 0; + virtual std::string utf8(const PropNameID&) = 0; + virtual bool compare(const PropNameID&, const PropNameID&) = 0; + + virtual std::string symbolToString(const Symbol&) = 0; + + virtual String createStringFromAscii(const char* str, size_t length) = 0; + virtual String createStringFromUtf8(const uint8_t* utf8, size_t length) = 0; + virtual std::string utf8(const String&) = 0; + + // \return a \c Value created from a utf8-encoded JSON string. The default + // implementation creates a \c String and invokes JSON.parse. + virtual Value createValueFromJsonUtf8(const uint8_t* json, size_t length); + + virtual Object createObject() = 0; + virtual Object createObject(std::shared_ptr ho) = 0; + virtual std::shared_ptr getHostObject(const jsi::Object&) = 0; + virtual HostFunctionType& getHostFunction(const jsi::Function&) = 0; + + virtual Value getProperty(const Object&, const PropNameID& name) = 0; + virtual Value getProperty(const Object&, const String& name) = 0; + virtual bool hasProperty(const Object&, const PropNameID& name) = 0; + virtual bool hasProperty(const Object&, const String& name) = 0; + virtual void + setPropertyValue(Object&, const PropNameID& name, const Value& value) = 0; + virtual void + setPropertyValue(Object&, const String& name, const Value& value) = 0; + + virtual bool isArray(const Object&) const = 0; + virtual bool isArrayBuffer(const Object&) const = 0; + virtual bool isFunction(const Object&) const = 0; + virtual bool isHostObject(const jsi::Object&) const = 0; + virtual bool isHostFunction(const jsi::Function&) const = 0; + virtual Array getPropertyNames(const Object&) = 0; + + virtual WeakObject createWeakObject(const Object&) = 0; + virtual Value lockWeakObject(WeakObject&) = 0; + + virtual Array createArray(size_t length) = 0; + virtual size_t size(const Array&) = 0; + virtual size_t size(const ArrayBuffer&) = 0; + virtual uint8_t* data(const ArrayBuffer&) = 0; + virtual Value getValueAtIndex(const Array&, size_t i) = 0; + virtual void setValueAtIndexImpl(Array&, size_t i, const Value& value) = 0; + + virtual Function createFunctionFromHostFunction( + const PropNameID& name, + unsigned int paramCount, + HostFunctionType func) = 0; + virtual Value call( + const Function&, + const Value& jsThis, + const Value* args, + size_t count) = 0; + virtual Value + callAsConstructor(const Function&, const Value* args, size_t count) = 0; + + // Private data for managing scopes. + struct ScopeState; + virtual ScopeState* pushScope(); + virtual void popScope(ScopeState*); + + virtual bool strictEquals(const Symbol& a, const Symbol& b) const = 0; + virtual bool strictEquals(const String& a, const String& b) const = 0; + virtual bool strictEquals(const Object& a, const Object& b) const = 0; + + virtual bool instanceOf(const Object& o, const Function& f) = 0; + + // These exist so derived classes can access the private parts of + // Value, Symbol, String, and Object, which are all friends of Runtime. + template + static T make(PointerValue* pv); + static PointerValue* getPointerValue(Pointer& pointer); + static const PointerValue* getPointerValue(const Pointer& pointer); + static const PointerValue* getPointerValue(const Value& value); + + friend class ::FBJSRuntime; + template + friend class RuntimeDecorator; +}; + +// Base class for pointer-storing types. +class JSI_EXPORT Pointer { + protected: + explicit Pointer(Pointer&& other) : ptr_(other.ptr_) { + other.ptr_ = nullptr; + } + + ~Pointer() { + if (ptr_) { + ptr_->invalidate(); + } + } + + Pointer& operator=(Pointer&& other); + + friend class Runtime; + friend class Value; + + explicit Pointer(Runtime::PointerValue* ptr) : ptr_(ptr) {} + + typename Runtime::PointerValue* ptr_; +}; + +/// Represents something that can be a JS property key. Movable, not copyable. +class JSI_EXPORT PropNameID : public Pointer { + public: + using Pointer::Pointer; + + PropNameID(Runtime& runtime, const PropNameID& other) + : Pointer(runtime.clonePropNameID(other.ptr_)) {} + + PropNameID(PropNameID&& other) = default; + PropNameID& operator=(PropNameID&& other) = default; + + /// Create a JS property name id from ascii values. The data is + /// copied. + static PropNameID forAscii(Runtime& runtime, const char* str, size_t length) { + return runtime.createPropNameIDFromAscii(str, length); + } + + /// Create a property name id from a nul-terminated C ascii name. The data is + /// copied. + static PropNameID forAscii(Runtime& runtime, const char* str) { + return forAscii(runtime, str, strlen(str)); + } + + /// Create a PropNameID from a C++ string. The string is copied. + static PropNameID forAscii(Runtime& runtime, const std::string& str) { + return forAscii(runtime, str.c_str(), str.size()); + } + + /// Create a PropNameID from utf8 values. The data is copied. + static PropNameID + forUtf8(Runtime& runtime, const uint8_t* utf8, size_t length) { + return runtime.createPropNameIDFromUtf8(utf8, length); + } + + /// Create a PropNameID from utf8-encoded octets stored in a + /// std::string. The string data is transformed and copied. + static PropNameID forUtf8(Runtime& runtime, const std::string& utf8) { + return runtime.createPropNameIDFromUtf8( + reinterpret_cast(utf8.data()), utf8.size()); + } + + /// Create a PropNameID from a JS string. + static PropNameID forString(Runtime& runtime, const jsi::String& str) { + return runtime.createPropNameIDFromString(str); + } + + // Creates a vector of PropNameIDs constructed from given arguments. + template + static std::vector names(Runtime& runtime, Args&&... args); + + // Creates a vector of given PropNameIDs. + template + static std::vector names(PropNameID(&&propertyNames)[N]); + + /// Copies the data in a PropNameID as utf8 into a C++ string. + std::string utf8(Runtime& runtime) const { + return runtime.utf8(*this); + } + + static bool compare( + Runtime& runtime, + const jsi::PropNameID& a, + const jsi::PropNameID& b) { + return runtime.compare(a, b); + } + + friend class Runtime; + friend class Value; +}; + +/// Represents a JS Symbol (es6). Movable, not copyable. +/// TODO T40778724: this is a limited implementation sufficient for +/// the debugger not to crash when a Symbol is a property in an Object +/// or element in an array. Complete support for creating will come +/// later. +class JSI_EXPORT Symbol : public Pointer { + public: + using Pointer::Pointer; + + Symbol(Symbol&& other) = default; + Symbol& operator=(Symbol&& other) = default; + + /// \return whether a and b refer to the same symbol. + static bool strictEquals(Runtime& runtime, const Symbol& a, const Symbol& b) { + return runtime.strictEquals(a, b); + } + + /// Converts a Symbol into a C++ string as JS .toString would. The output + /// will look like \c Symbol(description) . + std::string toString(Runtime& runtime) const { + return runtime.symbolToString(*this); + } + + friend class Runtime; + friend class Value; +}; + +/// Represents a JS String. Movable, not copyable. +class JSI_EXPORT String : public Pointer { + public: + using Pointer::Pointer; + + String(String&& other) = default; + String& operator=(String&& other) = default; + + /// Create a JS string from ascii values. The string data is + /// copied. + static String + createFromAscii(Runtime& runtime, const char* str, size_t length) { + return runtime.createStringFromAscii(str, length); + } + + /// Create a JS string from a nul-terminated C ascii string. The + /// string data is copied. + static String createFromAscii(Runtime& runtime, const char* str) { + return createFromAscii(runtime, str, strlen(str)); + } + + /// Create a JS string from a C++ string. The string data is + /// copied. + static String createFromAscii(Runtime& runtime, const std::string& str) { + return createFromAscii(runtime, str.c_str(), str.size()); + } + + /// Create a JS string from utf8-encoded octets. The string data is + /// transformed and copied. + static String + createFromUtf8(Runtime& runtime, const uint8_t* utf8, size_t length) { + return runtime.createStringFromUtf8(utf8, length); + } + + /// Create a JS string from utf8-encoded octets stored in a + /// std::string. The string data is transformed and copied. + static String createFromUtf8(Runtime& runtime, const std::string& utf8) { + return runtime.createStringFromUtf8( + reinterpret_cast(utf8.data()), utf8.length()); + } + + /// \return whether a and b contain the same characters. + static bool strictEquals(Runtime& runtime, const String& a, const String& b) { + return runtime.strictEquals(a, b); + } + + /// Copies the data in a JS string as utf8 into a C++ string. + std::string utf8(Runtime& runtime) const { + return runtime.utf8(*this); + } + + friend class Runtime; + friend class Value; +}; + +class Array; +class Function; + +/// Represents a JS Object. Movable, not copyable. +class JSI_EXPORT Object : public Pointer { + public: + using Pointer::Pointer; + + Object(Object&& other) = default; + Object& operator=(Object&& other) = default; + + /// Creates a new Object instance, like '{}' in JS. + Object(Runtime& runtime) : Object(runtime.createObject()) {} + + static Object createFromHostObject( + Runtime& runtime, + std::shared_ptr ho) { + return runtime.createObject(ho); + } + + /// \return whether this and \c obj are the same JSObject or not. + static bool strictEquals(Runtime& runtime, const Object& a, const Object& b) { + return runtime.strictEquals(a, b); + } + + /// \return the result of `this instanceOf ctor` in JS. + bool instanceOf(Runtime& rt, const Function& ctor) { + return rt.instanceOf(*this, ctor); + } + + /// \return the property of the object with the given ascii name. + /// If the name isn't a property on the object, returns the + /// undefined value. + Value getProperty(Runtime& runtime, const char* name) const; + + /// \return the property of the object with the String name. + /// If the name isn't a property on the object, returns the + /// undefined value. + Value getProperty(Runtime& runtime, const String& name) const; + + /// \return the property of the object with the given JS PropNameID + /// name. If the name isn't a property on the object, returns the + /// undefined value. + Value getProperty(Runtime& runtime, const PropNameID& name) const; + + /// \return true if and only if the object has a property with the + /// given ascii name. + bool hasProperty(Runtime& runtime, const char* name) const; + + /// \return true if and only if the object has a property with the + /// given String name. + bool hasProperty(Runtime& runtime, const String& name) const; + + /// \return true if and only if the object has a property with the + /// given PropNameID name. + bool hasProperty(Runtime& runtime, const PropNameID& name) const; + + /// Sets the property value from a Value or anything which can be + /// used to make one: nullptr_t, bool, double, int, const char*, + /// String, or Object. + template + void setProperty(Runtime& runtime, const char* name, T&& value); + + /// Sets the property value from a Value or anything which can be + /// used to make one: nullptr_t, bool, double, int, const char*, + /// String, or Object. + template + void setProperty(Runtime& runtime, const String& name, T&& value); + + /// Sets the property value from a Value or anything which can be + /// used to make one: nullptr_t, bool, double, int, const char*, + /// String, or Object. + template + void setProperty(Runtime& runtime, const PropNameID& name, T&& value); + + /// \return true iff JS \c Array.isArray() would return \c true. If + /// so, then \c getArray() will succeed. + bool isArray(Runtime& runtime) const { + return runtime.isArray(*this); + } + + /// \return true iff the Object is an ArrayBuffer. If so, then \c + /// getArrayBuffer() will succeed. + bool isArrayBuffer(Runtime& runtime) const { + return runtime.isArrayBuffer(*this); + } + + /// \return true iff the Object is callable. If so, then \c + /// getFunction will succeed. + bool isFunction(Runtime& runtime) const { + return runtime.isFunction(*this); + } + + /// \return true iff the Object was initialized with \c createFromHostObject + /// and the HostObject passed is of type \c T. If returns \c true then + /// \c getHostObject will succeed. + template + bool isHostObject(Runtime& runtime) const; + + /// \return an Array instance which refers to the same underlying + /// object. If \c isArray() would return false, this will assert. + Array getArray(Runtime& runtime) const&; + + /// \return an Array instance which refers to the same underlying + /// object. If \c isArray() would return false, this will assert. + Array getArray(Runtime& runtime) &&; + + /// \return an Array instance which refers to the same underlying + /// object. If \c isArray() would return false, this will throw + /// JSIException. + Array asArray(Runtime& runtime) const&; + + /// \return an Array instance which refers to the same underlying + /// object. If \c isArray() would return false, this will throw + /// JSIException. + Array asArray(Runtime& runtime) &&; + + /// \return an ArrayBuffer instance which refers to the same underlying + /// object. If \c isArrayBuffer() would return false, this will assert. + ArrayBuffer getArrayBuffer(Runtime& runtime) const&; + + /// \return an ArrayBuffer instance which refers to the same underlying + /// object. If \c isArrayBuffer() would return false, this will assert. + ArrayBuffer getArrayBuffer(Runtime& runtime) &&; + + /// \return a Function instance which refers to the same underlying + /// object. If \c isFunction() would return false, this will assert. + Function getFunction(Runtime& runtime) const&; + + /// \return a Function instance which refers to the same underlying + /// object. If \c isFunction() would return false, this will assert. + Function getFunction(Runtime& runtime) &&; + + /// \return a Function instance which refers to the same underlying + /// object. If \c isFunction() would return false, this will throw + /// JSIException. + Function asFunction(Runtime& runtime) const&; + + /// \return a Function instance which refers to the same underlying + /// object. If \c isFunction() would return false, this will throw + /// JSIException. + Function asFunction(Runtime& runtime) &&; + + /// \return a shared_ptr which refers to the same underlying + /// \c HostObject that was used to create this object. If \c isHostObject + /// is false, this will assert. Note that this does a type check and will + /// assert if the underlying HostObject isn't of type \c T + template + std::shared_ptr getHostObject(Runtime& runtime) const; + + /// \return a shared_ptr which refers to the same underlying + /// \c HostObject that was used to crete this object. If \c isHostObject + /// is false, this will throw. + template + std::shared_ptr asHostObject(Runtime& runtime) const; + + /// \return same as \c getProperty(name).asObject(), except with + /// a better exception message. + Object getPropertyAsObject(Runtime& runtime, const char* name) const; + + /// \return similar to \c + /// getProperty(name).getObject().getFunction(), except it will + /// throw JSIException instead of asserting if the property is + /// not an object, or the object is not callable. + Function getPropertyAsFunction(Runtime& runtime, const char* name) const; + + /// \return an Array consisting of all enumerable property names in + /// the object and its prototype chain. All values in the return + /// will be isString(). (This is probably not optimal, but it + /// works. I only need it in one place.) + Array getPropertyNames(Runtime& runtime) const; + + protected: + void + setPropertyValue(Runtime& runtime, const String& name, const Value& value) { + return runtime.setPropertyValue(*this, name, value); + } + + void setPropertyValue( + Runtime& runtime, + const PropNameID& name, + const Value& value) { + return runtime.setPropertyValue(*this, name, value); + } + + friend class Runtime; + friend class Value; +}; + +/// Represents a weak reference to a JS Object. If the only reference +/// to an Object are these, the object is eligible for GC. Method +/// names are inspired by C++ weak_ptr. Movable, not copyable. +class JSI_EXPORT WeakObject : public Pointer { + public: + using Pointer::Pointer; + + WeakObject(WeakObject&& other) = default; + WeakObject& operator=(WeakObject&& other) = default; + + /// Create a WeakObject from an Object. + WeakObject(Runtime& runtime, const Object& o) + : WeakObject(runtime.createWeakObject(o)) {} + + /// \return a Value representing the underlying Object if it is still valid; + /// otherwise returns \c undefined. Note that this method has nothing to do + /// with threads or concurrency. The name is based on std::weak_ptr::lock() + /// which serves a similar purpose. + Value lock(Runtime& runtime); + + friend class Runtime; +}; + +/// Represents a JS Object which can be efficiently used as an array +/// with integral indices. +class JSI_EXPORT Array : public Object { + public: + Array(Array&&) = default; + /// Creates a new Array instance, with \c length undefined elements. + Array(Runtime& runtime, size_t length) : Array(runtime.createArray(length)) {} + + Array& operator=(Array&&) = default; + + /// \return the size of the Array, according to its length property. + /// (C++ naming convention) + size_t size(Runtime& runtime) const { + return runtime.size(*this); + } + + /// \return the size of the Array, according to its length property. + /// (JS naming convention) + size_t length(Runtime& runtime) const { + return size(runtime); + } + + /// \return the property of the array at index \c i. If there is no + /// such property, returns the undefined value. If \c i is out of + /// range [ 0..\c length ] throws a JSIException. + Value getValueAtIndex(Runtime& runtime, size_t i) const; + + /// Sets the property of the array at index \c i. The argument + /// value behaves as with Object::setProperty(). If \c i is out of + /// range [ 0..\c length ] throws a JSIException. + template + void setValueAtIndex(Runtime& runtime, size_t i, T&& value); + + /// There is no current API for changing the size of an array once + /// created. We'll probably need that eventually. + + /// Creates a new Array instance from provided values + template + static Array createWithElements(Runtime&, Args&&... args); + + /// Creates a new Array instance from initializer list. + static Array createWithElements( + Runtime& runtime, + std::initializer_list elements); + + private: + friend class Object; + friend class Value; + + void setValueAtIndexImpl(Runtime& runtime, size_t i, const Value& value) { + return runtime.setValueAtIndexImpl(*this, i, value); + } + + Array(Runtime::PointerValue* value) : Object(value) {} +}; + +/// Represents a JSArrayBuffer +class JSI_EXPORT ArrayBuffer : public Object { + public: + ArrayBuffer(ArrayBuffer&&) = default; + ArrayBuffer& operator=(ArrayBuffer&&) = default; + + /// \return the size of the ArrayBuffer, according to its byteLength property. + /// (C++ naming convention) + size_t size(Runtime& runtime) const { + return runtime.size(*this); + } + + size_t length(Runtime& runtime) const { + return runtime.size(*this); + } + + uint8_t* data(Runtime& runtime) { + return runtime.data(*this); + } + + private: + friend class Object; + friend class Value; + + ArrayBuffer(Runtime::PointerValue* value) : Object(value) {} +}; + +/// Represents a JS Object which is guaranteed to be Callable. +class JSI_EXPORT Function : public Object { + public: + Function(Function&&) = default; + Function& operator=(Function&&) = default; + + /// Create a function which, when invoked, calls C++ code. If the + /// function throws an exception, a JS Error will be created and + /// thrown. + /// \param name the name property for the function. + /// \param paramCount the length property for the function, which + /// may not be the number of arguments the function is passed. + static Function createFromHostFunction( + Runtime& runtime, + const jsi::PropNameID& name, + unsigned int paramCount, + jsi::HostFunctionType func); + + /// Calls the function with \c count \c args. The \c this value of the JS + /// function will not be set by the C++ caller, similar to calling + /// Function.prototype.apply(undefined, args) in JS. + /// \b Note: as with Function.prototype.apply, \c this may not always be + /// \c undefined in the function itself. If the function is non-strict, + /// \c this will be set to the global object. + Value call(Runtime& runtime, const Value* args, size_t count) const; + + /// Calls the function with a \c std::initializer_list of Value + /// arguments. The \c this value of the JS function will not be set by the + /// C++ caller, similar to calling Function.prototype.apply(undefined, args) + /// in JS. + /// \b Note: as with Function.prototype.apply, \c this may not always be + /// \c undefined in the function itself. If the function is non-strict, + /// \c this will be set to the global object. + Value call(Runtime& runtime, std::initializer_list args) const; + + /// Calls the function with any number of arguments similarly to + /// Object::setProperty(). The \c this value of the JS function will not be + /// set by the C++ caller, similar to calling + /// Function.prototype.call(undefined, ...args) in JS. + /// \b Note: as with Function.prototype.call, \c this may not always be + /// \c undefined in the function itself. If the function is non-strict, + /// \c this will be set to the global object. + template + Value call(Runtime& runtime, Args&&... args) const; + + /// Calls the function with \c count \c args and \c jsThis value passed + /// as the \c this value. + Value callWithThis( + Runtime& Runtime, + const Object& jsThis, + const Value* args, + size_t count) const; + + /// Calls the function with a \c std::initializer_list of Value + /// arguments and \c jsThis passed as the \c this value. + Value callWithThis( + Runtime& runtime, + const Object& jsThis, + std::initializer_list args) const; + + /// Calls the function with any number of arguments similarly to + /// Object::setProperty(), and with \c jsThis passed as the \c this value. + template + Value callWithThis(Runtime& runtime, const Object& jsThis, Args&&... args) + const; + + /// Calls the function as a constructor with \c count \c args. Equivalent + /// to calling `new Func` where `Func` is the js function reqresented by + /// this. + Value callAsConstructor(Runtime& runtime, const Value* args, size_t count) + const; + + /// Same as above `callAsConstructor`, except use an initializer_list to + /// supply the arguments. + Value callAsConstructor(Runtime& runtime, std::initializer_list args) + const; + + /// Same as above `callAsConstructor`, but automatically converts/wraps + /// any argument with a jsi Value. + template + Value callAsConstructor(Runtime& runtime, Args&&... args) const; + + /// Returns whether this was created with Function::createFromHostFunction. + /// If true then you can use getHostFunction to get the underlying + /// HostFunctionType. + bool isHostFunction(Runtime& runtime) const { + return runtime.isHostFunction(*this); + } + + /// Returns the underlying HostFunctionType iff isHostFunction returns true + /// and asserts otherwise. You can use this to use std::function<>::target + /// to get the object that was passed to create the HostFunctionType. + /// + /// Note: The reference returned is borrowed from the JS object underlying + /// \c this, and thus only lasts as long as the object underlying + /// \c this does. + HostFunctionType& getHostFunction(Runtime& runtime) const { + assert(isHostFunction(runtime)); + return runtime.getHostFunction(*this); + } + + private: + friend class Object; + friend class Value; + + Function(Runtime::PointerValue* value) : Object(value) {} +}; + +/// Represents any JS Value (undefined, null, boolean, number, symbol, +/// string, or object). Movable, or explicitly copyable (has no copy +/// ctor). +class JSI_EXPORT Value { + public: + /// Default ctor creates an \c undefined JS value. + Value() : Value(UndefinedKind) {} + + /// Creates a \c null JS value. + /* implicit */ Value(std::nullptr_t) : kind_(NullKind) {} + + /// Creates a boolean JS value. + /* implicit */ Value(bool b) : Value(BooleanKind) { + data_.boolean = b; + } + + /// Creates a number JS value. + /* implicit */ Value(double d) : Value(NumberKind) { + data_.number = d; + } + + /// Creates a number JS value. + /* implicit */ Value(int i) : Value(NumberKind) { + data_.number = i; + } + + /// Moves a Symbol, String, or Object rvalue into a new JS value. + template + /* implicit */ Value(T&& other) : Value(kindOf(other)) { + static_assert( + std::is_base_of::value || + std::is_base_of::value || + std::is_base_of::value, + "Value cannot be implicitly move-constructed from this type"); + new (&data_.pointer) T(std::move(other)); + } + + /// Value("foo") will treat foo as a bool. This makes doing that a + /// compile error. + template + Value(const char*) { + static_assert( + !std::is_same::value, + "Value cannot be constructed directly from const char*"); + } + + Value(Value&& value); + + /// Copies a Symbol lvalue into a new JS value. + Value(Runtime& runtime, const Symbol& sym) : Value(SymbolKind) { + new (&data_.pointer) String(runtime.cloneSymbol(sym.ptr_)); + } + + /// Copies a String lvalue into a new JS value. + Value(Runtime& runtime, const String& str) : Value(StringKind) { + new (&data_.pointer) String(runtime.cloneString(str.ptr_)); + } + + /// Copies a Object lvalue into a new JS value. + Value(Runtime& runtime, const Object& obj) : Value(ObjectKind) { + new (&data_.pointer) Object(runtime.cloneObject(obj.ptr_)); + } + + /// Creates a JS value from another Value lvalue. + Value(Runtime& runtime, const Value& value); + + /// Value(rt, "foo") will treat foo as a bool. This makes doing + /// that a compile error. + template + Value(Runtime&, const char*) { + static_assert( + !std::is_same::value, + "Value cannot be constructed directly from const char*"); + } + + ~Value(); + // \return the undefined \c Value. + static Value undefined() { + return Value(); + } + + // \return the null \c Value. + static Value null() { + return Value(nullptr); + } + + // \return a \c Value created from a utf8-encoded JSON string. + static Value + createFromJsonUtf8(Runtime& runtime, const uint8_t* json, size_t length) { + return runtime.createValueFromJsonUtf8(json, length); + } + + /// \return according to the Strict Equality Comparison algorithm, see: + /// https://262.ecma-international.org/11.0/#sec-strict-equality-comparison + static bool strictEquals(Runtime& runtime, const Value& a, const Value& b); + + Value& operator=(Value&& other) { + this->~Value(); + new (this) Value(std::move(other)); + return *this; + } + + bool isUndefined() const { + return kind_ == UndefinedKind; + } + + bool isNull() const { + return kind_ == NullKind; + } + + bool isBool() const { + return kind_ == BooleanKind; + } + + bool isNumber() const { + return kind_ == NumberKind; + } + + bool isString() const { + return kind_ == StringKind; + } + + bool isSymbol() const { + return kind_ == SymbolKind; + } + + bool isObject() const { + return kind_ == ObjectKind; + } + + /// \return the boolean value, or asserts if not a boolean. + bool getBool() const { + assert(isBool()); + return data_.boolean; + } + + /// \return the number value, or asserts if not a number. + double getNumber() const { + assert(isNumber()); + return data_.number; + } + + /// \return the number value, or throws JSIException if not a + /// number. + double asNumber() const; + + /// \return the Symbol value, or asserts if not a symbol. + Symbol getSymbol(Runtime& runtime) const& { + assert(isSymbol()); + return Symbol(runtime.cloneSymbol(data_.pointer.ptr_)); + } + + /// \return the Symbol value, or asserts if not a symbol. + /// Can be used on rvalue references to avoid cloning more symbols. + Symbol getSymbol(Runtime&) && { + assert(isSymbol()); + auto ptr = data_.pointer.ptr_; + data_.pointer.ptr_ = nullptr; + return static_cast(ptr); + } + + /// \return the Symbol value, or throws JSIException if not a + /// symbol + Symbol asSymbol(Runtime& runtime) const&; + Symbol asSymbol(Runtime& runtime) &&; + + /// \return the String value, or asserts if not a string. + String getString(Runtime& runtime) const& { + assert(isString()); + return String(runtime.cloneString(data_.pointer.ptr_)); + } + + /// \return the String value, or asserts if not a string. + /// Can be used on rvalue references to avoid cloning more strings. + String getString(Runtime&) && { + assert(isString()); + auto ptr = data_.pointer.ptr_; + data_.pointer.ptr_ = nullptr; + return static_cast(ptr); + } + + /// \return the String value, or throws JSIException if not a + /// string. + String asString(Runtime& runtime) const&; + String asString(Runtime& runtime) &&; + + /// \return the Object value, or asserts if not an object. + Object getObject(Runtime& runtime) const& { + assert(isObject()); + return Object(runtime.cloneObject(data_.pointer.ptr_)); + } + + /// \return the Object value, or asserts if not an object. + /// Can be used on rvalue references to avoid cloning more objects. + Object getObject(Runtime&) && { + assert(isObject()); + auto ptr = data_.pointer.ptr_; + data_.pointer.ptr_ = nullptr; + return static_cast(ptr); + } + + /// \return the Object value, or throws JSIException if not an + /// object. + Object asObject(Runtime& runtime) const&; + Object asObject(Runtime& runtime) &&; + + // \return a String like JS .toString() would do. + String toString(Runtime& runtime) const; + + private: + friend class Runtime; + + enum ValueKind { + UndefinedKind, + NullKind, + BooleanKind, + NumberKind, + SymbolKind, + StringKind, + ObjectKind, + PointerKind = SymbolKind, + }; + + union Data { + // Value's ctor and dtor will manage the lifecycle of the contained Data. + Data() { + static_assert( + sizeof(Data) == sizeof(uint64_t), + "Value data should fit in a 64-bit register"); + } + ~Data() {} + + // scalars + bool boolean; + double number; + // pointers + Pointer pointer; // Symbol, String, Object, Array, Function + }; + + Value(ValueKind kind) : kind_(kind) {} + + constexpr static ValueKind kindOf(const Symbol&) { + return SymbolKind; + } + constexpr static ValueKind kindOf(const String&) { + return StringKind; + } + constexpr static ValueKind kindOf(const Object&) { + return ObjectKind; + } + + ValueKind kind_; + Data data_; + + // In the future: Value becomes NaN-boxed. See T40538354. +}; + +/// Not movable and not copyable RAII marker advising the underlying +/// JavaScript VM to track resources allocated since creation until +/// destruction so that they can be recycled eagerly when the Scope +/// goes out of scope instead of floating in the air until the next +/// garbage collection or any other delayed release occurs. +/// +/// This API should be treated only as advice, implementations can +/// choose to ignore the fact that Scopes are created or destroyed. +/// +/// This class is an exception to the rule allowing destructors to be +/// called without proper synchronization (see Runtime documentation). +/// The whole point of this class is to enable all sorts of clean ups +/// when the destructor is called and this proper synchronization is +/// required at that time. +/// +/// Instances of this class are intended to be created as automatic stack +/// variables in which case destructor calls don't require any additional +/// locking, provided that the lock (if any) is managed with RAII helpers. +class JSI_EXPORT Scope { + public: + explicit Scope(Runtime& rt) : rt_(rt), prv_(rt.pushScope()) {} + ~Scope() { + rt_.popScope(prv_); + }; + + Scope(const Scope&) = delete; + Scope(Scope&&) = delete; + + Scope& operator=(const Scope&) = delete; + Scope& operator=(Scope&&) = delete; + + template + static auto callInNewScope(Runtime& rt, F f) -> decltype(f()) { + Scope s(rt); + return f(); + } + + private: + Runtime& rt_; + Runtime::ScopeState* prv_; +}; + +/// Base class for jsi exceptions +class JSI_EXPORT JSIException : public std::exception { + protected: + JSIException(){}; + JSIException(std::string what) : what_(std::move(what)){}; + + public: + virtual const char* what() const noexcept override { + return what_.c_str(); + } + + virtual ~JSIException(); + + protected: + std::string what_; +}; + +/// This exception will be thrown by API functions on errors not related to +/// JavaScript execution. +class JSI_EXPORT JSINativeException : public JSIException { + public: + JSINativeException(std::string what) : JSIException(std::move(what)) {} + + virtual ~JSINativeException(); +}; + +/// This exception will be thrown by API functions whenever a JS +/// operation causes an exception as described by the spec, or as +/// otherwise described. +class JSI_EXPORT JSError : public JSIException { + public: + /// Creates a JSError referring to provided \c value + JSError(Runtime& r, Value&& value); + + /// Creates a JSError referring to new \c Error instance capturing current + /// JavaScript stack. The error message property is set to given \c message. + JSError(Runtime& rt, std::string message); + + /// Creates a JSError referring to new \c Error instance capturing current + /// JavaScript stack. The error message property is set to given \c message. + JSError(Runtime& rt, const char* message) + : JSError(rt, std::string(message)){}; + + /// Creates a JSError referring to a JavaScript Object having message and + /// stack properties set to provided values. + JSError(Runtime& rt, std::string message, std::string stack); + + /// Creates a JSError referring to provided value and what string + /// set to provided message. This argument order is a bit weird, + /// but necessary to avoid ambiguity with the above. + JSError(std::string what, Runtime& rt, Value&& value); + + virtual ~JSError(); + + const std::string& getStack() const { + return stack_; + } + + const std::string& getMessage() const { + return message_; + } + + const jsi::Value& value() const { + assert(value_); + return *value_; + } + + private: + // This initializes the value_ member and does some other + // validation, so it must be called by every branch through the + // constructors. + void setValue(Runtime& rt, Value&& value); + + // This needs to be on the heap, because throw requires the object + // be copyable, and Value is not. + std::shared_ptr value_; + std::string message_; + std::string stack_; +}; + +} // namespace jsi +} // namespace facebook + +#include diff --git a/Frameworks/React-jsi.xcframework/ios-arm64/Headers/jsi/jsilib.h b/Frameworks/React-jsi.xcframework/ios-arm64/Headers/jsi/jsilib.h new file mode 100644 index 0000000..d99b66d --- /dev/null +++ b/Frameworks/React-jsi.xcframework/ios-arm64/Headers/jsi/jsilib.h @@ -0,0 +1,59 @@ +/* + * 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. + */ + +#pragma once + +#include + +namespace facebook { +namespace jsi { + +class FileBuffer : public Buffer { + public: + FileBuffer(const std::string& path); + ~FileBuffer(); + + size_t size() const override { + return size_; + } + + const uint8_t* data() const override { + return data_; + } + + private: + size_t size_; + uint8_t* data_; +}; + +// A trivial implementation of PreparedJavaScript that simply stores the source +// buffer and URL. +class SourceJavaScriptPreparation final : public jsi::PreparedJavaScript, + public jsi::Buffer { + std::shared_ptr buf_; + std::string sourceURL_; + + public: + SourceJavaScriptPreparation( + std::shared_ptr buf, + std::string sourceURL) + : buf_(std::move(buf)), sourceURL_(std::move(sourceURL)) {} + + const std::string& sourceURL() const { + return sourceURL_; + } + + size_t size() const override { + return buf_->size(); + } + const uint8_t* data() const override { + return buf_->data(); + } +}; + +} // namespace jsi +} // namespace facebook diff --git a/Frameworks/React-jsi.xcframework/ios-arm64/Headers/jsi/threadsafe.h b/Frameworks/React-jsi.xcframework/ios-arm64/Headers/jsi/threadsafe.h new file mode 100644 index 0000000..eddbce4 --- /dev/null +++ b/Frameworks/React-jsi.xcframework/ios-arm64/Headers/jsi/threadsafe.h @@ -0,0 +1,79 @@ +/* + * 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. + */ + +#pragma once + +#include + +#include +#include + +namespace facebook { +namespace jsi { + +class ThreadSafeRuntime : public Runtime { + public: + virtual void lock() const = 0; + virtual void unlock() const = 0; + virtual Runtime& getUnsafeRuntime() = 0; +}; + +namespace detail { + +template +struct WithLock { + L lock; + WithLock(R& r) : lock(r) {} + void before() { + lock.lock(); + } + void after() { + lock.unlock(); + } +}; + +// The actual implementation of a given ThreadSafeRuntime. It's parameterized +// by: +// +// - R: The actual Runtime type that this wraps +// - L: A lock type that has three members: +// - L(R& r) // ctor +// - void lock() +// - void unlock() +template +class ThreadSafeRuntimeImpl final + : public WithRuntimeDecorator, R, ThreadSafeRuntime> { + public: + template + ThreadSafeRuntimeImpl(Args&&... args) + : WithRuntimeDecorator, R, ThreadSafeRuntime>( + unsafe_, + lock_), + unsafe_(std::forward(args)...), + lock_(unsafe_) {} + + R& getUnsafeRuntime() override { + return WithRuntimeDecorator, R, ThreadSafeRuntime>::plain(); + } + + void lock() const override { + lock_.before(); + } + + void unlock() const override { + lock_.after(); + } + + private: + R unsafe_; + mutable WithLock lock_; +}; + +} // namespace detail + +} // namespace jsi +} // namespace facebook diff --git a/Frameworks/React-jsi.xcframework/ios-arm64/libReact-jsi.a b/Frameworks/React-jsi.xcframework/ios-arm64/libReact-jsi.a new file mode 100644 index 0000000..7ceb07b Binary files /dev/null and b/Frameworks/React-jsi.xcframework/ios-arm64/libReact-jsi.a differ diff --git a/Frameworks/React-jsi.xcframework/ios-arm64_x86_64-simulator/Headers/jsi/JSCRuntime.h b/Frameworks/React-jsi.xcframework/ios-arm64_x86_64-simulator/Headers/jsi/JSCRuntime.h new file mode 100644 index 0000000..5455423 --- /dev/null +++ b/Frameworks/React-jsi.xcframework/ios-arm64_x86_64-simulator/Headers/jsi/JSCRuntime.h @@ -0,0 +1,19 @@ +/* + * 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. + */ + +#pragma once + +#include +#include + +namespace facebook { +namespace jsc { + +std::unique_ptr makeJSCRuntime(); + +} // namespace jsc +} // namespace facebook diff --git a/Frameworks/React-jsi.xcframework/ios-arm64_x86_64-simulator/Headers/jsi/JSIDynamic.h b/Frameworks/React-jsi.xcframework/ios-arm64_x86_64-simulator/Headers/jsi/JSIDynamic.h new file mode 100644 index 0000000..41f9d9f --- /dev/null +++ b/Frameworks/React-jsi.xcframework/ios-arm64_x86_64-simulator/Headers/jsi/JSIDynamic.h @@ -0,0 +1,25 @@ +/* + * 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. + */ + +#pragma once + +#include +#include + +namespace facebook { +namespace jsi { + +facebook::jsi::Value valueFromDynamic( + facebook::jsi::Runtime& runtime, + const folly::dynamic& dyn); + +folly::dynamic dynamicFromValue( + facebook::jsi::Runtime& runtime, + const facebook::jsi::Value& value); + +} // namespace jsi +} // namespace facebook diff --git a/Frameworks/React-jsi.xcframework/ios-arm64_x86_64-simulator/Headers/jsi/decorator.h b/Frameworks/React-jsi.xcframework/ios-arm64_x86_64-simulator/Headers/jsi/decorator.h new file mode 100644 index 0000000..be6f4f5 --- /dev/null +++ b/Frameworks/React-jsi.xcframework/ios-arm64_x86_64-simulator/Headers/jsi/decorator.h @@ -0,0 +1,753 @@ +/* + * 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. + */ + +#pragma once + +#include + +#include +#include + +// This file contains objects to help API users create their own +// runtime adapters, i.e. if you want to compose runtimes to add your +// own behavior. + +namespace facebook { +namespace jsi { + +// Use this to wrap host functions. It will pass the member runtime as +// the first arg to the callback. The first argument to the ctor +// should be the decorated runtime, not the plain one. +class DecoratedHostFunction { + public: + DecoratedHostFunction(Runtime& drt, HostFunctionType plainHF) + : drt_(drt), plainHF_(std::move(plainHF)) {} + + Runtime& decoratedRuntime() { + return drt_; + } + + Value + operator()(Runtime&, const Value& thisVal, const Value* args, size_t count) { + return plainHF_(decoratedRuntime(), thisVal, args, count); + } + + private: + template + friend class RuntimeDecorator; + + Runtime& drt_; + HostFunctionType plainHF_; +}; + +// From the perspective of the caller, a plain HostObject is passed to +// the decorated Runtime, and the HostObject methods expect to get +// passed that Runtime. But the plain Runtime will pass itself to its +// callback, so we need a helper here which curries the decorated +// Runtime, and calls the plain HostObject with it. +// +// If the concrete RuntimeDecorator derives DecoratedHostObject, it +// should call the base class get() and set() to invoke the plain +// HostObject functionality. The Runtime& it passes does not matter, +// as it is not used. +class DecoratedHostObject : public HostObject { + public: + DecoratedHostObject(Runtime& drt, std::shared_ptr plainHO) + : drt_(drt), plainHO_(plainHO) {} + + // The derived class methods can call this to get a reference to the + // decorated runtime, since the rt passed to the callback will be + // the plain runtime. + Runtime& decoratedRuntime() { + return drt_; + } + + Value get(Runtime&, const PropNameID& name) override { + return plainHO_->get(decoratedRuntime(), name); + } + + void set(Runtime&, const PropNameID& name, const Value& value) override { + plainHO_->set(decoratedRuntime(), name, value); + } + + std::vector getPropertyNames(Runtime&) override { + return plainHO_->getPropertyNames(decoratedRuntime()); + } + + private: + template + friend class RuntimeDecorator; + + Runtime& drt_; + std::shared_ptr plainHO_; +}; + +/// C++ variant on a standard Decorator pattern, using template +/// parameters. The \c Plain template parameter type is the +/// undecorated Runtime type. You can usually use \c Runtime here, +/// but if you know the concrete type ahead of time and it's final, +/// the compiler can devirtualize calls to the decorated +/// implementation. The \c Base template parameter type will be used +/// as the base class of the decorated type. Here, too, you can +/// usually use \c Runtime, but if you want the decorated type to +/// implement a derived class of Runtime, you can specify that here. +/// For an example, see threadsafe.h. +template +class RuntimeDecorator : public Base, private jsi::Instrumentation { + public: + Plain& plain() { + static_assert( + std::is_base_of::value, + "RuntimeDecorator's Plain type must derive from jsi::Runtime"); + static_assert( + std::is_base_of::value, + "RuntimeDecorator's Base type must derive from jsi::Runtime"); + return plain_; + } + const Plain& plain() const { + return plain_; + } + + Value evaluateJavaScript( + const std::shared_ptr& buffer, + const std::string& sourceURL) override { + return plain().evaluateJavaScript(buffer, sourceURL); + } + std::shared_ptr prepareJavaScript( + const std::shared_ptr& buffer, + std::string sourceURL) override { + return plain().prepareJavaScript(buffer, std::move(sourceURL)); + } + Value evaluatePreparedJavaScript( + const std::shared_ptr& js) override { + return plain().evaluatePreparedJavaScript(js); + } + bool drainMicrotasks(int maxMicrotasksHint) override { + return plain().drainMicrotasks(maxMicrotasksHint); + } + Object global() override { + return plain().global(); + } + std::string description() override { + return plain().description(); + }; + bool isInspectable() override { + return plain().isInspectable(); + }; + Instrumentation& instrumentation() override { + return *this; + } + + protected: + // plain is generally going to be a reference to an object managed + // by a derived class. We cache it here so this class can be + // concrete, and avoid making virtual calls to find the plain + // Runtime. Note that the ctor and dtor do not access through the + // reference, so passing a reference to an object before its + // lifetime has started is ok. + RuntimeDecorator(Plain& plain) : plain_(plain) {} + + Runtime::PointerValue* cloneSymbol(const Runtime::PointerValue* pv) override { + return plain_.cloneSymbol(pv); + }; + Runtime::PointerValue* cloneString(const Runtime::PointerValue* pv) override { + return plain_.cloneString(pv); + }; + Runtime::PointerValue* cloneObject(const Runtime::PointerValue* pv) override { + return plain_.cloneObject(pv); + }; + Runtime::PointerValue* clonePropNameID( + const Runtime::PointerValue* pv) override { + return plain_.clonePropNameID(pv); + }; + + PropNameID createPropNameIDFromAscii(const char* str, size_t length) + override { + return plain_.createPropNameIDFromAscii(str, length); + }; + PropNameID createPropNameIDFromUtf8(const uint8_t* utf8, size_t length) + override { + return plain_.createPropNameIDFromUtf8(utf8, length); + }; + PropNameID createPropNameIDFromString(const String& str) override { + return plain_.createPropNameIDFromString(str); + }; + std::string utf8(const PropNameID& id) override { + return plain_.utf8(id); + }; + bool compare(const PropNameID& a, const PropNameID& b) override { + return plain_.compare(a, b); + }; + + std::string symbolToString(const Symbol& sym) override { + return plain_.symbolToString(sym); + } + + String createStringFromAscii(const char* str, size_t length) override { + return plain_.createStringFromAscii(str, length); + }; + String createStringFromUtf8(const uint8_t* utf8, size_t length) override { + return plain_.createStringFromUtf8(utf8, length); + }; + std::string utf8(const String& s) override { + return plain_.utf8(s); + } + + Object createObject() override { + return plain_.createObject(); + }; + + Object createObject(std::shared_ptr ho) override { + return plain_.createObject( + std::make_shared(*this, std::move(ho))); + }; + std::shared_ptr getHostObject(const jsi::Object& o) override { + std::shared_ptr dho = plain_.getHostObject(o); + return static_cast(*dho).plainHO_; + }; + HostFunctionType& getHostFunction(const jsi::Function& f) override { + HostFunctionType& dhf = plain_.getHostFunction(f); + // This will fail if a cpp file including this header is not compiled + // with RTTI. + return dhf.target()->plainHF_; + }; + + Value getProperty(const Object& o, const PropNameID& name) override { + return plain_.getProperty(o, name); + }; + Value getProperty(const Object& o, const String& name) override { + return plain_.getProperty(o, name); + }; + bool hasProperty(const Object& o, const PropNameID& name) override { + return plain_.hasProperty(o, name); + }; + bool hasProperty(const Object& o, const String& name) override { + return plain_.hasProperty(o, name); + }; + void setPropertyValue(Object& o, const PropNameID& name, const Value& value) + override { + plain_.setPropertyValue(o, name, value); + }; + void setPropertyValue(Object& o, const String& name, const Value& value) + override { + plain_.setPropertyValue(o, name, value); + }; + + bool isArray(const Object& o) const override { + return plain_.isArray(o); + }; + bool isArrayBuffer(const Object& o) const override { + return plain_.isArrayBuffer(o); + }; + bool isFunction(const Object& o) const override { + return plain_.isFunction(o); + }; + bool isHostObject(const jsi::Object& o) const override { + return plain_.isHostObject(o); + }; + bool isHostFunction(const jsi::Function& f) const override { + return plain_.isHostFunction(f); + }; + Array getPropertyNames(const Object& o) override { + return plain_.getPropertyNames(o); + }; + + WeakObject createWeakObject(const Object& o) override { + return plain_.createWeakObject(o); + }; + Value lockWeakObject(WeakObject& wo) override { + return plain_.lockWeakObject(wo); + }; + + Array createArray(size_t length) override { + return plain_.createArray(length); + }; + size_t size(const Array& a) override { + return plain_.size(a); + }; + size_t size(const ArrayBuffer& ab) override { + return plain_.size(ab); + }; + uint8_t* data(const ArrayBuffer& ab) override { + return plain_.data(ab); + }; + Value getValueAtIndex(const Array& a, size_t i) override { + return plain_.getValueAtIndex(a, i); + }; + void setValueAtIndexImpl(Array& a, size_t i, const Value& value) override { + plain_.setValueAtIndexImpl(a, i, value); + }; + + Function createFunctionFromHostFunction( + const PropNameID& name, + unsigned int paramCount, + HostFunctionType func) override { + return plain_.createFunctionFromHostFunction( + name, paramCount, DecoratedHostFunction(*this, std::move(func))); + }; + Value call( + const Function& f, + const Value& jsThis, + const Value* args, + size_t count) override { + return plain_.call(f, jsThis, args, count); + }; + Value callAsConstructor(const Function& f, const Value* args, size_t count) + override { + return plain_.callAsConstructor(f, args, count); + }; + + // Private data for managing scopes. + Runtime::ScopeState* pushScope() override { + return plain_.pushScope(); + } + void popScope(Runtime::ScopeState* ss) override { + plain_.popScope(ss); + } + + bool strictEquals(const Symbol& a, const Symbol& b) const override { + return plain_.strictEquals(a, b); + }; + bool strictEquals(const String& a, const String& b) const override { + return plain_.strictEquals(a, b); + }; + bool strictEquals(const Object& a, const Object& b) const override { + return plain_.strictEquals(a, b); + }; + + bool instanceOf(const Object& o, const Function& f) override { + return plain_.instanceOf(o, f); + }; + + // jsi::Instrumentation methods + + std::string getRecordedGCStats() override { + return plain().instrumentation().getRecordedGCStats(); + } + + std::unordered_map getHeapInfo( + bool includeExpensive) override { + return plain().instrumentation().getHeapInfo(includeExpensive); + } + + void collectGarbage(std::string cause) override { + plain().instrumentation().collectGarbage(std::move(cause)); + } + + void startTrackingHeapObjectStackTraces( + std::function)> callback) override { + plain().instrumentation().startTrackingHeapObjectStackTraces( + std::move(callback)); + } + + void stopTrackingHeapObjectStackTraces() override { + plain().instrumentation().stopTrackingHeapObjectStackTraces(); + } + + void startHeapSampling(size_t samplingInterval) override { + plain().instrumentation().startHeapSampling(samplingInterval); + } + + void stopHeapSampling(std::ostream& os) override { + plain().instrumentation().stopHeapSampling(os); + } + + void createSnapshotToFile(const std::string& path) override { + plain().instrumentation().createSnapshotToFile(path); + } + + void createSnapshotToStream(std::ostream& os) override { + plain().instrumentation().createSnapshotToStream(os); + } + + std::string flushAndDisableBridgeTrafficTrace() override { + return const_cast(plain()) + .instrumentation() + .flushAndDisableBridgeTrafficTrace(); + } + + void writeBasicBlockProfileTraceToFile( + const std::string& fileName) const override { + const_cast(plain()) + .instrumentation() + .writeBasicBlockProfileTraceToFile(fileName); + } + + /// Dump external profiler symbols to the given file name. + void dumpProfilerSymbolsToFile(const std::string& fileName) const override { + const_cast(plain()).instrumentation().dumpProfilerSymbolsToFile( + fileName); + } + + private: + Plain& plain_; +}; + +namespace detail { + +// This metaprogramming allows the With type's methods to be +// optional. + +template +struct BeforeCaller { + static void before(T&) {} +}; + +template +struct AfterCaller { + static void after(T&) {} +}; + +// decltype((void)&...) is either SFINAE, or void. +// So, if SFINAE does not happen for T, then this specialization exists +// for BeforeCaller, and always applies. If not, only the +// default above exists, and that is used instead. +template +struct BeforeCaller { + static void before(T& t) { + t.before(); + } +}; + +template +struct AfterCaller { + static void after(T& t) { + t.after(); + } +}; + +// It's possible to use multiple decorators by nesting +// WithRuntimeDecorator<...>, but this specialization allows use of +// std::tuple of decorator classes instead. See testlib.cpp for an +// example. +template +struct BeforeCaller> { + static void before(std::tuple& tuple) { + all_before<0, T...>(tuple); + } + + private: + template + static void all_before(std::tuple& tuple) { + detail::BeforeCaller::before(std::get(tuple)); + all_before(tuple); + } + + template + static void all_before(std::tuple&) {} +}; + +template +struct AfterCaller> { + static void after(std::tuple& tuple) { + all_after<0, T...>(tuple); + } + + private: + template + static void all_after(std::tuple& tuple) { + all_after(tuple); + detail::AfterCaller::after(std::get(tuple)); + } + + template + static void all_after(std::tuple&) {} +}; + +} // namespace detail + +// A decorator which implements an around idiom. A With instance is +// RAII constructed before each call to the undecorated class; the +// ctor is passed a single argument of type WithArg&. Plain and Base +// are used as in the base class. +template +class WithRuntimeDecorator : public RuntimeDecorator { + public: + using RD = RuntimeDecorator; + + // The reference arguments to the ctor are stored, but not used by + // the ctor, and there is no ctor, so they can be passed members of + // the derived class. + WithRuntimeDecorator(Plain& plain, With& with) : RD(plain), with_(with) {} + + Value evaluateJavaScript( + const std::shared_ptr& buffer, + const std::string& sourceURL) override { + Around around{with_}; + return RD::evaluateJavaScript(buffer, sourceURL); + } + std::shared_ptr prepareJavaScript( + const std::shared_ptr& buffer, + std::string sourceURL) override { + Around around{with_}; + return RD::prepareJavaScript(buffer, std::move(sourceURL)); + } + Value evaluatePreparedJavaScript( + const std::shared_ptr& js) override { + Around around{with_}; + return RD::evaluatePreparedJavaScript(js); + } + bool drainMicrotasks(int maxMicrotasksHint) override { + Around around{with_}; + return RD::drainMicrotasks(maxMicrotasksHint); + } + Object global() override { + Around around{with_}; + return RD::global(); + } + std::string description() override { + Around around{with_}; + return RD::description(); + }; + bool isInspectable() override { + Around around{with_}; + return RD::isInspectable(); + }; + + // The jsi:: prefix is necessary because MSVC compiler complains C2247: + // Instrumentation is not accessible because RuntimeDecorator uses private + // to inherit from Instrumentation. + // TODO(T40821815) Consider removing this workaround when updating MSVC + jsi::Instrumentation& instrumentation() override { + Around around{with_}; + return RD::instrumentation(); + } + + protected: + Runtime::PointerValue* cloneSymbol(const Runtime::PointerValue* pv) override { + Around around{with_}; + return RD::cloneSymbol(pv); + }; + Runtime::PointerValue* cloneString(const Runtime::PointerValue* pv) override { + Around around{with_}; + return RD::cloneString(pv); + }; + Runtime::PointerValue* cloneObject(const Runtime::PointerValue* pv) override { + Around around{with_}; + return RD::cloneObject(pv); + }; + Runtime::PointerValue* clonePropNameID( + const Runtime::PointerValue* pv) override { + Around around{with_}; + return RD::clonePropNameID(pv); + }; + + PropNameID createPropNameIDFromAscii(const char* str, size_t length) + override { + Around around{with_}; + return RD::createPropNameIDFromAscii(str, length); + }; + PropNameID createPropNameIDFromUtf8(const uint8_t* utf8, size_t length) + override { + Around around{with_}; + return RD::createPropNameIDFromUtf8(utf8, length); + }; + PropNameID createPropNameIDFromString(const String& str) override { + Around around{with_}; + return RD::createPropNameIDFromString(str); + }; + std::string utf8(const PropNameID& id) override { + Around around{with_}; + return RD::utf8(id); + }; + bool compare(const PropNameID& a, const PropNameID& b) override { + Around around{with_}; + return RD::compare(a, b); + }; + + std::string symbolToString(const Symbol& sym) override { + Around around{with_}; + return RD::symbolToString(sym); + }; + + String createStringFromAscii(const char* str, size_t length) override { + Around around{with_}; + return RD::createStringFromAscii(str, length); + }; + String createStringFromUtf8(const uint8_t* utf8, size_t length) override { + Around around{with_}; + return RD::createStringFromUtf8(utf8, length); + }; + std::string utf8(const String& s) override { + Around around{with_}; + return RD::utf8(s); + } + + Object createObject() override { + Around around{with_}; + return RD::createObject(); + }; + Object createObject(std::shared_ptr ho) override { + Around around{with_}; + return RD::createObject(std::move(ho)); + }; + std::shared_ptr getHostObject(const jsi::Object& o) override { + Around around{with_}; + return RD::getHostObject(o); + }; + HostFunctionType& getHostFunction(const jsi::Function& f) override { + Around around{with_}; + return RD::getHostFunction(f); + }; + + Value getProperty(const Object& o, const PropNameID& name) override { + Around around{with_}; + return RD::getProperty(o, name); + }; + Value getProperty(const Object& o, const String& name) override { + Around around{with_}; + return RD::getProperty(o, name); + }; + bool hasProperty(const Object& o, const PropNameID& name) override { + Around around{with_}; + return RD::hasProperty(o, name); + }; + bool hasProperty(const Object& o, const String& name) override { + Around around{with_}; + return RD::hasProperty(o, name); + }; + void setPropertyValue(Object& o, const PropNameID& name, const Value& value) + override { + Around around{with_}; + RD::setPropertyValue(o, name, value); + }; + void setPropertyValue(Object& o, const String& name, const Value& value) + override { + Around around{with_}; + RD::setPropertyValue(o, name, value); + }; + + bool isArray(const Object& o) const override { + Around around{with_}; + return RD::isArray(o); + }; + bool isArrayBuffer(const Object& o) const override { + Around around{with_}; + return RD::isArrayBuffer(o); + }; + bool isFunction(const Object& o) const override { + Around around{with_}; + return RD::isFunction(o); + }; + bool isHostObject(const jsi::Object& o) const override { + Around around{with_}; + return RD::isHostObject(o); + }; + bool isHostFunction(const jsi::Function& f) const override { + Around around{with_}; + return RD::isHostFunction(f); + }; + Array getPropertyNames(const Object& o) override { + Around around{with_}; + return RD::getPropertyNames(o); + }; + + WeakObject createWeakObject(const Object& o) override { + Around around{with_}; + return RD::createWeakObject(o); + }; + Value lockWeakObject(WeakObject& wo) override { + Around around{with_}; + return RD::lockWeakObject(wo); + }; + + Array createArray(size_t length) override { + Around around{with_}; + return RD::createArray(length); + }; + size_t size(const Array& a) override { + Around around{with_}; + return RD::size(a); + }; + size_t size(const ArrayBuffer& ab) override { + Around around{with_}; + return RD::size(ab); + }; + uint8_t* data(const ArrayBuffer& ab) override { + Around around{with_}; + return RD::data(ab); + }; + Value getValueAtIndex(const Array& a, size_t i) override { + Around around{with_}; + return RD::getValueAtIndex(a, i); + }; + void setValueAtIndexImpl(Array& a, size_t i, const Value& value) override { + Around around{with_}; + RD::setValueAtIndexImpl(a, i, value); + }; + + Function createFunctionFromHostFunction( + const PropNameID& name, + unsigned int paramCount, + HostFunctionType func) override { + Around around{with_}; + return RD::createFunctionFromHostFunction( + name, paramCount, std::move(func)); + }; + Value call( + const Function& f, + const Value& jsThis, + const Value* args, + size_t count) override { + Around around{with_}; + return RD::call(f, jsThis, args, count); + }; + Value callAsConstructor(const Function& f, const Value* args, size_t count) + override { + Around around{with_}; + return RD::callAsConstructor(f, args, count); + }; + + // Private data for managing scopes. + Runtime::ScopeState* pushScope() override { + Around around{with_}; + return RD::pushScope(); + } + void popScope(Runtime::ScopeState* ss) override { + Around around{with_}; + RD::popScope(ss); + } + + bool strictEquals(const Symbol& a, const Symbol& b) const override { + Around around{with_}; + return RD::strictEquals(a, b); + }; + bool strictEquals(const String& a, const String& b) const override { + Around around{with_}; + return RD::strictEquals(a, b); + }; + bool strictEquals(const Object& a, const Object& b) const override { + Around around{with_}; + return RD::strictEquals(a, b); + }; + + bool instanceOf(const Object& o, const Function& f) override { + Around around{with_}; + return RD::instanceOf(o, f); + }; + + private: + // Wrap an RAII type around With& to guarantee after always happens. + struct Around { + Around(With& with) : with_(with) { + detail::BeforeCaller::before(with_); + } + ~Around() { + detail::AfterCaller::after(with_); + } + + With& with_; + }; + + With& with_; +}; + +} // namespace jsi +} // namespace facebook diff --git a/Frameworks/React-jsi.xcframework/ios-arm64_x86_64-simulator/Headers/jsi/instrumentation.h b/Frameworks/React-jsi.xcframework/ios-arm64_x86_64-simulator/Headers/jsi/instrumentation.h new file mode 100644 index 0000000..a337a7a --- /dev/null +++ b/Frameworks/React-jsi.xcframework/ios-arm64_x86_64-simulator/Headers/jsi/instrumentation.h @@ -0,0 +1,117 @@ +/* + * 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. + */ + +#pragma once + +#include +#include +#include +#include +#include + +#include + +namespace facebook { +namespace jsi { + +/// Methods for starting and collecting instrumentation, an \c Instrumentation +/// instance is associated with a particular \c Runtime instance, which it +/// controls the instrumentation of. +/// None of these functions should return newly created jsi values, nor should +/// it modify the values of any jsi values in the heap (although GCs are fine). +class JSI_EXPORT Instrumentation { + public: + virtual ~Instrumentation() = default; + + /// Returns GC statistics as a JSON-encoded string, with an object containing + /// "type" and "version" fields outermost. "type" is a string, unique to a + /// particular implementation of \c jsi::Instrumentation, and "version" is a + /// number to indicate any revision to that implementation and its output + /// format. + /// + /// \pre This call can only be made on the instrumentation instance of a + /// runtime initialised to collect GC statistics. + /// + /// \post All cumulative measurements mentioned in the output are accumulated + /// across the entire lifetime of the Runtime. + /// + /// \return the GC statistics collected so far, as a JSON-encoded string. + virtual std::string getRecordedGCStats() = 0; + + /// Request statistics about the current state of the runtime's heap. This + /// function can be called at any time, and should produce information that is + /// correct at the instant it is called (i.e, not stale). + /// + /// \return a map from a string key to a number associated with that + /// statistic. + virtual std::unordered_map getHeapInfo( + bool includeExpensive) = 0; + + /// Perform a full garbage collection. + /// \param cause The cause of this collection, as it should be reported in + /// logs. + virtual void collectGarbage(std::string cause) = 0; + + /// A HeapStatsUpdate is a tuple of the fragment index, the number of objects + /// in that fragment, and the number of bytes used by those objects. + /// A "fragment" is a view of all objects allocated within a time slice. + using HeapStatsUpdate = std::tuple; + + /// Start capturing JS stack-traces for all JS heap allocated objects. These + /// can be accessed via \c ::createSnapshotToFile(). + /// \param fragmentCallback If present, invoke this callback every so often + /// with the most recently seen object ID, and a list of fragments that have + /// been updated. This callback will be invoked on the same thread that the + /// runtime is using. + virtual void startTrackingHeapObjectStackTraces( + std::function stats)> fragmentCallback) = 0; + + /// Stop capture JS stack-traces for JS heap allocated objects. + virtual void stopTrackingHeapObjectStackTraces() = 0; + + /// Start a heap sampling profiler that will sample heap allocations, and the + /// stack trace they were allocated at. Reports a summary of which functions + /// allocated the most. + /// \param samplingInterval The number of bytes allocated to wait between + /// samples. This will be used as the expected value of a poisson + /// distribution. + virtual void startHeapSampling(size_t samplingInterval) = 0; + + /// Turns off the heap sampling profiler previously enabled via + /// \c startHeapSampling. Writes the output of the sampling heap profiler to + /// \p os. The output is a JSON formatted string. + virtual void stopHeapSampling(std::ostream& os) = 0; + + /// Captures the heap to a file + /// + /// \param path to save the heap capture + virtual void createSnapshotToFile(const std::string& path) = 0; + + /// Captures the heap to an output stream + /// + /// \param os output stream to write to. + virtual void createSnapshotToStream(std::ostream& os) = 0; + + /// If the runtime has been created to trace to a temp file, flush + /// any unwritten parts of the trace of bridge traffic to the file, + /// and return the name of the file. Otherwise, return the empty string. + /// Tracing is disabled after this call. + virtual std::string flushAndDisableBridgeTrafficTrace() = 0; + + /// Write basic block profile trace to the given file name. + virtual void writeBasicBlockProfileTraceToFile( + const std::string& fileName) const = 0; + + /// Dump external profiler symbols to the given file name. + virtual void dumpProfilerSymbolsToFile(const std::string& fileName) const = 0; +}; + +} // namespace jsi +} // namespace facebook diff --git a/Frameworks/React-jsi.xcframework/ios-arm64_x86_64-simulator/Headers/jsi/jsi-inl.h b/Frameworks/React-jsi.xcframework/ios-arm64_x86_64-simulator/Headers/jsi/jsi-inl.h new file mode 100644 index 0000000..63d4a2f --- /dev/null +++ b/Frameworks/React-jsi.xcframework/ios-arm64_x86_64-simulator/Headers/jsi/jsi-inl.h @@ -0,0 +1,316 @@ +/* + * 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. + */ + +#pragma once + +namespace facebook { +namespace jsi { +namespace detail { + +inline Value toValue(Runtime&, std::nullptr_t) { + return Value::null(); +} +inline Value toValue(Runtime&, bool b) { + return Value(b); +} +inline Value toValue(Runtime&, double d) { + return Value(d); +} +inline Value toValue(Runtime&, float f) { + return Value(static_cast(f)); +} +inline Value toValue(Runtime&, int i) { + return Value(i); +} +inline Value toValue(Runtime& runtime, const char* str) { + return String::createFromAscii(runtime, str); +} +inline Value toValue(Runtime& runtime, const std::string& str) { + return String::createFromUtf8(runtime, str); +} +template +inline Value toValue(Runtime& runtime, const T& other) { + static_assert( + std::is_base_of::value, + "This type cannot be converted to Value"); + return Value(runtime, other); +} +inline Value toValue(Runtime& runtime, const Value& value) { + return Value(runtime, value); +} +inline Value&& toValue(Runtime&, Value&& value) { + return std::move(value); +} + +inline PropNameID toPropNameID(Runtime& runtime, const char* name) { + return PropNameID::forAscii(runtime, name); +} +inline PropNameID toPropNameID(Runtime& runtime, const std::string& name) { + return PropNameID::forUtf8(runtime, name); +} +inline PropNameID&& toPropNameID(Runtime&, PropNameID&& name) { + return std::move(name); +} + +void throwJSError(Runtime&, const char* msg); + +} // namespace detail + +template +inline T Runtime::make(Runtime::PointerValue* pv) { + return T(pv); +} + +inline Runtime::PointerValue* Runtime::getPointerValue(jsi::Pointer& pointer) { + return pointer.ptr_; +} + +inline const Runtime::PointerValue* Runtime::getPointerValue( + const jsi::Pointer& pointer) { + return pointer.ptr_; +} + +inline const Runtime::PointerValue* Runtime::getPointerValue( + const jsi::Value& value) { + return value.data_.pointer.ptr_; +} + +inline Value Object::getProperty(Runtime& runtime, const char* name) const { + return getProperty(runtime, String::createFromAscii(runtime, name)); +} + +inline Value Object::getProperty(Runtime& runtime, const String& name) const { + return runtime.getProperty(*this, name); +} + +inline Value Object::getProperty(Runtime& runtime, const PropNameID& name) + const { + return runtime.getProperty(*this, name); +} + +inline bool Object::hasProperty(Runtime& runtime, const char* name) const { + return hasProperty(runtime, String::createFromAscii(runtime, name)); +} + +inline bool Object::hasProperty(Runtime& runtime, const String& name) const { + return runtime.hasProperty(*this, name); +} + +inline bool Object::hasProperty(Runtime& runtime, const PropNameID& name) + const { + return runtime.hasProperty(*this, name); +} + +template +void Object::setProperty(Runtime& runtime, const char* name, T&& value) { + setProperty( + runtime, String::createFromAscii(runtime, name), std::forward(value)); +} + +template +void Object::setProperty(Runtime& runtime, const String& name, T&& value) { + setPropertyValue( + runtime, name, detail::toValue(runtime, std::forward(value))); +} + +template +void Object::setProperty(Runtime& runtime, const PropNameID& name, T&& value) { + setPropertyValue( + runtime, name, detail::toValue(runtime, std::forward(value))); +} + +inline Array Object::getArray(Runtime& runtime) const& { + assert(runtime.isArray(*this)); + (void)runtime; // when assert is disabled we need to mark this as used + return Array(runtime.cloneObject(ptr_)); +} + +inline Array Object::getArray(Runtime& runtime) && { + assert(runtime.isArray(*this)); + (void)runtime; // when assert is disabled we need to mark this as used + Runtime::PointerValue* value = ptr_; + ptr_ = nullptr; + return Array(value); +} + +inline ArrayBuffer Object::getArrayBuffer(Runtime& runtime) const& { + assert(runtime.isArrayBuffer(*this)); + (void)runtime; // when assert is disabled we need to mark this as used + return ArrayBuffer(runtime.cloneObject(ptr_)); +} + +inline ArrayBuffer Object::getArrayBuffer(Runtime& runtime) && { + assert(runtime.isArrayBuffer(*this)); + (void)runtime; // when assert is disabled we need to mark this as used + Runtime::PointerValue* value = ptr_; + ptr_ = nullptr; + return ArrayBuffer(value); +} + +inline Function Object::getFunction(Runtime& runtime) const& { + assert(runtime.isFunction(*this)); + return Function(runtime.cloneObject(ptr_)); +} + +inline Function Object::getFunction(Runtime& runtime) && { + assert(runtime.isFunction(*this)); + (void)runtime; // when assert is disabled we need to mark this as used + Runtime::PointerValue* value = ptr_; + ptr_ = nullptr; + return Function(value); +} + +template +inline bool Object::isHostObject(Runtime& runtime) const { + return runtime.isHostObject(*this) && + std::dynamic_pointer_cast(runtime.getHostObject(*this)); +} + +template <> +inline bool Object::isHostObject(Runtime& runtime) const { + return runtime.isHostObject(*this); +} + +template +inline std::shared_ptr Object::getHostObject(Runtime& runtime) const { + assert(isHostObject(runtime)); + return std::static_pointer_cast(runtime.getHostObject(*this)); +} + +template +inline std::shared_ptr Object::asHostObject(Runtime& runtime) const { + if (!isHostObject(runtime)) { + detail::throwJSError(runtime, "Object is not a HostObject of desired type"); + } + return std::static_pointer_cast(runtime.getHostObject(*this)); +} + +template <> +inline std::shared_ptr Object::getHostObject( + Runtime& runtime) const { + assert(runtime.isHostObject(*this)); + return runtime.getHostObject(*this); +} + +inline Array Object::getPropertyNames(Runtime& runtime) const { + return runtime.getPropertyNames(*this); +} + +inline Value WeakObject::lock(Runtime& runtime) { + return runtime.lockWeakObject(*this); +} + +template +void Array::setValueAtIndex(Runtime& runtime, size_t i, T&& value) { + setValueAtIndexImpl( + runtime, i, detail::toValue(runtime, std::forward(value))); +} + +inline Value Array::getValueAtIndex(Runtime& runtime, size_t i) const { + return runtime.getValueAtIndex(*this, i); +} + +inline Function Function::createFromHostFunction( + Runtime& runtime, + const jsi::PropNameID& name, + unsigned int paramCount, + jsi::HostFunctionType func) { + return runtime.createFunctionFromHostFunction( + name, paramCount, std::move(func)); +} + +inline Value Function::call(Runtime& runtime, const Value* args, size_t count) + const { + return runtime.call(*this, Value::undefined(), args, count); +} + +inline Value Function::call(Runtime& runtime, std::initializer_list args) + const { + return call(runtime, args.begin(), args.size()); +} + +template +inline Value Function::call(Runtime& runtime, Args&&... args) const { + // A more awesome version of this would be able to create raw values + // which can be used directly without wrapping and unwrapping, but + // this will do for now. + return call(runtime, {detail::toValue(runtime, std::forward(args))...}); +} + +inline Value Function::callWithThis( + Runtime& runtime, + const Object& jsThis, + const Value* args, + size_t count) const { + return runtime.call(*this, Value(runtime, jsThis), args, count); +} + +inline Value Function::callWithThis( + Runtime& runtime, + const Object& jsThis, + std::initializer_list args) const { + return callWithThis(runtime, jsThis, args.begin(), args.size()); +} + +template +inline Value Function::callWithThis( + Runtime& runtime, + const Object& jsThis, + Args&&... args) const { + // A more awesome version of this would be able to create raw values + // which can be used directly without wrapping and unwrapping, but + // this will do for now. + return callWithThis( + runtime, jsThis, {detail::toValue(runtime, std::forward(args))...}); +} + +template +inline Array Array::createWithElements(Runtime& runtime, Args&&... args) { + return createWithElements( + runtime, {detail::toValue(runtime, std::forward(args))...}); +} + +template +inline std::vector PropNameID::names( + Runtime& runtime, + Args&&... args) { + return names({detail::toPropNameID(runtime, std::forward(args))...}); +} + +template +inline std::vector PropNameID::names( + PropNameID(&&propertyNames)[N]) { + std::vector result; + result.reserve(N); + for (auto& name : propertyNames) { + result.push_back(std::move(name)); + } + return result; +} + +inline Value Function::callAsConstructor( + Runtime& runtime, + const Value* args, + size_t count) const { + return runtime.callAsConstructor(*this, args, count); +} + +inline Value Function::callAsConstructor( + Runtime& runtime, + std::initializer_list args) const { + return callAsConstructor(runtime, args.begin(), args.size()); +} + +template +inline Value Function::callAsConstructor(Runtime& runtime, Args&&... args) + const { + return callAsConstructor( + runtime, {detail::toValue(runtime, std::forward(args))...}); +} + +} // namespace jsi +} // namespace facebook diff --git a/Frameworks/React-jsi.xcframework/ios-arm64_x86_64-simulator/Headers/jsi/jsi.h b/Frameworks/React-jsi.xcframework/ios-arm64_x86_64-simulator/Headers/jsi/jsi.h new file mode 100644 index 0000000..ae64498 --- /dev/null +++ b/Frameworks/React-jsi.xcframework/ios-arm64_x86_64-simulator/Headers/jsi/jsi.h @@ -0,0 +1,1317 @@ +/* + * 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. + */ + +#pragma once + +#include +#include +#include +#include +#include +#include +#include + +#ifndef JSI_EXPORT +#ifdef _MSC_VER +#ifdef CREATE_SHARED_LIBRARY +#define JSI_EXPORT __declspec(dllexport) +#else +#define JSI_EXPORT +#endif // CREATE_SHARED_LIBRARY +#else // _MSC_VER +#define JSI_EXPORT __attribute__((visibility("default"))) +#endif // _MSC_VER +#endif // !defined(JSI_EXPORT) + +class FBJSRuntime; +namespace facebook { +namespace jsi { + +class JSI_EXPORT Buffer { + public: + virtual ~Buffer(); + virtual size_t size() const = 0; + virtual const uint8_t* data() const = 0; +}; + +class JSI_EXPORT StringBuffer : public Buffer { + public: + StringBuffer(std::string s) : s_(std::move(s)) {} + size_t size() const override { + return s_.size(); + } + const uint8_t* data() const override { + return reinterpret_cast(s_.data()); + } + + private: + std::string s_; +}; + +/// PreparedJavaScript is a base class representing JavaScript which is in a +/// form optimized for execution, in a runtime-specific way. Construct one via +/// jsi::Runtime::prepareJavaScript(). +/// ** This is an experimental API that is subject to change. ** +class JSI_EXPORT PreparedJavaScript { + protected: + PreparedJavaScript() = default; + + public: + virtual ~PreparedJavaScript() = 0; +}; + +class Runtime; +class Pointer; +class PropNameID; +class Symbol; +class String; +class Object; +class WeakObject; +class Array; +class ArrayBuffer; +class Function; +class Value; +class Instrumentation; +class Scope; +class JSIException; +class JSError; + +/// A function which has this type can be registered as a function +/// callable from JavaScript using Function::createFromHostFunction(). +/// When the function is called, args will point to the arguments, and +/// count will indicate how many arguments are passed. The function +/// can return a Value to the caller, or throw an exception. If a C++ +/// exception is thrown, a JS Error will be created and thrown into +/// JS; if the C++ exception extends std::exception, the Error's +/// message will be whatever what() returns. Note that it is undefined whether +/// HostFunctions may or may not be called in strict mode; that is `thisVal` +/// can be any value - it will not necessarily be coerced to an object or +/// or set to the global object. +using HostFunctionType = std::function< + Value(Runtime& rt, const Value& thisVal, const Value* args, size_t count)>; + +/// An object which implements this interface can be registered as an +/// Object with the JS runtime. +class JSI_EXPORT HostObject { + public: + // The C++ object's dtor will be called when the GC finalizes this + // object. (This may be as late as when the Runtime is shut down.) + // You have no control over which thread it is called on. This will + // be called from inside the GC, so it is unsafe to do any VM + // operations which require a Runtime&. Derived classes' dtors + // should also avoid doing anything expensive. Calling the dtor on + // a jsi object is explicitly ok. If you want to do JS operations, + // or any nontrivial work, you should add it to a work queue, and + // manage it externally. + virtual ~HostObject(); + + // When JS wants a property with a given name from the HostObject, + // it will call this method. If it throws an exception, the call + // will throw a JS \c Error object. By default this returns undefined. + // \return the value for the property. + virtual Value get(Runtime&, const PropNameID& name); + + // When JS wants to set a property with a given name on the HostObject, + // it will call this method. If it throws an exception, the call will + // throw a JS \c Error object. By default this throws a type error exception + // mimicking the behavior of a frozen object in strict mode. + virtual void set(Runtime&, const PropNameID& name, const Value& value); + + // When JS wants a list of property names for the HostObject, it will + // call this method. If it throws an exception, the call will throw a + // JS \c Error object. The default implementation returns empty vector. + virtual std::vector getPropertyNames(Runtime& rt); +}; + +/// Represents a JS runtime. Movable, but not copyable. Note that +/// this object may not be thread-aware, but cannot be used safely from +/// multiple threads at once. The application is responsible for +/// ensuring that it is used safely. This could mean using the +/// Runtime from a single thread, using a mutex, doing all work on a +/// serial queue, etc. This restriction applies to the methods of +/// this class, and any method in the API which take a Runtime& as an +/// argument. Destructors (all but ~Scope), operators, or other methods +/// which do not take Runtime& as an argument are safe to call from any +/// thread, but it is still forbidden to make write operations on a single +/// instance of any class from more than one thread. In addition, to +/// make shutdown safe, destruction of objects associated with the Runtime +/// must be destroyed before the Runtime is destroyed, or from the +/// destructor of a managed HostObject or HostFunction. Informally, this +/// means that the main source of unsafe behavior is to hold a jsi object +/// in a non-Runtime-managed object, and not clean it up before the Runtime +/// is shut down. If your lifecycle is such that avoiding this is hard, +/// you will probably need to do use your own locks. +class JSI_EXPORT Runtime { + public: + virtual ~Runtime(); + + /// Evaluates the given JavaScript \c buffer. \c sourceURL is used + /// to annotate the stack trace if there is an exception. The + /// contents may be utf8-encoded JS source code, or binary bytecode + /// whose format is specific to the implementation. If the input + /// format is unknown, or evaluation causes an error, a JSIException + /// will be thrown. + /// Note this function should ONLY be used when there isn't another means + /// through the JSI API. For example, it will be much slower to use this to + /// call a global function than using the JSI APIs to read the function + /// property from the global object and then calling it explicitly. + virtual Value evaluateJavaScript( + const std::shared_ptr& buffer, + const std::string& sourceURL) = 0; + + /// Prepares to evaluate the given JavaScript \c buffer by processing it into + /// a form optimized for execution. This may include pre-parsing, compiling, + /// etc. If the input is invalid (for example, cannot be parsed), a + /// JSIException will be thrown. The resulting object is tied to the + /// particular concrete type of Runtime from which it was created. It may be + /// used (via evaluatePreparedJavaScript) in any Runtime of the same concrete + /// type. + /// The PreparedJavaScript object may be passed to multiple VM instances, so + /// they can all share and benefit from the prepared script. + /// As with evaluateJavaScript(), using JavaScript code should be avoided + /// when the JSI API is sufficient. + virtual std::shared_ptr prepareJavaScript( + const std::shared_ptr& buffer, + std::string sourceURL) = 0; + + /// Evaluates a PreparedJavaScript. If evaluation causes an error, a + /// JSIException will be thrown. + /// As with evaluateJavaScript(), using JavaScript code should be avoided + /// when the JSI API is sufficient. + virtual Value evaluatePreparedJavaScript( + const std::shared_ptr& js) = 0; + + /// Drain the JavaScript VM internal Microtask (a.k.a. Job in ECMA262) queue. + /// + /// \param maxMicrotasksHint a hint to tell an implementation that it should + /// make a best effort not execute more than the given number. It's default + /// to -1 for infinity (unbounded execution). + /// \return true if the queue is drained or false if there is more work to do. + /// + /// When there were exceptions thrown from the execution of microtasks, + /// implementations shall discard the exceptional jobs. An implementation may + /// \throw a \c JSError object to signal the hosts to handle. In that case, an + /// implementation may or may not suspend the draining. + /// + /// Hosts may call this function again to resume the draining if it was + /// suspended due to either exceptions or the \p maxMicrotasksHint bound. + /// E.g. a host may repetitively invoke this function until the queue is + /// drained to implement the "microtask checkpint" defined in WHATWG HTML + /// event loop: https://html.spec.whatwg.org/C#perform-a-microtask-checkpoint. + /// + /// Note that error propagation is only a concern if a host needs to implement + /// `queueMicrotask`, a recent API that allows enqueueing aribitary functions + /// (hence may throw) as microtasks. Exceptions from ECMA-262 Promise Jobs are + /// handled internally to VMs and are never propagrated to hosts. + /// + /// This API offers some queue management to hosts at its best effort due to + /// different behaviors and limitations imposed by different VMs and APIs. By + /// the time this is written, An implementation may swallow exceptions (JSC), + /// may not pause (V8), and may not support bounded executions. + virtual bool drainMicrotasks(int maxMicrotasksHint = -1) = 0; + + /// \return the global object + virtual Object global() = 0; + + /// \return a short printable description of the instance. It should + /// at least include some human-readable indication of the runtime + /// implementation. This should only be used by logging, debugging, + /// and other developer-facing callers. + virtual std::string description() = 0; + + /// \return whether or not the underlying runtime supports debugging via the + /// Chrome remote debugging protocol. + /// + /// NOTE: the API for determining whether a runtime is debuggable and + /// registering a runtime with the debugger is still in flux, so please don't + /// use this API unless you know what you're doing. + virtual bool isInspectable() = 0; + + /// \return an interface to extract metrics from this \c Runtime. The default + /// implementation of this function returns an \c Instrumentation instance + /// which returns no metrics. + virtual Instrumentation& instrumentation(); + + protected: + friend class Pointer; + friend class PropNameID; + friend class Symbol; + friend class String; + friend class Object; + friend class WeakObject; + friend class Array; + friend class ArrayBuffer; + friend class Function; + friend class Value; + friend class Scope; + friend class JSError; + + // Potential optimization: avoid the cloneFoo() virtual dispatch, + // and instead just fix the number of fields, and copy them, since + // in practice they are trivially copyable. Sufficient use of + // rvalue arguments/methods would also reduce the number of clones. + + struct PointerValue { + virtual void invalidate() = 0; + + protected: + virtual ~PointerValue() = default; + }; + + virtual PointerValue* cloneSymbol(const Runtime::PointerValue* pv) = 0; + virtual PointerValue* cloneString(const Runtime::PointerValue* pv) = 0; + virtual PointerValue* cloneObject(const Runtime::PointerValue* pv) = 0; + virtual PointerValue* clonePropNameID(const Runtime::PointerValue* pv) = 0; + + virtual PropNameID createPropNameIDFromAscii( + const char* str, + size_t length) = 0; + virtual PropNameID createPropNameIDFromUtf8( + const uint8_t* utf8, + size_t length) = 0; + virtual PropNameID createPropNameIDFromString(const String& str) = 0; + virtual std::string utf8(const PropNameID&) = 0; + virtual bool compare(const PropNameID&, const PropNameID&) = 0; + + virtual std::string symbolToString(const Symbol&) = 0; + + virtual String createStringFromAscii(const char* str, size_t length) = 0; + virtual String createStringFromUtf8(const uint8_t* utf8, size_t length) = 0; + virtual std::string utf8(const String&) = 0; + + // \return a \c Value created from a utf8-encoded JSON string. The default + // implementation creates a \c String and invokes JSON.parse. + virtual Value createValueFromJsonUtf8(const uint8_t* json, size_t length); + + virtual Object createObject() = 0; + virtual Object createObject(std::shared_ptr ho) = 0; + virtual std::shared_ptr getHostObject(const jsi::Object&) = 0; + virtual HostFunctionType& getHostFunction(const jsi::Function&) = 0; + + virtual Value getProperty(const Object&, const PropNameID& name) = 0; + virtual Value getProperty(const Object&, const String& name) = 0; + virtual bool hasProperty(const Object&, const PropNameID& name) = 0; + virtual bool hasProperty(const Object&, const String& name) = 0; + virtual void + setPropertyValue(Object&, const PropNameID& name, const Value& value) = 0; + virtual void + setPropertyValue(Object&, const String& name, const Value& value) = 0; + + virtual bool isArray(const Object&) const = 0; + virtual bool isArrayBuffer(const Object&) const = 0; + virtual bool isFunction(const Object&) const = 0; + virtual bool isHostObject(const jsi::Object&) const = 0; + virtual bool isHostFunction(const jsi::Function&) const = 0; + virtual Array getPropertyNames(const Object&) = 0; + + virtual WeakObject createWeakObject(const Object&) = 0; + virtual Value lockWeakObject(WeakObject&) = 0; + + virtual Array createArray(size_t length) = 0; + virtual size_t size(const Array&) = 0; + virtual size_t size(const ArrayBuffer&) = 0; + virtual uint8_t* data(const ArrayBuffer&) = 0; + virtual Value getValueAtIndex(const Array&, size_t i) = 0; + virtual void setValueAtIndexImpl(Array&, size_t i, const Value& value) = 0; + + virtual Function createFunctionFromHostFunction( + const PropNameID& name, + unsigned int paramCount, + HostFunctionType func) = 0; + virtual Value call( + const Function&, + const Value& jsThis, + const Value* args, + size_t count) = 0; + virtual Value + callAsConstructor(const Function&, const Value* args, size_t count) = 0; + + // Private data for managing scopes. + struct ScopeState; + virtual ScopeState* pushScope(); + virtual void popScope(ScopeState*); + + virtual bool strictEquals(const Symbol& a, const Symbol& b) const = 0; + virtual bool strictEquals(const String& a, const String& b) const = 0; + virtual bool strictEquals(const Object& a, const Object& b) const = 0; + + virtual bool instanceOf(const Object& o, const Function& f) = 0; + + // These exist so derived classes can access the private parts of + // Value, Symbol, String, and Object, which are all friends of Runtime. + template + static T make(PointerValue* pv); + static PointerValue* getPointerValue(Pointer& pointer); + static const PointerValue* getPointerValue(const Pointer& pointer); + static const PointerValue* getPointerValue(const Value& value); + + friend class ::FBJSRuntime; + template + friend class RuntimeDecorator; +}; + +// Base class for pointer-storing types. +class JSI_EXPORT Pointer { + protected: + explicit Pointer(Pointer&& other) : ptr_(other.ptr_) { + other.ptr_ = nullptr; + } + + ~Pointer() { + if (ptr_) { + ptr_->invalidate(); + } + } + + Pointer& operator=(Pointer&& other); + + friend class Runtime; + friend class Value; + + explicit Pointer(Runtime::PointerValue* ptr) : ptr_(ptr) {} + + typename Runtime::PointerValue* ptr_; +}; + +/// Represents something that can be a JS property key. Movable, not copyable. +class JSI_EXPORT PropNameID : public Pointer { + public: + using Pointer::Pointer; + + PropNameID(Runtime& runtime, const PropNameID& other) + : Pointer(runtime.clonePropNameID(other.ptr_)) {} + + PropNameID(PropNameID&& other) = default; + PropNameID& operator=(PropNameID&& other) = default; + + /// Create a JS property name id from ascii values. The data is + /// copied. + static PropNameID forAscii(Runtime& runtime, const char* str, size_t length) { + return runtime.createPropNameIDFromAscii(str, length); + } + + /// Create a property name id from a nul-terminated C ascii name. The data is + /// copied. + static PropNameID forAscii(Runtime& runtime, const char* str) { + return forAscii(runtime, str, strlen(str)); + } + + /// Create a PropNameID from a C++ string. The string is copied. + static PropNameID forAscii(Runtime& runtime, const std::string& str) { + return forAscii(runtime, str.c_str(), str.size()); + } + + /// Create a PropNameID from utf8 values. The data is copied. + static PropNameID + forUtf8(Runtime& runtime, const uint8_t* utf8, size_t length) { + return runtime.createPropNameIDFromUtf8(utf8, length); + } + + /// Create a PropNameID from utf8-encoded octets stored in a + /// std::string. The string data is transformed and copied. + static PropNameID forUtf8(Runtime& runtime, const std::string& utf8) { + return runtime.createPropNameIDFromUtf8( + reinterpret_cast(utf8.data()), utf8.size()); + } + + /// Create a PropNameID from a JS string. + static PropNameID forString(Runtime& runtime, const jsi::String& str) { + return runtime.createPropNameIDFromString(str); + } + + // Creates a vector of PropNameIDs constructed from given arguments. + template + static std::vector names(Runtime& runtime, Args&&... args); + + // Creates a vector of given PropNameIDs. + template + static std::vector names(PropNameID(&&propertyNames)[N]); + + /// Copies the data in a PropNameID as utf8 into a C++ string. + std::string utf8(Runtime& runtime) const { + return runtime.utf8(*this); + } + + static bool compare( + Runtime& runtime, + const jsi::PropNameID& a, + const jsi::PropNameID& b) { + return runtime.compare(a, b); + } + + friend class Runtime; + friend class Value; +}; + +/// Represents a JS Symbol (es6). Movable, not copyable. +/// TODO T40778724: this is a limited implementation sufficient for +/// the debugger not to crash when a Symbol is a property in an Object +/// or element in an array. Complete support for creating will come +/// later. +class JSI_EXPORT Symbol : public Pointer { + public: + using Pointer::Pointer; + + Symbol(Symbol&& other) = default; + Symbol& operator=(Symbol&& other) = default; + + /// \return whether a and b refer to the same symbol. + static bool strictEquals(Runtime& runtime, const Symbol& a, const Symbol& b) { + return runtime.strictEquals(a, b); + } + + /// Converts a Symbol into a C++ string as JS .toString would. The output + /// will look like \c Symbol(description) . + std::string toString(Runtime& runtime) const { + return runtime.symbolToString(*this); + } + + friend class Runtime; + friend class Value; +}; + +/// Represents a JS String. Movable, not copyable. +class JSI_EXPORT String : public Pointer { + public: + using Pointer::Pointer; + + String(String&& other) = default; + String& operator=(String&& other) = default; + + /// Create a JS string from ascii values. The string data is + /// copied. + static String + createFromAscii(Runtime& runtime, const char* str, size_t length) { + return runtime.createStringFromAscii(str, length); + } + + /// Create a JS string from a nul-terminated C ascii string. The + /// string data is copied. + static String createFromAscii(Runtime& runtime, const char* str) { + return createFromAscii(runtime, str, strlen(str)); + } + + /// Create a JS string from a C++ string. The string data is + /// copied. + static String createFromAscii(Runtime& runtime, const std::string& str) { + return createFromAscii(runtime, str.c_str(), str.size()); + } + + /// Create a JS string from utf8-encoded octets. The string data is + /// transformed and copied. + static String + createFromUtf8(Runtime& runtime, const uint8_t* utf8, size_t length) { + return runtime.createStringFromUtf8(utf8, length); + } + + /// Create a JS string from utf8-encoded octets stored in a + /// std::string. The string data is transformed and copied. + static String createFromUtf8(Runtime& runtime, const std::string& utf8) { + return runtime.createStringFromUtf8( + reinterpret_cast(utf8.data()), utf8.length()); + } + + /// \return whether a and b contain the same characters. + static bool strictEquals(Runtime& runtime, const String& a, const String& b) { + return runtime.strictEquals(a, b); + } + + /// Copies the data in a JS string as utf8 into a C++ string. + std::string utf8(Runtime& runtime) const { + return runtime.utf8(*this); + } + + friend class Runtime; + friend class Value; +}; + +class Array; +class Function; + +/// Represents a JS Object. Movable, not copyable. +class JSI_EXPORT Object : public Pointer { + public: + using Pointer::Pointer; + + Object(Object&& other) = default; + Object& operator=(Object&& other) = default; + + /// Creates a new Object instance, like '{}' in JS. + Object(Runtime& runtime) : Object(runtime.createObject()) {} + + static Object createFromHostObject( + Runtime& runtime, + std::shared_ptr ho) { + return runtime.createObject(ho); + } + + /// \return whether this and \c obj are the same JSObject or not. + static bool strictEquals(Runtime& runtime, const Object& a, const Object& b) { + return runtime.strictEquals(a, b); + } + + /// \return the result of `this instanceOf ctor` in JS. + bool instanceOf(Runtime& rt, const Function& ctor) { + return rt.instanceOf(*this, ctor); + } + + /// \return the property of the object with the given ascii name. + /// If the name isn't a property on the object, returns the + /// undefined value. + Value getProperty(Runtime& runtime, const char* name) const; + + /// \return the property of the object with the String name. + /// If the name isn't a property on the object, returns the + /// undefined value. + Value getProperty(Runtime& runtime, const String& name) const; + + /// \return the property of the object with the given JS PropNameID + /// name. If the name isn't a property on the object, returns the + /// undefined value. + Value getProperty(Runtime& runtime, const PropNameID& name) const; + + /// \return true if and only if the object has a property with the + /// given ascii name. + bool hasProperty(Runtime& runtime, const char* name) const; + + /// \return true if and only if the object has a property with the + /// given String name. + bool hasProperty(Runtime& runtime, const String& name) const; + + /// \return true if and only if the object has a property with the + /// given PropNameID name. + bool hasProperty(Runtime& runtime, const PropNameID& name) const; + + /// Sets the property value from a Value or anything which can be + /// used to make one: nullptr_t, bool, double, int, const char*, + /// String, or Object. + template + void setProperty(Runtime& runtime, const char* name, T&& value); + + /// Sets the property value from a Value or anything which can be + /// used to make one: nullptr_t, bool, double, int, const char*, + /// String, or Object. + template + void setProperty(Runtime& runtime, const String& name, T&& value); + + /// Sets the property value from a Value or anything which can be + /// used to make one: nullptr_t, bool, double, int, const char*, + /// String, or Object. + template + void setProperty(Runtime& runtime, const PropNameID& name, T&& value); + + /// \return true iff JS \c Array.isArray() would return \c true. If + /// so, then \c getArray() will succeed. + bool isArray(Runtime& runtime) const { + return runtime.isArray(*this); + } + + /// \return true iff the Object is an ArrayBuffer. If so, then \c + /// getArrayBuffer() will succeed. + bool isArrayBuffer(Runtime& runtime) const { + return runtime.isArrayBuffer(*this); + } + + /// \return true iff the Object is callable. If so, then \c + /// getFunction will succeed. + bool isFunction(Runtime& runtime) const { + return runtime.isFunction(*this); + } + + /// \return true iff the Object was initialized with \c createFromHostObject + /// and the HostObject passed is of type \c T. If returns \c true then + /// \c getHostObject will succeed. + template + bool isHostObject(Runtime& runtime) const; + + /// \return an Array instance which refers to the same underlying + /// object. If \c isArray() would return false, this will assert. + Array getArray(Runtime& runtime) const&; + + /// \return an Array instance which refers to the same underlying + /// object. If \c isArray() would return false, this will assert. + Array getArray(Runtime& runtime) &&; + + /// \return an Array instance which refers to the same underlying + /// object. If \c isArray() would return false, this will throw + /// JSIException. + Array asArray(Runtime& runtime) const&; + + /// \return an Array instance which refers to the same underlying + /// object. If \c isArray() would return false, this will throw + /// JSIException. + Array asArray(Runtime& runtime) &&; + + /// \return an ArrayBuffer instance which refers to the same underlying + /// object. If \c isArrayBuffer() would return false, this will assert. + ArrayBuffer getArrayBuffer(Runtime& runtime) const&; + + /// \return an ArrayBuffer instance which refers to the same underlying + /// object. If \c isArrayBuffer() would return false, this will assert. + ArrayBuffer getArrayBuffer(Runtime& runtime) &&; + + /// \return a Function instance which refers to the same underlying + /// object. If \c isFunction() would return false, this will assert. + Function getFunction(Runtime& runtime) const&; + + /// \return a Function instance which refers to the same underlying + /// object. If \c isFunction() would return false, this will assert. + Function getFunction(Runtime& runtime) &&; + + /// \return a Function instance which refers to the same underlying + /// object. If \c isFunction() would return false, this will throw + /// JSIException. + Function asFunction(Runtime& runtime) const&; + + /// \return a Function instance which refers to the same underlying + /// object. If \c isFunction() would return false, this will throw + /// JSIException. + Function asFunction(Runtime& runtime) &&; + + /// \return a shared_ptr which refers to the same underlying + /// \c HostObject that was used to create this object. If \c isHostObject + /// is false, this will assert. Note that this does a type check and will + /// assert if the underlying HostObject isn't of type \c T + template + std::shared_ptr getHostObject(Runtime& runtime) const; + + /// \return a shared_ptr which refers to the same underlying + /// \c HostObject that was used to crete this object. If \c isHostObject + /// is false, this will throw. + template + std::shared_ptr asHostObject(Runtime& runtime) const; + + /// \return same as \c getProperty(name).asObject(), except with + /// a better exception message. + Object getPropertyAsObject(Runtime& runtime, const char* name) const; + + /// \return similar to \c + /// getProperty(name).getObject().getFunction(), except it will + /// throw JSIException instead of asserting if the property is + /// not an object, or the object is not callable. + Function getPropertyAsFunction(Runtime& runtime, const char* name) const; + + /// \return an Array consisting of all enumerable property names in + /// the object and its prototype chain. All values in the return + /// will be isString(). (This is probably not optimal, but it + /// works. I only need it in one place.) + Array getPropertyNames(Runtime& runtime) const; + + protected: + void + setPropertyValue(Runtime& runtime, const String& name, const Value& value) { + return runtime.setPropertyValue(*this, name, value); + } + + void setPropertyValue( + Runtime& runtime, + const PropNameID& name, + const Value& value) { + return runtime.setPropertyValue(*this, name, value); + } + + friend class Runtime; + friend class Value; +}; + +/// Represents a weak reference to a JS Object. If the only reference +/// to an Object are these, the object is eligible for GC. Method +/// names are inspired by C++ weak_ptr. Movable, not copyable. +class JSI_EXPORT WeakObject : public Pointer { + public: + using Pointer::Pointer; + + WeakObject(WeakObject&& other) = default; + WeakObject& operator=(WeakObject&& other) = default; + + /// Create a WeakObject from an Object. + WeakObject(Runtime& runtime, const Object& o) + : WeakObject(runtime.createWeakObject(o)) {} + + /// \return a Value representing the underlying Object if it is still valid; + /// otherwise returns \c undefined. Note that this method has nothing to do + /// with threads or concurrency. The name is based on std::weak_ptr::lock() + /// which serves a similar purpose. + Value lock(Runtime& runtime); + + friend class Runtime; +}; + +/// Represents a JS Object which can be efficiently used as an array +/// with integral indices. +class JSI_EXPORT Array : public Object { + public: + Array(Array&&) = default; + /// Creates a new Array instance, with \c length undefined elements. + Array(Runtime& runtime, size_t length) : Array(runtime.createArray(length)) {} + + Array& operator=(Array&&) = default; + + /// \return the size of the Array, according to its length property. + /// (C++ naming convention) + size_t size(Runtime& runtime) const { + return runtime.size(*this); + } + + /// \return the size of the Array, according to its length property. + /// (JS naming convention) + size_t length(Runtime& runtime) const { + return size(runtime); + } + + /// \return the property of the array at index \c i. If there is no + /// such property, returns the undefined value. If \c i is out of + /// range [ 0..\c length ] throws a JSIException. + Value getValueAtIndex(Runtime& runtime, size_t i) const; + + /// Sets the property of the array at index \c i. The argument + /// value behaves as with Object::setProperty(). If \c i is out of + /// range [ 0..\c length ] throws a JSIException. + template + void setValueAtIndex(Runtime& runtime, size_t i, T&& value); + + /// There is no current API for changing the size of an array once + /// created. We'll probably need that eventually. + + /// Creates a new Array instance from provided values + template + static Array createWithElements(Runtime&, Args&&... args); + + /// Creates a new Array instance from initializer list. + static Array createWithElements( + Runtime& runtime, + std::initializer_list elements); + + private: + friend class Object; + friend class Value; + + void setValueAtIndexImpl(Runtime& runtime, size_t i, const Value& value) { + return runtime.setValueAtIndexImpl(*this, i, value); + } + + Array(Runtime::PointerValue* value) : Object(value) {} +}; + +/// Represents a JSArrayBuffer +class JSI_EXPORT ArrayBuffer : public Object { + public: + ArrayBuffer(ArrayBuffer&&) = default; + ArrayBuffer& operator=(ArrayBuffer&&) = default; + + /// \return the size of the ArrayBuffer, according to its byteLength property. + /// (C++ naming convention) + size_t size(Runtime& runtime) const { + return runtime.size(*this); + } + + size_t length(Runtime& runtime) const { + return runtime.size(*this); + } + + uint8_t* data(Runtime& runtime) { + return runtime.data(*this); + } + + private: + friend class Object; + friend class Value; + + ArrayBuffer(Runtime::PointerValue* value) : Object(value) {} +}; + +/// Represents a JS Object which is guaranteed to be Callable. +class JSI_EXPORT Function : public Object { + public: + Function(Function&&) = default; + Function& operator=(Function&&) = default; + + /// Create a function which, when invoked, calls C++ code. If the + /// function throws an exception, a JS Error will be created and + /// thrown. + /// \param name the name property for the function. + /// \param paramCount the length property for the function, which + /// may not be the number of arguments the function is passed. + static Function createFromHostFunction( + Runtime& runtime, + const jsi::PropNameID& name, + unsigned int paramCount, + jsi::HostFunctionType func); + + /// Calls the function with \c count \c args. The \c this value of the JS + /// function will not be set by the C++ caller, similar to calling + /// Function.prototype.apply(undefined, args) in JS. + /// \b Note: as with Function.prototype.apply, \c this may not always be + /// \c undefined in the function itself. If the function is non-strict, + /// \c this will be set to the global object. + Value call(Runtime& runtime, const Value* args, size_t count) const; + + /// Calls the function with a \c std::initializer_list of Value + /// arguments. The \c this value of the JS function will not be set by the + /// C++ caller, similar to calling Function.prototype.apply(undefined, args) + /// in JS. + /// \b Note: as with Function.prototype.apply, \c this may not always be + /// \c undefined in the function itself. If the function is non-strict, + /// \c this will be set to the global object. + Value call(Runtime& runtime, std::initializer_list args) const; + + /// Calls the function with any number of arguments similarly to + /// Object::setProperty(). The \c this value of the JS function will not be + /// set by the C++ caller, similar to calling + /// Function.prototype.call(undefined, ...args) in JS. + /// \b Note: as with Function.prototype.call, \c this may not always be + /// \c undefined in the function itself. If the function is non-strict, + /// \c this will be set to the global object. + template + Value call(Runtime& runtime, Args&&... args) const; + + /// Calls the function with \c count \c args and \c jsThis value passed + /// as the \c this value. + Value callWithThis( + Runtime& Runtime, + const Object& jsThis, + const Value* args, + size_t count) const; + + /// Calls the function with a \c std::initializer_list of Value + /// arguments and \c jsThis passed as the \c this value. + Value callWithThis( + Runtime& runtime, + const Object& jsThis, + std::initializer_list args) const; + + /// Calls the function with any number of arguments similarly to + /// Object::setProperty(), and with \c jsThis passed as the \c this value. + template + Value callWithThis(Runtime& runtime, const Object& jsThis, Args&&... args) + const; + + /// Calls the function as a constructor with \c count \c args. Equivalent + /// to calling `new Func` where `Func` is the js function reqresented by + /// this. + Value callAsConstructor(Runtime& runtime, const Value* args, size_t count) + const; + + /// Same as above `callAsConstructor`, except use an initializer_list to + /// supply the arguments. + Value callAsConstructor(Runtime& runtime, std::initializer_list args) + const; + + /// Same as above `callAsConstructor`, but automatically converts/wraps + /// any argument with a jsi Value. + template + Value callAsConstructor(Runtime& runtime, Args&&... args) const; + + /// Returns whether this was created with Function::createFromHostFunction. + /// If true then you can use getHostFunction to get the underlying + /// HostFunctionType. + bool isHostFunction(Runtime& runtime) const { + return runtime.isHostFunction(*this); + } + + /// Returns the underlying HostFunctionType iff isHostFunction returns true + /// and asserts otherwise. You can use this to use std::function<>::target + /// to get the object that was passed to create the HostFunctionType. + /// + /// Note: The reference returned is borrowed from the JS object underlying + /// \c this, and thus only lasts as long as the object underlying + /// \c this does. + HostFunctionType& getHostFunction(Runtime& runtime) const { + assert(isHostFunction(runtime)); + return runtime.getHostFunction(*this); + } + + private: + friend class Object; + friend class Value; + + Function(Runtime::PointerValue* value) : Object(value) {} +}; + +/// Represents any JS Value (undefined, null, boolean, number, symbol, +/// string, or object). Movable, or explicitly copyable (has no copy +/// ctor). +class JSI_EXPORT Value { + public: + /// Default ctor creates an \c undefined JS value. + Value() : Value(UndefinedKind) {} + + /// Creates a \c null JS value. + /* implicit */ Value(std::nullptr_t) : kind_(NullKind) {} + + /// Creates a boolean JS value. + /* implicit */ Value(bool b) : Value(BooleanKind) { + data_.boolean = b; + } + + /// Creates a number JS value. + /* implicit */ Value(double d) : Value(NumberKind) { + data_.number = d; + } + + /// Creates a number JS value. + /* implicit */ Value(int i) : Value(NumberKind) { + data_.number = i; + } + + /// Moves a Symbol, String, or Object rvalue into a new JS value. + template + /* implicit */ Value(T&& other) : Value(kindOf(other)) { + static_assert( + std::is_base_of::value || + std::is_base_of::value || + std::is_base_of::value, + "Value cannot be implicitly move-constructed from this type"); + new (&data_.pointer) T(std::move(other)); + } + + /// Value("foo") will treat foo as a bool. This makes doing that a + /// compile error. + template + Value(const char*) { + static_assert( + !std::is_same::value, + "Value cannot be constructed directly from const char*"); + } + + Value(Value&& value); + + /// Copies a Symbol lvalue into a new JS value. + Value(Runtime& runtime, const Symbol& sym) : Value(SymbolKind) { + new (&data_.pointer) String(runtime.cloneSymbol(sym.ptr_)); + } + + /// Copies a String lvalue into a new JS value. + Value(Runtime& runtime, const String& str) : Value(StringKind) { + new (&data_.pointer) String(runtime.cloneString(str.ptr_)); + } + + /// Copies a Object lvalue into a new JS value. + Value(Runtime& runtime, const Object& obj) : Value(ObjectKind) { + new (&data_.pointer) Object(runtime.cloneObject(obj.ptr_)); + } + + /// Creates a JS value from another Value lvalue. + Value(Runtime& runtime, const Value& value); + + /// Value(rt, "foo") will treat foo as a bool. This makes doing + /// that a compile error. + template + Value(Runtime&, const char*) { + static_assert( + !std::is_same::value, + "Value cannot be constructed directly from const char*"); + } + + ~Value(); + // \return the undefined \c Value. + static Value undefined() { + return Value(); + } + + // \return the null \c Value. + static Value null() { + return Value(nullptr); + } + + // \return a \c Value created from a utf8-encoded JSON string. + static Value + createFromJsonUtf8(Runtime& runtime, const uint8_t* json, size_t length) { + return runtime.createValueFromJsonUtf8(json, length); + } + + /// \return according to the Strict Equality Comparison algorithm, see: + /// https://262.ecma-international.org/11.0/#sec-strict-equality-comparison + static bool strictEquals(Runtime& runtime, const Value& a, const Value& b); + + Value& operator=(Value&& other) { + this->~Value(); + new (this) Value(std::move(other)); + return *this; + } + + bool isUndefined() const { + return kind_ == UndefinedKind; + } + + bool isNull() const { + return kind_ == NullKind; + } + + bool isBool() const { + return kind_ == BooleanKind; + } + + bool isNumber() const { + return kind_ == NumberKind; + } + + bool isString() const { + return kind_ == StringKind; + } + + bool isSymbol() const { + return kind_ == SymbolKind; + } + + bool isObject() const { + return kind_ == ObjectKind; + } + + /// \return the boolean value, or asserts if not a boolean. + bool getBool() const { + assert(isBool()); + return data_.boolean; + } + + /// \return the number value, or asserts if not a number. + double getNumber() const { + assert(isNumber()); + return data_.number; + } + + /// \return the number value, or throws JSIException if not a + /// number. + double asNumber() const; + + /// \return the Symbol value, or asserts if not a symbol. + Symbol getSymbol(Runtime& runtime) const& { + assert(isSymbol()); + return Symbol(runtime.cloneSymbol(data_.pointer.ptr_)); + } + + /// \return the Symbol value, or asserts if not a symbol. + /// Can be used on rvalue references to avoid cloning more symbols. + Symbol getSymbol(Runtime&) && { + assert(isSymbol()); + auto ptr = data_.pointer.ptr_; + data_.pointer.ptr_ = nullptr; + return static_cast(ptr); + } + + /// \return the Symbol value, or throws JSIException if not a + /// symbol + Symbol asSymbol(Runtime& runtime) const&; + Symbol asSymbol(Runtime& runtime) &&; + + /// \return the String value, or asserts if not a string. + String getString(Runtime& runtime) const& { + assert(isString()); + return String(runtime.cloneString(data_.pointer.ptr_)); + } + + /// \return the String value, or asserts if not a string. + /// Can be used on rvalue references to avoid cloning more strings. + String getString(Runtime&) && { + assert(isString()); + auto ptr = data_.pointer.ptr_; + data_.pointer.ptr_ = nullptr; + return static_cast(ptr); + } + + /// \return the String value, or throws JSIException if not a + /// string. + String asString(Runtime& runtime) const&; + String asString(Runtime& runtime) &&; + + /// \return the Object value, or asserts if not an object. + Object getObject(Runtime& runtime) const& { + assert(isObject()); + return Object(runtime.cloneObject(data_.pointer.ptr_)); + } + + /// \return the Object value, or asserts if not an object. + /// Can be used on rvalue references to avoid cloning more objects. + Object getObject(Runtime&) && { + assert(isObject()); + auto ptr = data_.pointer.ptr_; + data_.pointer.ptr_ = nullptr; + return static_cast(ptr); + } + + /// \return the Object value, or throws JSIException if not an + /// object. + Object asObject(Runtime& runtime) const&; + Object asObject(Runtime& runtime) &&; + + // \return a String like JS .toString() would do. + String toString(Runtime& runtime) const; + + private: + friend class Runtime; + + enum ValueKind { + UndefinedKind, + NullKind, + BooleanKind, + NumberKind, + SymbolKind, + StringKind, + ObjectKind, + PointerKind = SymbolKind, + }; + + union Data { + // Value's ctor and dtor will manage the lifecycle of the contained Data. + Data() { + static_assert( + sizeof(Data) == sizeof(uint64_t), + "Value data should fit in a 64-bit register"); + } + ~Data() {} + + // scalars + bool boolean; + double number; + // pointers + Pointer pointer; // Symbol, String, Object, Array, Function + }; + + Value(ValueKind kind) : kind_(kind) {} + + constexpr static ValueKind kindOf(const Symbol&) { + return SymbolKind; + } + constexpr static ValueKind kindOf(const String&) { + return StringKind; + } + constexpr static ValueKind kindOf(const Object&) { + return ObjectKind; + } + + ValueKind kind_; + Data data_; + + // In the future: Value becomes NaN-boxed. See T40538354. +}; + +/// Not movable and not copyable RAII marker advising the underlying +/// JavaScript VM to track resources allocated since creation until +/// destruction so that they can be recycled eagerly when the Scope +/// goes out of scope instead of floating in the air until the next +/// garbage collection or any other delayed release occurs. +/// +/// This API should be treated only as advice, implementations can +/// choose to ignore the fact that Scopes are created or destroyed. +/// +/// This class is an exception to the rule allowing destructors to be +/// called without proper synchronization (see Runtime documentation). +/// The whole point of this class is to enable all sorts of clean ups +/// when the destructor is called and this proper synchronization is +/// required at that time. +/// +/// Instances of this class are intended to be created as automatic stack +/// variables in which case destructor calls don't require any additional +/// locking, provided that the lock (if any) is managed with RAII helpers. +class JSI_EXPORT Scope { + public: + explicit Scope(Runtime& rt) : rt_(rt), prv_(rt.pushScope()) {} + ~Scope() { + rt_.popScope(prv_); + }; + + Scope(const Scope&) = delete; + Scope(Scope&&) = delete; + + Scope& operator=(const Scope&) = delete; + Scope& operator=(Scope&&) = delete; + + template + static auto callInNewScope(Runtime& rt, F f) -> decltype(f()) { + Scope s(rt); + return f(); + } + + private: + Runtime& rt_; + Runtime::ScopeState* prv_; +}; + +/// Base class for jsi exceptions +class JSI_EXPORT JSIException : public std::exception { + protected: + JSIException(){}; + JSIException(std::string what) : what_(std::move(what)){}; + + public: + virtual const char* what() const noexcept override { + return what_.c_str(); + } + + virtual ~JSIException(); + + protected: + std::string what_; +}; + +/// This exception will be thrown by API functions on errors not related to +/// JavaScript execution. +class JSI_EXPORT JSINativeException : public JSIException { + public: + JSINativeException(std::string what) : JSIException(std::move(what)) {} + + virtual ~JSINativeException(); +}; + +/// This exception will be thrown by API functions whenever a JS +/// operation causes an exception as described by the spec, or as +/// otherwise described. +class JSI_EXPORT JSError : public JSIException { + public: + /// Creates a JSError referring to provided \c value + JSError(Runtime& r, Value&& value); + + /// Creates a JSError referring to new \c Error instance capturing current + /// JavaScript stack. The error message property is set to given \c message. + JSError(Runtime& rt, std::string message); + + /// Creates a JSError referring to new \c Error instance capturing current + /// JavaScript stack. The error message property is set to given \c message. + JSError(Runtime& rt, const char* message) + : JSError(rt, std::string(message)){}; + + /// Creates a JSError referring to a JavaScript Object having message and + /// stack properties set to provided values. + JSError(Runtime& rt, std::string message, std::string stack); + + /// Creates a JSError referring to provided value and what string + /// set to provided message. This argument order is a bit weird, + /// but necessary to avoid ambiguity with the above. + JSError(std::string what, Runtime& rt, Value&& value); + + virtual ~JSError(); + + const std::string& getStack() const { + return stack_; + } + + const std::string& getMessage() const { + return message_; + } + + const jsi::Value& value() const { + assert(value_); + return *value_; + } + + private: + // This initializes the value_ member and does some other + // validation, so it must be called by every branch through the + // constructors. + void setValue(Runtime& rt, Value&& value); + + // This needs to be on the heap, because throw requires the object + // be copyable, and Value is not. + std::shared_ptr value_; + std::string message_; + std::string stack_; +}; + +} // namespace jsi +} // namespace facebook + +#include diff --git a/Frameworks/React-jsi.xcframework/ios-arm64_x86_64-simulator/Headers/jsi/jsilib.h b/Frameworks/React-jsi.xcframework/ios-arm64_x86_64-simulator/Headers/jsi/jsilib.h new file mode 100644 index 0000000..d99b66d --- /dev/null +++ b/Frameworks/React-jsi.xcframework/ios-arm64_x86_64-simulator/Headers/jsi/jsilib.h @@ -0,0 +1,59 @@ +/* + * 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. + */ + +#pragma once + +#include + +namespace facebook { +namespace jsi { + +class FileBuffer : public Buffer { + public: + FileBuffer(const std::string& path); + ~FileBuffer(); + + size_t size() const override { + return size_; + } + + const uint8_t* data() const override { + return data_; + } + + private: + size_t size_; + uint8_t* data_; +}; + +// A trivial implementation of PreparedJavaScript that simply stores the source +// buffer and URL. +class SourceJavaScriptPreparation final : public jsi::PreparedJavaScript, + public jsi::Buffer { + std::shared_ptr buf_; + std::string sourceURL_; + + public: + SourceJavaScriptPreparation( + std::shared_ptr buf, + std::string sourceURL) + : buf_(std::move(buf)), sourceURL_(std::move(sourceURL)) {} + + const std::string& sourceURL() const { + return sourceURL_; + } + + size_t size() const override { + return buf_->size(); + } + const uint8_t* data() const override { + return buf_->data(); + } +}; + +} // namespace jsi +} // namespace facebook diff --git a/Frameworks/React-jsi.xcframework/ios-arm64_x86_64-simulator/Headers/jsi/threadsafe.h b/Frameworks/React-jsi.xcframework/ios-arm64_x86_64-simulator/Headers/jsi/threadsafe.h new file mode 100644 index 0000000..eddbce4 --- /dev/null +++ b/Frameworks/React-jsi.xcframework/ios-arm64_x86_64-simulator/Headers/jsi/threadsafe.h @@ -0,0 +1,79 @@ +/* + * 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. + */ + +#pragma once + +#include + +#include +#include + +namespace facebook { +namespace jsi { + +class ThreadSafeRuntime : public Runtime { + public: + virtual void lock() const = 0; + virtual void unlock() const = 0; + virtual Runtime& getUnsafeRuntime() = 0; +}; + +namespace detail { + +template +struct WithLock { + L lock; + WithLock(R& r) : lock(r) {} + void before() { + lock.lock(); + } + void after() { + lock.unlock(); + } +}; + +// The actual implementation of a given ThreadSafeRuntime. It's parameterized +// by: +// +// - R: The actual Runtime type that this wraps +// - L: A lock type that has three members: +// - L(R& r) // ctor +// - void lock() +// - void unlock() +template +class ThreadSafeRuntimeImpl final + : public WithRuntimeDecorator, R, ThreadSafeRuntime> { + public: + template + ThreadSafeRuntimeImpl(Args&&... args) + : WithRuntimeDecorator, R, ThreadSafeRuntime>( + unsafe_, + lock_), + unsafe_(std::forward(args)...), + lock_(unsafe_) {} + + R& getUnsafeRuntime() override { + return WithRuntimeDecorator, R, ThreadSafeRuntime>::plain(); + } + + void lock() const override { + lock_.before(); + } + + void unlock() const override { + lock_.after(); + } + + private: + R unsafe_; + mutable WithLock lock_; +}; + +} // namespace detail + +} // namespace jsi +} // namespace facebook diff --git a/Frameworks/React-jsi.xcframework/ios-arm64_x86_64-simulator/libReact-jsi.a b/Frameworks/React-jsi.xcframework/ios-arm64_x86_64-simulator/libReact-jsi.a new file mode 100644 index 0000000..eb1fda3 Binary files /dev/null and b/Frameworks/React-jsi.xcframework/ios-arm64_x86_64-simulator/libReact-jsi.a differ diff --git a/Frameworks/React-jsiexecutor.xcframework/Info.plist b/Frameworks/React-jsiexecutor.xcframework/Info.plist new file mode 100644 index 0000000..db3733e --- /dev/null +++ b/Frameworks/React-jsiexecutor.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libReact-jsiexecutor.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libReact-jsiexecutor.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + libReact-jsiexecutor.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libReact-jsiexecutor.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/React-jsiexecutor.xcframework/ios-arm64/Headers/jsireact/JSIExecutor.h b/Frameworks/React-jsiexecutor.xcframework/ios-arm64/Headers/jsireact/JSIExecutor.h new file mode 100644 index 0000000..615172e --- /dev/null +++ b/Frameworks/React-jsiexecutor.xcframework/ios-arm64/Headers/jsireact/JSIExecutor.h @@ -0,0 +1,146 @@ +/* + * 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. + */ + +#pragma once + +#include "JSINativeModules.h" + +#include +#include +#include +#include +#include +#include + +namespace facebook { +namespace react { + +// A JSIScopedTimeoutInvoker is a trampoline-type function for introducing +// timeouts. Call the TimeoutInvoker with a function to execute, the invokee. +// The TimeoutInvoker will immediately invoke it, synchronously on the same +// thread. If the invokee fails to return after some timeout (private to the +// TimeoutInvoker), a soft error may be reported. +// +// If a soft error is reported, the second parameter errorMessageProducer will +// be invoked to produce an error message, which will be included in the soft +// error report. Note that the errorMessageProducer will be invoked +// asynchronously on a different thread. +// +// The timeout behavior does NOT cause the invokee to aborted. If the invokee +// blocks forever, so will the ScopedTimeoutInvoker (but the soft error may +// still be reported). +// +// The invokee is passed by const ref because it is executed synchronously, but +// the errorMessageProducer is passed by value because it must be copied or +// moved for async execution. +// +// Example usage: +// +// int param = ...; +// timeoutInvoker( +// [&]{ someBigWork(param); }, +// [=] -> std::string { +// return "someBigWork, param " + std::to_string(param); +// }) +// +using JSIScopedTimeoutInvoker = std::function &invokee, + std::function errorMessageProducer)>; + +class BigStringBuffer : public jsi::Buffer { + public: + BigStringBuffer(std::unique_ptr script) + : script_(std::move(script)) {} + + size_t size() const override { + return script_->size(); + } + + const uint8_t *data() const override { + return reinterpret_cast(script_->c_str()); + } + + private: + std::unique_ptr script_; +}; + +class JSIExecutor : public JSExecutor { + public: + using RuntimeInstaller = std::function; + + JSIExecutor( + std::shared_ptr runtime, + std::shared_ptr delegate, + const JSIScopedTimeoutInvoker &timeoutInvoker, + RuntimeInstaller runtimeInstaller); + void initializeRuntime() override; + void loadBundle( + std::unique_ptr script, + std::string sourceURL) override; + void setBundleRegistry(std::unique_ptr) override; + void registerBundle(uint32_t bundleId, const std::string &bundlePath) + override; + void callFunction( + const std::string &moduleId, + const std::string &methodId, + const folly::dynamic &arguments) override; + void invokeCallback(const double callbackId, const folly::dynamic &arguments) + override; + void setGlobalVariable( + std::string propName, + std::unique_ptr jsonValue) override; + std::string getDescription() override; + void *getJavaScriptContext() override; + bool isInspectable() override; + void handleMemoryPressure(int pressureLevel) override; + + // An implementation of JSIScopedTimeoutInvoker that simply runs the + // invokee, with no timeout. + static void defaultTimeoutInvoker( + const std::function &invokee, + std::function errorMessageProducer) { + (void)errorMessageProducer; + invokee(); + } + + void flush() override; + + private: + class NativeModuleProxy; + + void bindBridge(); + void callNativeModules(const jsi::Value &queue, bool isEndOfBatch); + jsi::Value nativeCallSyncHook(const jsi::Value *args, size_t count); + jsi::Value nativeRequire(const jsi::Value *args, size_t count); +#ifdef DEBUG + jsi::Value globalEvalWithSourceUrl(const jsi::Value *args, size_t count); +#endif + + std::shared_ptr runtime_; + std::shared_ptr delegate_; + std::shared_ptr nativeModules_; + std::shared_ptr moduleRegistry_; + std::once_flag bindFlag_; + std::unique_ptr bundleRegistry_; + JSIScopedTimeoutInvoker scopedTimeoutInvoker_; + RuntimeInstaller runtimeInstaller_; + + folly::Optional callFunctionReturnFlushedQueue_; + folly::Optional invokeCallbackAndReturnFlushedQueue_; + folly::Optional flushedQueue_; +}; + +using Logger = + std::function; +void bindNativeLogger(jsi::Runtime &runtime, Logger logger); + +using PerformanceNow = std::function; +void bindNativePerformanceNow( + jsi::Runtime &runtime, + PerformanceNow performanceNow); +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-jsiexecutor.xcframework/ios-arm64/Headers/jsireact/JSINativeModules.h b/Frameworks/React-jsiexecutor.xcframework/ios-arm64/Headers/jsireact/JSINativeModules.h new file mode 100644 index 0000000..a1dff88 --- /dev/null +++ b/Frameworks/React-jsiexecutor.xcframework/ios-arm64/Headers/jsireact/JSINativeModules.h @@ -0,0 +1,40 @@ +/* + * 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. + */ + +#pragma once + +#include +#include + +#include +#include +#include + +namespace facebook { +namespace react { + +/** + * Holds and creates JS representations of the modules in ModuleRegistry + */ +class JSINativeModules { + public: + explicit JSINativeModules(std::shared_ptr moduleRegistry); + jsi::Value getModule(jsi::Runtime &rt, const jsi::PropNameID &name); + void reset(); + + private: + folly::Optional m_genNativeModuleJS; + std::shared_ptr m_moduleRegistry; + std::unordered_map m_objects; + + folly::Optional createModule( + jsi::Runtime &rt, + const std::string &name); +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-jsiexecutor.xcframework/ios-arm64/libReact-jsiexecutor.a b/Frameworks/React-jsiexecutor.xcframework/ios-arm64/libReact-jsiexecutor.a new file mode 100644 index 0000000..2427879 Binary files /dev/null and b/Frameworks/React-jsiexecutor.xcframework/ios-arm64/libReact-jsiexecutor.a differ diff --git a/Frameworks/React-jsiexecutor.xcframework/ios-arm64_x86_64-simulator/Headers/jsireact/JSIExecutor.h b/Frameworks/React-jsiexecutor.xcframework/ios-arm64_x86_64-simulator/Headers/jsireact/JSIExecutor.h new file mode 100644 index 0000000..615172e --- /dev/null +++ b/Frameworks/React-jsiexecutor.xcframework/ios-arm64_x86_64-simulator/Headers/jsireact/JSIExecutor.h @@ -0,0 +1,146 @@ +/* + * 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. + */ + +#pragma once + +#include "JSINativeModules.h" + +#include +#include +#include +#include +#include +#include + +namespace facebook { +namespace react { + +// A JSIScopedTimeoutInvoker is a trampoline-type function for introducing +// timeouts. Call the TimeoutInvoker with a function to execute, the invokee. +// The TimeoutInvoker will immediately invoke it, synchronously on the same +// thread. If the invokee fails to return after some timeout (private to the +// TimeoutInvoker), a soft error may be reported. +// +// If a soft error is reported, the second parameter errorMessageProducer will +// be invoked to produce an error message, which will be included in the soft +// error report. Note that the errorMessageProducer will be invoked +// asynchronously on a different thread. +// +// The timeout behavior does NOT cause the invokee to aborted. If the invokee +// blocks forever, so will the ScopedTimeoutInvoker (but the soft error may +// still be reported). +// +// The invokee is passed by const ref because it is executed synchronously, but +// the errorMessageProducer is passed by value because it must be copied or +// moved for async execution. +// +// Example usage: +// +// int param = ...; +// timeoutInvoker( +// [&]{ someBigWork(param); }, +// [=] -> std::string { +// return "someBigWork, param " + std::to_string(param); +// }) +// +using JSIScopedTimeoutInvoker = std::function &invokee, + std::function errorMessageProducer)>; + +class BigStringBuffer : public jsi::Buffer { + public: + BigStringBuffer(std::unique_ptr script) + : script_(std::move(script)) {} + + size_t size() const override { + return script_->size(); + } + + const uint8_t *data() const override { + return reinterpret_cast(script_->c_str()); + } + + private: + std::unique_ptr script_; +}; + +class JSIExecutor : public JSExecutor { + public: + using RuntimeInstaller = std::function; + + JSIExecutor( + std::shared_ptr runtime, + std::shared_ptr delegate, + const JSIScopedTimeoutInvoker &timeoutInvoker, + RuntimeInstaller runtimeInstaller); + void initializeRuntime() override; + void loadBundle( + std::unique_ptr script, + std::string sourceURL) override; + void setBundleRegistry(std::unique_ptr) override; + void registerBundle(uint32_t bundleId, const std::string &bundlePath) + override; + void callFunction( + const std::string &moduleId, + const std::string &methodId, + const folly::dynamic &arguments) override; + void invokeCallback(const double callbackId, const folly::dynamic &arguments) + override; + void setGlobalVariable( + std::string propName, + std::unique_ptr jsonValue) override; + std::string getDescription() override; + void *getJavaScriptContext() override; + bool isInspectable() override; + void handleMemoryPressure(int pressureLevel) override; + + // An implementation of JSIScopedTimeoutInvoker that simply runs the + // invokee, with no timeout. + static void defaultTimeoutInvoker( + const std::function &invokee, + std::function errorMessageProducer) { + (void)errorMessageProducer; + invokee(); + } + + void flush() override; + + private: + class NativeModuleProxy; + + void bindBridge(); + void callNativeModules(const jsi::Value &queue, bool isEndOfBatch); + jsi::Value nativeCallSyncHook(const jsi::Value *args, size_t count); + jsi::Value nativeRequire(const jsi::Value *args, size_t count); +#ifdef DEBUG + jsi::Value globalEvalWithSourceUrl(const jsi::Value *args, size_t count); +#endif + + std::shared_ptr runtime_; + std::shared_ptr delegate_; + std::shared_ptr nativeModules_; + std::shared_ptr moduleRegistry_; + std::once_flag bindFlag_; + std::unique_ptr bundleRegistry_; + JSIScopedTimeoutInvoker scopedTimeoutInvoker_; + RuntimeInstaller runtimeInstaller_; + + folly::Optional callFunctionReturnFlushedQueue_; + folly::Optional invokeCallbackAndReturnFlushedQueue_; + folly::Optional flushedQueue_; +}; + +using Logger = + std::function; +void bindNativeLogger(jsi::Runtime &runtime, Logger logger); + +using PerformanceNow = std::function; +void bindNativePerformanceNow( + jsi::Runtime &runtime, + PerformanceNow performanceNow); +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-jsiexecutor.xcframework/ios-arm64_x86_64-simulator/Headers/jsireact/JSINativeModules.h b/Frameworks/React-jsiexecutor.xcframework/ios-arm64_x86_64-simulator/Headers/jsireact/JSINativeModules.h new file mode 100644 index 0000000..a1dff88 --- /dev/null +++ b/Frameworks/React-jsiexecutor.xcframework/ios-arm64_x86_64-simulator/Headers/jsireact/JSINativeModules.h @@ -0,0 +1,40 @@ +/* + * 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. + */ + +#pragma once + +#include +#include + +#include +#include +#include + +namespace facebook { +namespace react { + +/** + * Holds and creates JS representations of the modules in ModuleRegistry + */ +class JSINativeModules { + public: + explicit JSINativeModules(std::shared_ptr moduleRegistry); + jsi::Value getModule(jsi::Runtime &rt, const jsi::PropNameID &name); + void reset(); + + private: + folly::Optional m_genNativeModuleJS; + std::shared_ptr m_moduleRegistry; + std::unordered_map m_objects; + + folly::Optional createModule( + jsi::Runtime &rt, + const std::string &name); +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-jsiexecutor.xcframework/ios-arm64_x86_64-simulator/libReact-jsiexecutor.a b/Frameworks/React-jsiexecutor.xcframework/ios-arm64_x86_64-simulator/libReact-jsiexecutor.a new file mode 100644 index 0000000..aa19251 Binary files /dev/null and b/Frameworks/React-jsiexecutor.xcframework/ios-arm64_x86_64-simulator/libReact-jsiexecutor.a differ diff --git a/Frameworks/React-jsinspector.xcframework/Info.plist b/Frameworks/React-jsinspector.xcframework/Info.plist new file mode 100644 index 0000000..5812431 --- /dev/null +++ b/Frameworks/React-jsinspector.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libReact-jsinspector.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libReact-jsinspector.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + libReact-jsinspector.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libReact-jsinspector.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/React-jsinspector.xcframework/ios-arm64/Headers/jsinspector/InspectorInterfaces.h b/Frameworks/React-jsinspector.xcframework/ios-arm64/Headers/jsinspector/InspectorInterfaces.h new file mode 100644 index 0000000..345434b --- /dev/null +++ b/Frameworks/React-jsinspector.xcframework/ios-arm64/Headers/jsinspector/InspectorInterfaces.h @@ -0,0 +1,94 @@ +/* + * 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. + */ + +#pragma once + +#include +#include +#include +#include + +#ifndef JSINSPECTOR_EXPORT +#ifdef _MSC_VER +#ifdef CREATE_SHARED_LIBRARY +#define JSINSPECTOR_EXPORT __declspec(dllexport) +#else +#define JSINSPECTOR_EXPORT +#endif // CREATE_SHARED_LIBRARY +#else // _MSC_VER +#define JSINSPECTOR_EXPORT __attribute__((visibility("default"))) +#endif // _MSC_VER +#endif // !defined(JSINSPECTOR_EXPORT) + +namespace facebook { +namespace react { + +class IDestructible { + public: + virtual ~IDestructible() = 0; +}; + +struct InspectorPage { + const int id; + const std::string title; + const std::string vm; +}; + +/// IRemoteConnection allows the VM to send debugger messages to the client. +class JSINSPECTOR_EXPORT IRemoteConnection : public IDestructible { + public: + virtual ~IRemoteConnection() = 0; + virtual void onMessage(std::string message) = 0; + virtual void onDisconnect() = 0; +}; + +/// ILocalConnection allows the client to send debugger messages to the VM. +class JSINSPECTOR_EXPORT ILocalConnection : public IDestructible { + public: + virtual ~ILocalConnection() = 0; + virtual void sendMessage(std::string message) = 0; + virtual void disconnect() = 0; +}; + +/// IInspector tracks debuggable JavaScript targets (pages). +class JSINSPECTOR_EXPORT IInspector : public IDestructible { + public: + using ConnectFunc = std::function( + std::unique_ptr)>; + + virtual ~IInspector() = 0; + + /// addPage is called by the VM to add a page to the list of debuggable pages. + virtual int addPage( + const std::string &title, + const std::string &vm, + ConnectFunc connectFunc) = 0; + + /// removePage is called by the VM to remove a page from the list of + /// debuggable pages. + virtual void removePage(int pageId) = 0; + + /// getPages is called by the client to list all debuggable pages. + virtual std::vector getPages() const = 0; + + /// connect is called by the client to initiate a debugging session on the + /// given page. + virtual std::unique_ptr connect( + int pageId, + std::unique_ptr remote) = 0; +}; + +/// getInspectorInstance retrieves the singleton inspector that tracks all +/// debuggable pages in this process. +extern IInspector &getInspectorInstance(); + +/// makeTestInspectorInstance creates an independent inspector instance that +/// should only be used in tests. +extern std::unique_ptr makeTestInspectorInstance(); + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-jsinspector.xcframework/ios-arm64/libReact-jsinspector.a b/Frameworks/React-jsinspector.xcframework/ios-arm64/libReact-jsinspector.a new file mode 100644 index 0000000..b8e7c02 Binary files /dev/null and b/Frameworks/React-jsinspector.xcframework/ios-arm64/libReact-jsinspector.a differ diff --git a/Frameworks/React-jsinspector.xcframework/ios-arm64_x86_64-simulator/Headers/jsinspector/InspectorInterfaces.h b/Frameworks/React-jsinspector.xcframework/ios-arm64_x86_64-simulator/Headers/jsinspector/InspectorInterfaces.h new file mode 100644 index 0000000..345434b --- /dev/null +++ b/Frameworks/React-jsinspector.xcframework/ios-arm64_x86_64-simulator/Headers/jsinspector/InspectorInterfaces.h @@ -0,0 +1,94 @@ +/* + * 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. + */ + +#pragma once + +#include +#include +#include +#include + +#ifndef JSINSPECTOR_EXPORT +#ifdef _MSC_VER +#ifdef CREATE_SHARED_LIBRARY +#define JSINSPECTOR_EXPORT __declspec(dllexport) +#else +#define JSINSPECTOR_EXPORT +#endif // CREATE_SHARED_LIBRARY +#else // _MSC_VER +#define JSINSPECTOR_EXPORT __attribute__((visibility("default"))) +#endif // _MSC_VER +#endif // !defined(JSINSPECTOR_EXPORT) + +namespace facebook { +namespace react { + +class IDestructible { + public: + virtual ~IDestructible() = 0; +}; + +struct InspectorPage { + const int id; + const std::string title; + const std::string vm; +}; + +/// IRemoteConnection allows the VM to send debugger messages to the client. +class JSINSPECTOR_EXPORT IRemoteConnection : public IDestructible { + public: + virtual ~IRemoteConnection() = 0; + virtual void onMessage(std::string message) = 0; + virtual void onDisconnect() = 0; +}; + +/// ILocalConnection allows the client to send debugger messages to the VM. +class JSINSPECTOR_EXPORT ILocalConnection : public IDestructible { + public: + virtual ~ILocalConnection() = 0; + virtual void sendMessage(std::string message) = 0; + virtual void disconnect() = 0; +}; + +/// IInspector tracks debuggable JavaScript targets (pages). +class JSINSPECTOR_EXPORT IInspector : public IDestructible { + public: + using ConnectFunc = std::function( + std::unique_ptr)>; + + virtual ~IInspector() = 0; + + /// addPage is called by the VM to add a page to the list of debuggable pages. + virtual int addPage( + const std::string &title, + const std::string &vm, + ConnectFunc connectFunc) = 0; + + /// removePage is called by the VM to remove a page from the list of + /// debuggable pages. + virtual void removePage(int pageId) = 0; + + /// getPages is called by the client to list all debuggable pages. + virtual std::vector getPages() const = 0; + + /// connect is called by the client to initiate a debugging session on the + /// given page. + virtual std::unique_ptr connect( + int pageId, + std::unique_ptr remote) = 0; +}; + +/// getInspectorInstance retrieves the singleton inspector that tracks all +/// debuggable pages in this process. +extern IInspector &getInspectorInstance(); + +/// makeTestInspectorInstance creates an independent inspector instance that +/// should only be used in tests. +extern std::unique_ptr makeTestInspectorInstance(); + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-jsinspector.xcframework/ios-arm64_x86_64-simulator/libReact-jsinspector.a b/Frameworks/React-jsinspector.xcframework/ios-arm64_x86_64-simulator/libReact-jsinspector.a new file mode 100644 index 0000000..0dcf09f Binary files /dev/null and b/Frameworks/React-jsinspector.xcframework/ios-arm64_x86_64-simulator/libReact-jsinspector.a differ diff --git a/Frameworks/React-logger.xcframework/Info.plist b/Frameworks/React-logger.xcframework/Info.plist new file mode 100644 index 0000000..076a975 --- /dev/null +++ b/Frameworks/React-logger.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libReact-logger.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libReact-logger.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libReact-logger.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libReact-logger.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/React-logger.xcframework/ios-arm64/Headers/logger/react_native_log.h b/Frameworks/React-logger.xcframework/ios-arm64/Headers/logger/react_native_log.h new file mode 100644 index 0000000..c64f202 --- /dev/null +++ b/Frameworks/React-logger.xcframework/ios-arm64/Headers/logger/react_native_log.h @@ -0,0 +1,33 @@ +/* + * 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. + */ + +#pragma once + +enum ReactNativeLogLevel { + ReactNativeLogLevelInfo = 1, + ReactNativeLogLevelWarning = 2, + ReactNativeLogLevelError = 3, + ReactNativeLogLevelFatal = 4 +}; + +typedef void (*reactnativelogfunctype)(ReactNativeLogLevel, const char *); + +#ifdef __cplusplus +extern "C" { +#endif // __cplusplus +void set_react_native_logfunc(reactnativelogfunctype newlogfunc); + +void react_native_log_info(const char *text); +void react_native_log_warn(const char *text); +void react_native_log_error(const char *text); +void react_native_log_fatal(const char *text); + +void _react_native_log(ReactNativeLogLevel level, const char *text); +void _react_native_log_default(ReactNativeLogLevel level, const char *text); +#ifdef __cplusplus +} +#endif // __cpusplus diff --git a/Frameworks/React-logger.xcframework/ios-arm64/libReact-logger.a b/Frameworks/React-logger.xcframework/ios-arm64/libReact-logger.a new file mode 100644 index 0000000..e6bdbc4 Binary files /dev/null and b/Frameworks/React-logger.xcframework/ios-arm64/libReact-logger.a differ diff --git a/Frameworks/React-logger.xcframework/ios-arm64_x86_64-simulator/Headers/logger/react_native_log.h b/Frameworks/React-logger.xcframework/ios-arm64_x86_64-simulator/Headers/logger/react_native_log.h new file mode 100644 index 0000000..c64f202 --- /dev/null +++ b/Frameworks/React-logger.xcframework/ios-arm64_x86_64-simulator/Headers/logger/react_native_log.h @@ -0,0 +1,33 @@ +/* + * 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. + */ + +#pragma once + +enum ReactNativeLogLevel { + ReactNativeLogLevelInfo = 1, + ReactNativeLogLevelWarning = 2, + ReactNativeLogLevelError = 3, + ReactNativeLogLevelFatal = 4 +}; + +typedef void (*reactnativelogfunctype)(ReactNativeLogLevel, const char *); + +#ifdef __cplusplus +extern "C" { +#endif // __cplusplus +void set_react_native_logfunc(reactnativelogfunctype newlogfunc); + +void react_native_log_info(const char *text); +void react_native_log_warn(const char *text); +void react_native_log_error(const char *text); +void react_native_log_fatal(const char *text); + +void _react_native_log(ReactNativeLogLevel level, const char *text); +void _react_native_log_default(ReactNativeLogLevel level, const char *text); +#ifdef __cplusplus +} +#endif // __cpusplus diff --git a/Frameworks/React-logger.xcframework/ios-arm64_x86_64-simulator/libReact-logger.a b/Frameworks/React-logger.xcframework/ios-arm64_x86_64-simulator/libReact-logger.a new file mode 100644 index 0000000..4dec71f Binary files /dev/null and b/Frameworks/React-logger.xcframework/ios-arm64_x86_64-simulator/libReact-logger.a differ diff --git a/Frameworks/React-perflogger.xcframework/Info.plist b/Frameworks/React-perflogger.xcframework/Info.plist new file mode 100644 index 0000000..33a1194 --- /dev/null +++ b/Frameworks/React-perflogger.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libReact-perflogger.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libReact-perflogger.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libReact-perflogger.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libReact-perflogger.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/React-perflogger.xcframework/ios-arm64/Headers/reactperflogger/BridgeNativeModulePerfLogger.h b/Frameworks/React-perflogger.xcframework/ios-arm64/Headers/reactperflogger/BridgeNativeModulePerfLogger.h new file mode 100644 index 0000000..9ac83b9 --- /dev/null +++ b/Frameworks/React-perflogger.xcframework/ios-arm64/Headers/reactperflogger/BridgeNativeModulePerfLogger.h @@ -0,0 +1,113 @@ +/* + * 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. + */ + +#pragma once +#include +#include "NativeModulePerfLogger.h" + +namespace facebook { +namespace react { + +namespace BridgeNativeModulePerfLogger { +void enableLogging(std::unique_ptr &&logger); +void disableLogging(); + +void moduleDataCreateStart(const char *moduleName, int32_t id); +void moduleDataCreateEnd(const char *moduleName, int32_t id); + +/** + * Create NativeModule platform object + */ +void moduleCreateStart(const char *moduleName, int32_t id); +void moduleCreateCacheHit(const char *moduleName, int32_t id); +void moduleCreateConstructStart(const char *moduleName, int32_t id); +void moduleCreateConstructEnd(const char *moduleName, int32_t id); +void moduleCreateSetUpStart(const char *moduleName, int32_t id); +void moduleCreateSetUpEnd(const char *moduleName, int32_t id); +void moduleCreateEnd(const char *moduleName, int32_t id); +void moduleCreateFail(const char *moduleName, int32_t id); + +/** + * JS require beginning + */ +void moduleJSRequireBeginningStart(const char *moduleName); +void moduleJSRequireBeginningCacheHit(const char *moduleName); +void moduleJSRequireBeginningEnd(const char *moduleName); +void moduleJSRequireBeginningFail(const char *moduleName); + +/** + * JS require ending + */ +void moduleJSRequireEndingStart(const char *moduleName); +void moduleJSRequireEndingEnd(const char *moduleName); +void moduleJSRequireEndingFail(const char *moduleName); + +// Sync method calls +void syncMethodCallStart(const char *moduleName, const char *methodName); +void syncMethodCallArgConversionStart( + const char *moduleName, + const char *methodName); +void syncMethodCallArgConversionEnd( + const char *moduleName, + const char *methodName); +void syncMethodCallExecutionStart( + const char *moduleName, + const char *methodName); +void syncMethodCallExecutionEnd(const char *moduleName, const char *methodName); +void syncMethodCallReturnConversionStart( + const char *moduleName, + const char *methodName); +void syncMethodCallReturnConversionEnd( + const char *moduleName, + const char *methodName); +void syncMethodCallEnd(const char *moduleName, const char *methodName); +void syncMethodCallFail(const char *moduleName, const char *methodName); + +// Async method calls +void asyncMethodCallStart(const char *moduleName, const char *methodName); +void asyncMethodCallArgConversionStart( + const char *moduleName, + const char *methodName); +void asyncMethodCallArgConversionEnd( + const char *moduleName, + const char *methodName); +void asyncMethodCallDispatch(const char *moduleName, const char *methodName); +void asyncMethodCallEnd(const char *moduleName, const char *methodName); +void asyncMethodCallFail(const char *moduleName, const char *methodName); + +/** + * Pre-processing async method call batch + */ +void asyncMethodCallBatchPreprocessStart(); +void asyncMethodCallBatchPreprocessEnd(int batchSize); + +// Async method call execution +void asyncMethodCallExecutionStart( + const char *moduleName, + const char *methodName, + int32_t id); +void asyncMethodCallExecutionArgConversionStart( + const char *moduleName, + const char *methodName, + int32_t id); +void asyncMethodCallExecutionArgConversionEnd( + const char *moduleName, + const char *methodName, + int32_t id); +void asyncMethodCallExecutionEnd( + const char *moduleName, + const char *methodName, + int32_t id); +void asyncMethodCallExecutionFail( + const char *moduleName, + const char *methodName, + int32_t id); + +} // namespace BridgeNativeModulePerfLogger + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-perflogger.xcframework/ios-arm64/Headers/reactperflogger/NativeModulePerfLogger.h b/Frameworks/React-perflogger.xcframework/ios-arm64/Headers/reactperflogger/NativeModulePerfLogger.h new file mode 100644 index 0000000..54def97 --- /dev/null +++ b/Frameworks/React-perflogger.xcframework/ios-arm64/Headers/reactperflogger/NativeModulePerfLogger.h @@ -0,0 +1,164 @@ +/* + * 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. + */ + +#pragma once +#include + +namespace facebook { +namespace react { + +/** + * A platform-agnostic interface to do performance logging on NativeModules and + * TuboModules. + */ +class NativeModulePerfLogger { + public: + virtual ~NativeModulePerfLogger() {} + + /** + * NativeModule Initialization. + * + * The initialization of two NativeModules can interleave. Therefore, + * performance markers should use the moduleName as a unique key. + */ + + /** + * On iOS: + * - NativeModule initialization is split into two phases, which sometimes + * have a pause in the middle. + * - TurboModule initialization happens all at once. + * + * On Android: + * - NativeModule and TurboModule initialization happens all at once. + * + * These markers are meant for iOS NativeModules: + * - moduleDataCreateStart: very beginning of first phase. + * - moduleDataCreateEnd: after RCTModuleData has been created. + */ + virtual void moduleDataCreateStart(const char *moduleName, int32_t id) = 0; + virtual void moduleDataCreateEnd(const char *moduleName, int32_t id) = 0; + + /** + * How long does it take to create the platform NativeModule object? + * - moduleCreateStart: start creating platform NativeModule + * - moduleCreateEnd: stop creating platform NativeModule + */ + virtual void moduleCreateStart(const char *moduleName, int32_t id) = 0; + virtual void moduleCreateCacheHit(const char *moduleName, int32_t id) = 0; + virtual void moduleCreateConstructStart( + const char *moduleName, + int32_t id) = 0; + virtual void moduleCreateConstructEnd(const char *moduleName, int32_t id) = 0; + virtual void moduleCreateSetUpStart(const char *moduleName, int32_t id) = 0; + virtual void moduleCreateSetUpEnd(const char *moduleName, int32_t id) = 0; + virtual void moduleCreateEnd(const char *moduleName, int32_t id) = 0; + virtual void moduleCreateFail(const char *moduleName, int32_t id) = 0; + + /** + * How long, after starting JS require, does it take to start creating the + * platform NativeModule? + * - moduleJSRequireBeginningStart: start of JS require + * - moduleJSRequireBeginningEnd: start creating platform NativeModule + */ + virtual void moduleJSRequireBeginningStart(const char *moduleName) = 0; + virtual void moduleJSRequireBeginningCacheHit(const char *moduleName) = 0; + virtual void moduleJSRequireBeginningEnd(const char *moduleName) = 0; + virtual void moduleJSRequireBeginningFail(const char *moduleName) = 0; + + /** + * How long does it take to return from the JS require after the platform + * NativeModule is created? + * - moduleJSRequireEndingStart: end creating platform NativeModule + * - moduleJSRequireEndingEnd: end of JS require + */ + virtual void moduleJSRequireEndingStart(const char *moduleName) = 0; + virtual void moduleJSRequireEndingEnd(const char *moduleName) = 0; + virtual void moduleJSRequireEndingFail(const char *moduleName) = 0; + + // Sync method calls + virtual void syncMethodCallStart( + const char *moduleName, + const char *methodName) = 0; + virtual void syncMethodCallArgConversionStart( + const char *moduleName, + const char *methodName) = 0; + virtual void syncMethodCallArgConversionEnd( + const char *moduleName, + const char *methodName) = 0; + virtual void syncMethodCallExecutionStart( + const char *moduleName, + const char *methodName) = 0; + virtual void syncMethodCallExecutionEnd( + const char *moduleName, + const char *methodName) = 0; + virtual void syncMethodCallReturnConversionStart( + const char *moduleName, + const char *methodName) = 0; + virtual void syncMethodCallReturnConversionEnd( + const char *moduleName, + const char *methodName) = 0; + virtual void syncMethodCallEnd( + const char *moduleName, + const char *methodName) = 0; + virtual void syncMethodCallFail( + const char *moduleName, + const char *methodName) = 0; + + // Async method calls + virtual void asyncMethodCallStart( + const char *moduleName, + const char *methodName) = 0; + virtual void asyncMethodCallArgConversionStart( + const char *moduleName, + const char *methodName) = 0; + virtual void asyncMethodCallArgConversionEnd( + const char *moduleName, + const char *methodName) = 0; + virtual void asyncMethodCallDispatch( + const char *moduleName, + const char *methodName) = 0; + virtual void asyncMethodCallEnd( + const char *moduleName, + const char *methodName) = 0; + virtual void asyncMethodCallFail( + const char *moduleName, + const char *methodName) = 0; + + /** + * In the NativeModule system, we batch async NativeModule method calls. + * When we execute a batch of NativeModule method calls, we convert the batch + * from a jsi::Value to folly::dynamic to std::vector. This marker + * documents that work. + */ + virtual void asyncMethodCallBatchPreprocessStart() = 0; + virtual void asyncMethodCallBatchPreprocessEnd(int batchSize) = 0; + + // Async method call execution + virtual void asyncMethodCallExecutionStart( + const char *moduleName, + const char *methodName, + int32_t id) = 0; + virtual void asyncMethodCallExecutionArgConversionStart( + const char *moduleName, + const char *methodName, + int32_t id) = 0; + virtual void asyncMethodCallExecutionArgConversionEnd( + const char *moduleName, + const char *methodName, + int32_t id) = 0; + virtual void asyncMethodCallExecutionEnd( + const char *moduleName, + const char *methodName, + int32_t id) = 0; + virtual void asyncMethodCallExecutionFail( + const char *moduleName, + const char *methodName, + int32_t id) = 0; +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-perflogger.xcframework/ios-arm64/libReact-perflogger.a b/Frameworks/React-perflogger.xcframework/ios-arm64/libReact-perflogger.a new file mode 100644 index 0000000..6ab9454 Binary files /dev/null and b/Frameworks/React-perflogger.xcframework/ios-arm64/libReact-perflogger.a differ diff --git a/Frameworks/React-perflogger.xcframework/ios-arm64_x86_64-simulator/Headers/reactperflogger/BridgeNativeModulePerfLogger.h b/Frameworks/React-perflogger.xcframework/ios-arm64_x86_64-simulator/Headers/reactperflogger/BridgeNativeModulePerfLogger.h new file mode 100644 index 0000000..9ac83b9 --- /dev/null +++ b/Frameworks/React-perflogger.xcframework/ios-arm64_x86_64-simulator/Headers/reactperflogger/BridgeNativeModulePerfLogger.h @@ -0,0 +1,113 @@ +/* + * 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. + */ + +#pragma once +#include +#include "NativeModulePerfLogger.h" + +namespace facebook { +namespace react { + +namespace BridgeNativeModulePerfLogger { +void enableLogging(std::unique_ptr &&logger); +void disableLogging(); + +void moduleDataCreateStart(const char *moduleName, int32_t id); +void moduleDataCreateEnd(const char *moduleName, int32_t id); + +/** + * Create NativeModule platform object + */ +void moduleCreateStart(const char *moduleName, int32_t id); +void moduleCreateCacheHit(const char *moduleName, int32_t id); +void moduleCreateConstructStart(const char *moduleName, int32_t id); +void moduleCreateConstructEnd(const char *moduleName, int32_t id); +void moduleCreateSetUpStart(const char *moduleName, int32_t id); +void moduleCreateSetUpEnd(const char *moduleName, int32_t id); +void moduleCreateEnd(const char *moduleName, int32_t id); +void moduleCreateFail(const char *moduleName, int32_t id); + +/** + * JS require beginning + */ +void moduleJSRequireBeginningStart(const char *moduleName); +void moduleJSRequireBeginningCacheHit(const char *moduleName); +void moduleJSRequireBeginningEnd(const char *moduleName); +void moduleJSRequireBeginningFail(const char *moduleName); + +/** + * JS require ending + */ +void moduleJSRequireEndingStart(const char *moduleName); +void moduleJSRequireEndingEnd(const char *moduleName); +void moduleJSRequireEndingFail(const char *moduleName); + +// Sync method calls +void syncMethodCallStart(const char *moduleName, const char *methodName); +void syncMethodCallArgConversionStart( + const char *moduleName, + const char *methodName); +void syncMethodCallArgConversionEnd( + const char *moduleName, + const char *methodName); +void syncMethodCallExecutionStart( + const char *moduleName, + const char *methodName); +void syncMethodCallExecutionEnd(const char *moduleName, const char *methodName); +void syncMethodCallReturnConversionStart( + const char *moduleName, + const char *methodName); +void syncMethodCallReturnConversionEnd( + const char *moduleName, + const char *methodName); +void syncMethodCallEnd(const char *moduleName, const char *methodName); +void syncMethodCallFail(const char *moduleName, const char *methodName); + +// Async method calls +void asyncMethodCallStart(const char *moduleName, const char *methodName); +void asyncMethodCallArgConversionStart( + const char *moduleName, + const char *methodName); +void asyncMethodCallArgConversionEnd( + const char *moduleName, + const char *methodName); +void asyncMethodCallDispatch(const char *moduleName, const char *methodName); +void asyncMethodCallEnd(const char *moduleName, const char *methodName); +void asyncMethodCallFail(const char *moduleName, const char *methodName); + +/** + * Pre-processing async method call batch + */ +void asyncMethodCallBatchPreprocessStart(); +void asyncMethodCallBatchPreprocessEnd(int batchSize); + +// Async method call execution +void asyncMethodCallExecutionStart( + const char *moduleName, + const char *methodName, + int32_t id); +void asyncMethodCallExecutionArgConversionStart( + const char *moduleName, + const char *methodName, + int32_t id); +void asyncMethodCallExecutionArgConversionEnd( + const char *moduleName, + const char *methodName, + int32_t id); +void asyncMethodCallExecutionEnd( + const char *moduleName, + const char *methodName, + int32_t id); +void asyncMethodCallExecutionFail( + const char *moduleName, + const char *methodName, + int32_t id); + +} // namespace BridgeNativeModulePerfLogger + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-perflogger.xcframework/ios-arm64_x86_64-simulator/Headers/reactperflogger/NativeModulePerfLogger.h b/Frameworks/React-perflogger.xcframework/ios-arm64_x86_64-simulator/Headers/reactperflogger/NativeModulePerfLogger.h new file mode 100644 index 0000000..54def97 --- /dev/null +++ b/Frameworks/React-perflogger.xcframework/ios-arm64_x86_64-simulator/Headers/reactperflogger/NativeModulePerfLogger.h @@ -0,0 +1,164 @@ +/* + * 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. + */ + +#pragma once +#include + +namespace facebook { +namespace react { + +/** + * A platform-agnostic interface to do performance logging on NativeModules and + * TuboModules. + */ +class NativeModulePerfLogger { + public: + virtual ~NativeModulePerfLogger() {} + + /** + * NativeModule Initialization. + * + * The initialization of two NativeModules can interleave. Therefore, + * performance markers should use the moduleName as a unique key. + */ + + /** + * On iOS: + * - NativeModule initialization is split into two phases, which sometimes + * have a pause in the middle. + * - TurboModule initialization happens all at once. + * + * On Android: + * - NativeModule and TurboModule initialization happens all at once. + * + * These markers are meant for iOS NativeModules: + * - moduleDataCreateStart: very beginning of first phase. + * - moduleDataCreateEnd: after RCTModuleData has been created. + */ + virtual void moduleDataCreateStart(const char *moduleName, int32_t id) = 0; + virtual void moduleDataCreateEnd(const char *moduleName, int32_t id) = 0; + + /** + * How long does it take to create the platform NativeModule object? + * - moduleCreateStart: start creating platform NativeModule + * - moduleCreateEnd: stop creating platform NativeModule + */ + virtual void moduleCreateStart(const char *moduleName, int32_t id) = 0; + virtual void moduleCreateCacheHit(const char *moduleName, int32_t id) = 0; + virtual void moduleCreateConstructStart( + const char *moduleName, + int32_t id) = 0; + virtual void moduleCreateConstructEnd(const char *moduleName, int32_t id) = 0; + virtual void moduleCreateSetUpStart(const char *moduleName, int32_t id) = 0; + virtual void moduleCreateSetUpEnd(const char *moduleName, int32_t id) = 0; + virtual void moduleCreateEnd(const char *moduleName, int32_t id) = 0; + virtual void moduleCreateFail(const char *moduleName, int32_t id) = 0; + + /** + * How long, after starting JS require, does it take to start creating the + * platform NativeModule? + * - moduleJSRequireBeginningStart: start of JS require + * - moduleJSRequireBeginningEnd: start creating platform NativeModule + */ + virtual void moduleJSRequireBeginningStart(const char *moduleName) = 0; + virtual void moduleJSRequireBeginningCacheHit(const char *moduleName) = 0; + virtual void moduleJSRequireBeginningEnd(const char *moduleName) = 0; + virtual void moduleJSRequireBeginningFail(const char *moduleName) = 0; + + /** + * How long does it take to return from the JS require after the platform + * NativeModule is created? + * - moduleJSRequireEndingStart: end creating platform NativeModule + * - moduleJSRequireEndingEnd: end of JS require + */ + virtual void moduleJSRequireEndingStart(const char *moduleName) = 0; + virtual void moduleJSRequireEndingEnd(const char *moduleName) = 0; + virtual void moduleJSRequireEndingFail(const char *moduleName) = 0; + + // Sync method calls + virtual void syncMethodCallStart( + const char *moduleName, + const char *methodName) = 0; + virtual void syncMethodCallArgConversionStart( + const char *moduleName, + const char *methodName) = 0; + virtual void syncMethodCallArgConversionEnd( + const char *moduleName, + const char *methodName) = 0; + virtual void syncMethodCallExecutionStart( + const char *moduleName, + const char *methodName) = 0; + virtual void syncMethodCallExecutionEnd( + const char *moduleName, + const char *methodName) = 0; + virtual void syncMethodCallReturnConversionStart( + const char *moduleName, + const char *methodName) = 0; + virtual void syncMethodCallReturnConversionEnd( + const char *moduleName, + const char *methodName) = 0; + virtual void syncMethodCallEnd( + const char *moduleName, + const char *methodName) = 0; + virtual void syncMethodCallFail( + const char *moduleName, + const char *methodName) = 0; + + // Async method calls + virtual void asyncMethodCallStart( + const char *moduleName, + const char *methodName) = 0; + virtual void asyncMethodCallArgConversionStart( + const char *moduleName, + const char *methodName) = 0; + virtual void asyncMethodCallArgConversionEnd( + const char *moduleName, + const char *methodName) = 0; + virtual void asyncMethodCallDispatch( + const char *moduleName, + const char *methodName) = 0; + virtual void asyncMethodCallEnd( + const char *moduleName, + const char *methodName) = 0; + virtual void asyncMethodCallFail( + const char *moduleName, + const char *methodName) = 0; + + /** + * In the NativeModule system, we batch async NativeModule method calls. + * When we execute a batch of NativeModule method calls, we convert the batch + * from a jsi::Value to folly::dynamic to std::vector. This marker + * documents that work. + */ + virtual void asyncMethodCallBatchPreprocessStart() = 0; + virtual void asyncMethodCallBatchPreprocessEnd(int batchSize) = 0; + + // Async method call execution + virtual void asyncMethodCallExecutionStart( + const char *moduleName, + const char *methodName, + int32_t id) = 0; + virtual void asyncMethodCallExecutionArgConversionStart( + const char *moduleName, + const char *methodName, + int32_t id) = 0; + virtual void asyncMethodCallExecutionArgConversionEnd( + const char *moduleName, + const char *methodName, + int32_t id) = 0; + virtual void asyncMethodCallExecutionEnd( + const char *moduleName, + const char *methodName, + int32_t id) = 0; + virtual void asyncMethodCallExecutionFail( + const char *moduleName, + const char *methodName, + int32_t id) = 0; +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/React-perflogger.xcframework/ios-arm64_x86_64-simulator/libReact-perflogger.a b/Frameworks/React-perflogger.xcframework/ios-arm64_x86_64-simulator/libReact-perflogger.a new file mode 100644 index 0000000..c0c35c8 Binary files /dev/null and b/Frameworks/React-perflogger.xcframework/ios-arm64_x86_64-simulator/libReact-perflogger.a differ diff --git a/Frameworks/ReactCommon.xcframework/Info.plist b/Frameworks/ReactCommon.xcframework/Info.plist new file mode 100644 index 0000000..bf75865 --- /dev/null +++ b/Frameworks/ReactCommon.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libReactCommon.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libReactCommon.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libReactCommon.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libReactCommon.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/ReactCommon.xcframework/ios-arm64/Headers/ReactCommon/LongLivedObject.h b/Frameworks/ReactCommon.xcframework/ios-arm64/Headers/ReactCommon/LongLivedObject.h new file mode 100644 index 0000000..5173b73 --- /dev/null +++ b/Frameworks/ReactCommon.xcframework/ios-arm64/Headers/ReactCommon/LongLivedObject.h @@ -0,0 +1,57 @@ +/* + * 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. + */ + +#pragma once + +#include +#include +#include + +namespace facebook { +namespace react { + +/** + * A simple wrapper class that can be registered to a collection that keep it + * alive for extended period of time. This object can be removed from the + * collection when needed. + * + * The subclass of this class must be created using std::make_shared(). + * After creation, add it to the `LongLivedObjectCollection`. + * When done with the object, call `allowRelease()` to allow the OS to release + * it. + */ +class LongLivedObject { + public: + virtual void allowRelease(); + + protected: + LongLivedObject(); + virtual ~LongLivedObject(); +}; + +/** + * A singleton, thread-safe, write-only collection for the `LongLivedObject`s. + */ +class LongLivedObjectCollection { + public: + static LongLivedObjectCollection &get(); + + LongLivedObjectCollection(); + LongLivedObjectCollection(LongLivedObjectCollection const &) = delete; + void operator=(LongLivedObjectCollection const &) = delete; + + void add(std::shared_ptr o) const; + void remove(const LongLivedObject *o) const; + void clear() const; + + private: + mutable std::unordered_set> collection_; + mutable std::mutex collectionMutex_; +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/ReactCommon.xcframework/ios-arm64/Headers/ReactCommon/RCTBlockGuard.h b/Frameworks/ReactCommon.xcframework/ios-arm64/Headers/ReactCommon/RCTBlockGuard.h new file mode 100644 index 0000000..38dbd2b --- /dev/null +++ b/Frameworks/ReactCommon.xcframework/ios-arm64/Headers/ReactCommon/RCTBlockGuard.h @@ -0,0 +1,24 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +/** + * RCTBlockGuard is designed to be used with obj-c blocks to assist with manual deallocation of C++ resources + * tied to lifetime of a block. If C++ resources needs to be manually released at the end of block or when the block + * is deallocated, place the clean up code inside constructor and make sure the instace of the class is references in + * the block. + */ +@interface RCTBlockGuard : NSObject + +- (instancetype)initWithCleanup:(void (^)(void))cleanup; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/ReactCommon.xcframework/ios-arm64/Headers/ReactCommon/RCTTurboModule.h b/Frameworks/ReactCommon.xcframework/ios-arm64/Headers/ReactCommon/RCTTurboModule.h new file mode 100644 index 0000000..1cc512c --- /dev/null +++ b/Frameworks/ReactCommon.xcframework/ios-arm64/Headers/ReactCommon/RCTTurboModule.h @@ -0,0 +1,121 @@ +/* + * 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. + */ + +#pragma once + +#import + +#import + +#import +#import +#import +#import +#import +#import +#import +#import + +#define RCT_IS_TURBO_MODULE_CLASS(klass) \ + ((RCTTurboModuleEnabled() && [(klass) conformsToProtocol:@protocol(RCTTurboModule)])) +#define RCT_IS_TURBO_MODULE_INSTANCE(module) RCT_IS_TURBO_MODULE_CLASS([(module) class]) + +namespace facebook { +namespace react { + +class Instance; + +typedef std::weak_ptr ( + ^RCTRetainJSCallback)(jsi::Function &&callback, jsi::Runtime &runtime, std::shared_ptr jsInvoker); + +/** + * ObjC++ specific TurboModule base class. + */ +class JSI_EXPORT ObjCTurboModule : public TurboModule { + public: + // TODO(T65603471): Should we unify this with a Fabric abstraction? + struct InitParams { + std::string moduleName; + id instance; + std::shared_ptr jsInvoker; + std::shared_ptr nativeInvoker; + bool isSyncModule; + RCTRetainJSCallback retainJSCallback; + }; + + ObjCTurboModule(const InitParams ¶ms); + + jsi::Value invokeObjCMethod( + jsi::Runtime &runtime, + TurboModuleMethodValueKind valueKind, + const std::string &methodName, + SEL selector, + const jsi::Value *args, + size_t count); + + id instance_; + std::shared_ptr nativeInvoker_; + + protected: + void setMethodArgConversionSelector(NSString *methodName, int argIndex, NSString *fnName); + + private: + // Does the NativeModule dispatch async methods to the JS thread? + const bool isSyncModule_; + + RCTRetainJSCallback retainJSCallback_; + + /** + * TODO(ramanpreet): + * Investigate an optimization that'll let us get rid of this NSMutableDictionary. + */ + NSMutableDictionary *methodArgConversionSelectors_; + NSDictionary *> *methodArgumentTypeNames_; + + bool isMethodSync(TurboModuleMethodValueKind returnType); + BOOL hasMethodArgConversionSelector(NSString *methodName, int argIndex); + SEL getMethodArgConversionSelector(NSString *methodName, int argIndex); + NSString *getArgumentTypeName(NSString *methodName, int argIndex); + NSInvocation *getMethodInvocation( + jsi::Runtime &runtime, + TurboModuleMethodValueKind returnType, + const char *methodName, + SEL selector, + const jsi::Value *args, + size_t count, + NSMutableArray *retainedObjectsForInvocation); + jsi::Value performMethodInvocation( + jsi::Runtime &runtime, + TurboModuleMethodValueKind returnType, + const char *methodName, + NSInvocation *inv, + NSMutableArray *retainedObjectsForInvocation); + + using PromiseInvocationBlock = void (^)(RCTPromiseResolveBlock resolveWrapper, RCTPromiseRejectBlock rejectWrapper); + jsi::Value createPromise(jsi::Runtime &runtime, std::string methodName, PromiseInvocationBlock invoke); +}; + +} // namespace react +} // namespace facebook + +@protocol RCTTurboModule +- (std::shared_ptr)getTurboModule: + (const facebook::react::ObjCTurboModule::InitParams &)params; +@end + +/** + * These methods are all implemented by RCTCxxBridge, which subclasses RCTBridge. Hence, they must only be used in + * contexts where the concrete class of an RCTBridge instance is RCTCxxBridge. This happens, for example, when + * [RCTCxxBridgeDelegate jsExecutorFactoryForBridge:(RCTBridge *)] is invoked by RCTCxxBridge. + * + * TODO: Consolidate this extension with the one in RCTSurfacePresenter. + */ +@interface RCTBridge (RCTTurboModule) +- (std::shared_ptr)jsCallInvoker; +- (std::shared_ptr)decorateNativeCallInvoker: + (std::shared_ptr)nativeInvoker; +@end diff --git a/Frameworks/ReactCommon.xcframework/ios-arm64/Headers/ReactCommon/RCTTurboModuleManager.h b/Frameworks/ReactCommon.xcframework/ios-arm64/Headers/ReactCommon/RCTTurboModuleManager.h new file mode 100644 index 0000000..2b9c473 --- /dev/null +++ b/Frameworks/ReactCommon.xcframework/ios-arm64/Headers/ReactCommon/RCTTurboModuleManager.h @@ -0,0 +1,51 @@ +/* + * 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. + */ + +#pragma once + +#import + +#import "RCTTurboModule.h" + +#import + +@protocol RCTTurboModuleManagerDelegate + +@optional +- (NSArray *)getEagerInitModuleNames; +- (NSArray *)getEagerInitMainQueueModuleNames; + +/** + * Given a module name, return its actual class. If not provided, basic ObjC class lookup is performed. + */ +- (Class)getModuleClassFromName:(const char *)name; + +/** + * Given a module class, provide an instance for it. If not provided, default initializer is used. + */ +- (id)getModuleInstanceFromClass:(Class)moduleClass; + +/** + * Create an instance of a TurboModule without relying on any ObjC++ module instance. + */ +- (std::shared_ptr)getTurboModule:(const std::string &)name + jsInvoker: + (std::shared_ptr)jsInvoker; + +@end + +@interface RCTTurboModuleManager : NSObject + +- (instancetype)initWithBridge:(RCTBridge *)bridge + delegate:(id)delegate + jsInvoker:(std::shared_ptr)jsInvoker; + +- (void)installJSBindingWithRuntimeExecutor:(facebook::react::RuntimeExecutor)runtimeExecutor; + +- (void)invalidate; + +@end diff --git a/Frameworks/ReactCommon.xcframework/ios-arm64/Headers/ReactCommon/TurboCxxModule.h b/Frameworks/ReactCommon.xcframework/ios-arm64/Headers/ReactCommon/TurboCxxModule.h new file mode 100644 index 0000000..e419553 --- /dev/null +++ b/Frameworks/ReactCommon.xcframework/ios-arm64/Headers/ReactCommon/TurboCxxModule.h @@ -0,0 +1,49 @@ +/* + * 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. + */ + +#pragma once + +#include +#include + +#include + +#include "TurboModule.h" + +namespace facebook { +namespace react { + +/** + * A helper class to convert the legacy CxxModule instance to a TurboModule + * instance. This should be used only for migration purpose (to TurboModule), + * since it's not very performant due to a lot of back-and-forth value + * conversions between folly::dynamic and jsi::Value. + */ +class JSI_EXPORT TurboCxxModule : public TurboModule { + public: + TurboCxxModule( + std::unique_ptr cxxModule, + std::shared_ptr jsInvoker); + + virtual facebook::jsi::Value get( + facebook::jsi::Runtime &runtime, + const facebook::jsi::PropNameID &propName) override; + + jsi::Value invokeMethod( + jsi::Runtime &runtime, + TurboModuleMethodValueKind valueKind, + const std::string &methodName, + const jsi::Value *args, + size_t count); + + private: + std::vector cxxMethods_; + std::unique_ptr cxxModule_; +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/ReactCommon.xcframework/ios-arm64/Headers/ReactCommon/TurboModule.h b/Frameworks/ReactCommon.xcframework/ios-arm64/Headers/ReactCommon/TurboModule.h new file mode 100644 index 0000000..0772986 --- /dev/null +++ b/Frameworks/ReactCommon.xcframework/ios-arm64/Headers/ReactCommon/TurboModule.h @@ -0,0 +1,71 @@ +/* + * 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. + */ + +#pragma once + +#include +#include + +#include + +#include + +namespace facebook { +namespace react { + +/** + * For now, support the same set of return types as existing impl. + * This can be improved to support richer typed objects. + */ +enum TurboModuleMethodValueKind { + VoidKind, + BooleanKind, + NumberKind, + StringKind, + ObjectKind, + ArrayKind, + FunctionKind, + PromiseKind, +}; + +/** + * Base HostObject class for every module to be exposed to JS + */ +class JSI_EXPORT TurboModule : public facebook::jsi::HostObject { + public: + TurboModule(const std::string &name, std::shared_ptr jsInvoker); + virtual ~TurboModule(); + + virtual facebook::jsi::Value get( + facebook::jsi::Runtime &runtime, + const facebook::jsi::PropNameID &propName) override; + + const std::string name_; + std::shared_ptr jsInvoker_; + + protected: + struct MethodMetadata { + size_t argCount; + facebook::jsi::Value (*invoker)( + facebook::jsi::Runtime &rt, + TurboModule &turboModule, + const facebook::jsi::Value *args, + size_t count); + }; + + std::unordered_map methodMap_; +}; + +/** + * An app/platform-specific provider function to get an instance of a module + * given a name. + */ +using TurboModuleProviderFunctionType = + std::function(const std::string &name)>; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/ReactCommon.xcframework/ios-arm64/Headers/ReactCommon/TurboModuleBinding.h b/Frameworks/ReactCommon.xcframework/ios-arm64/Headers/ReactCommon/TurboModuleBinding.h new file mode 100644 index 0000000..87679af --- /dev/null +++ b/Frameworks/ReactCommon.xcframework/ios-arm64/Headers/ReactCommon/TurboModuleBinding.h @@ -0,0 +1,66 @@ +/* + * 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. + */ + +#pragma once + +#include + +#include +#include +#include + +namespace facebook { +namespace react { + +class JSCallInvoker; + +/** + * Represents the JavaScript binding for the TurboModule system. + */ +class TurboModuleBinding { + public: + /* + * Installs TurboModuleBinding into JavaScript runtime. + * Thread synchronization must be enforced externally. + */ + static void install( + jsi::Runtime &runtime, + const TurboModuleProviderFunctionType &&moduleProvider); + static void install( + jsi::Runtime &runtime, + const TurboModuleProviderFunctionType &&moduleProvider, + std::shared_ptr longLivedObjectCollection); + + TurboModuleBinding(const TurboModuleProviderFunctionType &&moduleProvider); + TurboModuleBinding( + const TurboModuleProviderFunctionType &&moduleProvider, + std::shared_ptr longLivedObjectCollection); + virtual ~TurboModuleBinding(); + + /** + * Get an TurboModule instance for the given module name. + */ + std::shared_ptr getModule(const std::string &name); + + private: + /** + * A lookup function exposed to JS to get an instance of a TurboModule + * for the given name. + */ + jsi::Value jsProxy( + jsi::Runtime &runtime, + const jsi::Value &thisVal, + const jsi::Value *args, + size_t count); + + TurboModuleProviderFunctionType moduleProvider_; + std::shared_ptr longLivedObjectCollection_; + bool disableGlobalLongLivedObjectCollection_; +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/ReactCommon.xcframework/ios-arm64/Headers/ReactCommon/TurboModulePerfLogger.h b/Frameworks/ReactCommon.xcframework/ios-arm64/Headers/ReactCommon/TurboModulePerfLogger.h new file mode 100644 index 0000000..2f7fcf8 --- /dev/null +++ b/Frameworks/ReactCommon.xcframework/ios-arm64/Headers/ReactCommon/TurboModulePerfLogger.h @@ -0,0 +1,112 @@ +/* + * 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. + */ + +#pragma once + +#include +#include + +namespace facebook { +namespace react { +namespace TurboModulePerfLogger { +void enableLogging(std::unique_ptr &&logger); +void disableLogging(); + +void moduleDataCreateStart(const char *moduleName, int32_t id); +void moduleDataCreateEnd(const char *moduleName, int32_t id); + +/** + * Create NativeModule platform object + */ +void moduleCreateStart(const char *moduleName, int32_t id); +void moduleCreateCacheHit(const char *moduleName, int32_t id); +void moduleCreateConstructStart(const char *moduleName, int32_t id); +void moduleCreateConstructEnd(const char *moduleName, int32_t id); +void moduleCreateSetUpStart(const char *moduleName, int32_t id); +void moduleCreateSetUpEnd(const char *moduleName, int32_t id); +void moduleCreateEnd(const char *moduleName, int32_t id); +void moduleCreateFail(const char *moduleName, int32_t id); + +/** + * JS require beginning + */ +void moduleJSRequireBeginningStart(const char *moduleName); +void moduleJSRequireBeginningCacheHit(const char *moduleName); +void moduleJSRequireBeginningEnd(const char *moduleName); +void moduleJSRequireBeginningFail(const char *moduleName); + +/** + * JS require ending + */ +void moduleJSRequireEndingStart(const char *moduleName); +void moduleJSRequireEndingEnd(const char *moduleName); +void moduleJSRequireEndingFail(const char *moduleName); + +// Sync method calls +void syncMethodCallStart(const char *moduleName, const char *methodName); +void syncMethodCallArgConversionStart( + const char *moduleName, + const char *methodName); +void syncMethodCallArgConversionEnd( + const char *moduleName, + const char *methodName); +void syncMethodCallExecutionStart( + const char *moduleName, + const char *methodName); +void syncMethodCallExecutionEnd(const char *moduleName, const char *methodName); +void syncMethodCallReturnConversionStart( + const char *moduleName, + const char *methodName); +void syncMethodCallReturnConversionEnd( + const char *moduleName, + const char *methodName); +void syncMethodCallEnd(const char *moduleName, const char *methodName); +void syncMethodCallFail(const char *moduleName, const char *methodName); + +// Async method calls +void asyncMethodCallStart(const char *moduleName, const char *methodName); +void asyncMethodCallArgConversionStart( + const char *moduleName, + const char *methodName); +void asyncMethodCallArgConversionEnd( + const char *moduleName, + const char *methodName); +void asyncMethodCallDispatch(const char *moduleName, const char *methodName); +void asyncMethodCallEnd(const char *moduleName, const char *methodName); +void asyncMethodCallFail(const char *moduleName, const char *methodName); + +/** + * Pre-processing async method call batch + */ +void asyncMethodCallBatchPreprocessStart(); +void asyncMethodCallBatchPreprocessEnd(int batchSize); + +// Async method call execution +void asyncMethodCallExecutionStart( + const char *moduleName, + const char *methodName, + int32_t id); +void asyncMethodCallExecutionArgConversionStart( + const char *moduleName, + const char *methodName, + int32_t id); +void asyncMethodCallExecutionArgConversionEnd( + const char *moduleName, + const char *methodName, + int32_t id); +void asyncMethodCallExecutionEnd( + const char *moduleName, + const char *methodName, + int32_t id); +void asyncMethodCallExecutionFail( + const char *moduleName, + const char *methodName, + int32_t id); + +} // namespace TurboModulePerfLogger +} // namespace react +} // namespace facebook diff --git a/Frameworks/ReactCommon.xcframework/ios-arm64/Headers/ReactCommon/TurboModuleUtils.h b/Frameworks/ReactCommon.xcframework/ios-arm64/Headers/ReactCommon/TurboModuleUtils.h new file mode 100644 index 0000000..0dc0813 --- /dev/null +++ b/Frameworks/ReactCommon.xcframework/ios-arm64/Headers/ReactCommon/TurboModuleUtils.h @@ -0,0 +1,142 @@ +/* + * 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. + */ + +#pragma once + +#include +#include + +#include + +#include +#include + +using namespace facebook; + +namespace facebook { +namespace react { + +jsi::Object deepCopyJSIObject(jsi::Runtime &rt, const jsi::Object &obj); +jsi::Array deepCopyJSIArray(jsi::Runtime &rt, const jsi::Array &arr); + +struct Promise : public LongLivedObject { + Promise(jsi::Runtime &rt, jsi::Function resolve, jsi::Function reject); + + void resolve(const jsi::Value &result); + void reject(const std::string &error); + + jsi::Runtime &runtime_; + jsi::Function resolve_; + jsi::Function reject_; +}; + +using PromiseSetupFunctionType = + std::function)>; +jsi::Value createPromiseAsJSIValue( + jsi::Runtime &rt, + const PromiseSetupFunctionType func); + +// Helper for passing jsi::Function arg to other methods. +class CallbackWrapper : public LongLivedObject { + private: + CallbackWrapper( + jsi::Function &&callback, + jsi::Runtime &runtime, + std::shared_ptr jsInvoker) + : longLivedObjectCollection_(), + callback_(std::move(callback)), + runtime_(runtime), + jsInvoker_(std::move(jsInvoker)) {} + + CallbackWrapper( + std::shared_ptr longLivedObjectCollection, + jsi::Function &&callback, + jsi::Runtime &runtime, + std::shared_ptr jsInvoker) + : longLivedObjectCollection_(longLivedObjectCollection), + callback_(std::move(callback)), + runtime_(runtime), + jsInvoker_(std::move(jsInvoker)) {} + + // Use a weak_ptr to avoid a retain cycle: LongLivedObjectCollection owns all + // CallbackWrappers. So, CallbackWrapper cannot own its + // LongLivedObjectCollection. + std::weak_ptr longLivedObjectCollection_; + jsi::Function callback_; + jsi::Runtime &runtime_; + std::shared_ptr jsInvoker_; + + public: + static std::weak_ptr createWeak( + jsi::Function &&callback, + jsi::Runtime &runtime, + std::shared_ptr jsInvoker) { + auto wrapper = std::shared_ptr( + new CallbackWrapper(std::move(callback), runtime, jsInvoker)); + LongLivedObjectCollection::get().add(wrapper); + return wrapper; + } + + static std::weak_ptr createWeak( + std::shared_ptr longLivedObjectCollection, + jsi::Function &&callback, + jsi::Runtime &runtime, + std::shared_ptr jsInvoker) { + auto wrapper = std::shared_ptr(new CallbackWrapper( + longLivedObjectCollection, std::move(callback), runtime, jsInvoker)); + longLivedObjectCollection->add(wrapper); + return wrapper; + } + + // Delete the enclosed jsi::Function + void destroy() { + allowRelease(); + } + + jsi::Function &callback() { + return callback_; + } + + jsi::Runtime &runtime() { + return runtime_; + } + + CallInvoker &jsInvoker() { + return *(jsInvoker_); + } + + void allowRelease() override { + if (auto longLivedObjectCollection = longLivedObjectCollection_.lock()) { + if (longLivedObjectCollection != nullptr) { + longLivedObjectCollection->remove(this); + return; + } + } + LongLivedObject::allowRelease(); + } +}; + +class RAIICallbackWrapperDestroyer { + public: + RAIICallbackWrapperDestroyer(std::weak_ptr callbackWrapper) + : callbackWrapper_(callbackWrapper) {} + + ~RAIICallbackWrapperDestroyer() { + auto strongWrapper = callbackWrapper_.lock(); + if (!strongWrapper) { + return; + } + + strongWrapper->destroy(); + } + + private: + std::weak_ptr callbackWrapper_; +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/ReactCommon.xcframework/ios-arm64/libReactCommon.a b/Frameworks/ReactCommon.xcframework/ios-arm64/libReactCommon.a new file mode 100644 index 0000000..8c0f57a Binary files /dev/null and b/Frameworks/ReactCommon.xcframework/ios-arm64/libReactCommon.a differ diff --git a/Frameworks/ReactCommon.xcframework/ios-arm64_x86_64-simulator/Headers/ReactCommon/LongLivedObject.h b/Frameworks/ReactCommon.xcframework/ios-arm64_x86_64-simulator/Headers/ReactCommon/LongLivedObject.h new file mode 100644 index 0000000..5173b73 --- /dev/null +++ b/Frameworks/ReactCommon.xcframework/ios-arm64_x86_64-simulator/Headers/ReactCommon/LongLivedObject.h @@ -0,0 +1,57 @@ +/* + * 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. + */ + +#pragma once + +#include +#include +#include + +namespace facebook { +namespace react { + +/** + * A simple wrapper class that can be registered to a collection that keep it + * alive for extended period of time. This object can be removed from the + * collection when needed. + * + * The subclass of this class must be created using std::make_shared(). + * After creation, add it to the `LongLivedObjectCollection`. + * When done with the object, call `allowRelease()` to allow the OS to release + * it. + */ +class LongLivedObject { + public: + virtual void allowRelease(); + + protected: + LongLivedObject(); + virtual ~LongLivedObject(); +}; + +/** + * A singleton, thread-safe, write-only collection for the `LongLivedObject`s. + */ +class LongLivedObjectCollection { + public: + static LongLivedObjectCollection &get(); + + LongLivedObjectCollection(); + LongLivedObjectCollection(LongLivedObjectCollection const &) = delete; + void operator=(LongLivedObjectCollection const &) = delete; + + void add(std::shared_ptr o) const; + void remove(const LongLivedObject *o) const; + void clear() const; + + private: + mutable std::unordered_set> collection_; + mutable std::mutex collectionMutex_; +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/ReactCommon.xcframework/ios-arm64_x86_64-simulator/Headers/ReactCommon/RCTBlockGuard.h b/Frameworks/ReactCommon.xcframework/ios-arm64_x86_64-simulator/Headers/ReactCommon/RCTBlockGuard.h new file mode 100644 index 0000000..38dbd2b --- /dev/null +++ b/Frameworks/ReactCommon.xcframework/ios-arm64_x86_64-simulator/Headers/ReactCommon/RCTBlockGuard.h @@ -0,0 +1,24 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +/** + * RCTBlockGuard is designed to be used with obj-c blocks to assist with manual deallocation of C++ resources + * tied to lifetime of a block. If C++ resources needs to be manually released at the end of block or when the block + * is deallocated, place the clean up code inside constructor and make sure the instace of the class is references in + * the block. + */ +@interface RCTBlockGuard : NSObject + +- (instancetype)initWithCleanup:(void (^)(void))cleanup; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/ReactCommon.xcframework/ios-arm64_x86_64-simulator/Headers/ReactCommon/RCTTurboModule.h b/Frameworks/ReactCommon.xcframework/ios-arm64_x86_64-simulator/Headers/ReactCommon/RCTTurboModule.h new file mode 100644 index 0000000..1cc512c --- /dev/null +++ b/Frameworks/ReactCommon.xcframework/ios-arm64_x86_64-simulator/Headers/ReactCommon/RCTTurboModule.h @@ -0,0 +1,121 @@ +/* + * 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. + */ + +#pragma once + +#import + +#import + +#import +#import +#import +#import +#import +#import +#import +#import + +#define RCT_IS_TURBO_MODULE_CLASS(klass) \ + ((RCTTurboModuleEnabled() && [(klass) conformsToProtocol:@protocol(RCTTurboModule)])) +#define RCT_IS_TURBO_MODULE_INSTANCE(module) RCT_IS_TURBO_MODULE_CLASS([(module) class]) + +namespace facebook { +namespace react { + +class Instance; + +typedef std::weak_ptr ( + ^RCTRetainJSCallback)(jsi::Function &&callback, jsi::Runtime &runtime, std::shared_ptr jsInvoker); + +/** + * ObjC++ specific TurboModule base class. + */ +class JSI_EXPORT ObjCTurboModule : public TurboModule { + public: + // TODO(T65603471): Should we unify this with a Fabric abstraction? + struct InitParams { + std::string moduleName; + id instance; + std::shared_ptr jsInvoker; + std::shared_ptr nativeInvoker; + bool isSyncModule; + RCTRetainJSCallback retainJSCallback; + }; + + ObjCTurboModule(const InitParams ¶ms); + + jsi::Value invokeObjCMethod( + jsi::Runtime &runtime, + TurboModuleMethodValueKind valueKind, + const std::string &methodName, + SEL selector, + const jsi::Value *args, + size_t count); + + id instance_; + std::shared_ptr nativeInvoker_; + + protected: + void setMethodArgConversionSelector(NSString *methodName, int argIndex, NSString *fnName); + + private: + // Does the NativeModule dispatch async methods to the JS thread? + const bool isSyncModule_; + + RCTRetainJSCallback retainJSCallback_; + + /** + * TODO(ramanpreet): + * Investigate an optimization that'll let us get rid of this NSMutableDictionary. + */ + NSMutableDictionary *methodArgConversionSelectors_; + NSDictionary *> *methodArgumentTypeNames_; + + bool isMethodSync(TurboModuleMethodValueKind returnType); + BOOL hasMethodArgConversionSelector(NSString *methodName, int argIndex); + SEL getMethodArgConversionSelector(NSString *methodName, int argIndex); + NSString *getArgumentTypeName(NSString *methodName, int argIndex); + NSInvocation *getMethodInvocation( + jsi::Runtime &runtime, + TurboModuleMethodValueKind returnType, + const char *methodName, + SEL selector, + const jsi::Value *args, + size_t count, + NSMutableArray *retainedObjectsForInvocation); + jsi::Value performMethodInvocation( + jsi::Runtime &runtime, + TurboModuleMethodValueKind returnType, + const char *methodName, + NSInvocation *inv, + NSMutableArray *retainedObjectsForInvocation); + + using PromiseInvocationBlock = void (^)(RCTPromiseResolveBlock resolveWrapper, RCTPromiseRejectBlock rejectWrapper); + jsi::Value createPromise(jsi::Runtime &runtime, std::string methodName, PromiseInvocationBlock invoke); +}; + +} // namespace react +} // namespace facebook + +@protocol RCTTurboModule +- (std::shared_ptr)getTurboModule: + (const facebook::react::ObjCTurboModule::InitParams &)params; +@end + +/** + * These methods are all implemented by RCTCxxBridge, which subclasses RCTBridge. Hence, they must only be used in + * contexts where the concrete class of an RCTBridge instance is RCTCxxBridge. This happens, for example, when + * [RCTCxxBridgeDelegate jsExecutorFactoryForBridge:(RCTBridge *)] is invoked by RCTCxxBridge. + * + * TODO: Consolidate this extension with the one in RCTSurfacePresenter. + */ +@interface RCTBridge (RCTTurboModule) +- (std::shared_ptr)jsCallInvoker; +- (std::shared_ptr)decorateNativeCallInvoker: + (std::shared_ptr)nativeInvoker; +@end diff --git a/Frameworks/ReactCommon.xcframework/ios-arm64_x86_64-simulator/Headers/ReactCommon/RCTTurboModuleManager.h b/Frameworks/ReactCommon.xcframework/ios-arm64_x86_64-simulator/Headers/ReactCommon/RCTTurboModuleManager.h new file mode 100644 index 0000000..2b9c473 --- /dev/null +++ b/Frameworks/ReactCommon.xcframework/ios-arm64_x86_64-simulator/Headers/ReactCommon/RCTTurboModuleManager.h @@ -0,0 +1,51 @@ +/* + * 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. + */ + +#pragma once + +#import + +#import "RCTTurboModule.h" + +#import + +@protocol RCTTurboModuleManagerDelegate + +@optional +- (NSArray *)getEagerInitModuleNames; +- (NSArray *)getEagerInitMainQueueModuleNames; + +/** + * Given a module name, return its actual class. If not provided, basic ObjC class lookup is performed. + */ +- (Class)getModuleClassFromName:(const char *)name; + +/** + * Given a module class, provide an instance for it. If not provided, default initializer is used. + */ +- (id)getModuleInstanceFromClass:(Class)moduleClass; + +/** + * Create an instance of a TurboModule without relying on any ObjC++ module instance. + */ +- (std::shared_ptr)getTurboModule:(const std::string &)name + jsInvoker: + (std::shared_ptr)jsInvoker; + +@end + +@interface RCTTurboModuleManager : NSObject + +- (instancetype)initWithBridge:(RCTBridge *)bridge + delegate:(id)delegate + jsInvoker:(std::shared_ptr)jsInvoker; + +- (void)installJSBindingWithRuntimeExecutor:(facebook::react::RuntimeExecutor)runtimeExecutor; + +- (void)invalidate; + +@end diff --git a/Frameworks/ReactCommon.xcframework/ios-arm64_x86_64-simulator/Headers/ReactCommon/TurboCxxModule.h b/Frameworks/ReactCommon.xcframework/ios-arm64_x86_64-simulator/Headers/ReactCommon/TurboCxxModule.h new file mode 100644 index 0000000..e419553 --- /dev/null +++ b/Frameworks/ReactCommon.xcframework/ios-arm64_x86_64-simulator/Headers/ReactCommon/TurboCxxModule.h @@ -0,0 +1,49 @@ +/* + * 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. + */ + +#pragma once + +#include +#include + +#include + +#include "TurboModule.h" + +namespace facebook { +namespace react { + +/** + * A helper class to convert the legacy CxxModule instance to a TurboModule + * instance. This should be used only for migration purpose (to TurboModule), + * since it's not very performant due to a lot of back-and-forth value + * conversions between folly::dynamic and jsi::Value. + */ +class JSI_EXPORT TurboCxxModule : public TurboModule { + public: + TurboCxxModule( + std::unique_ptr cxxModule, + std::shared_ptr jsInvoker); + + virtual facebook::jsi::Value get( + facebook::jsi::Runtime &runtime, + const facebook::jsi::PropNameID &propName) override; + + jsi::Value invokeMethod( + jsi::Runtime &runtime, + TurboModuleMethodValueKind valueKind, + const std::string &methodName, + const jsi::Value *args, + size_t count); + + private: + std::vector cxxMethods_; + std::unique_ptr cxxModule_; +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/ReactCommon.xcframework/ios-arm64_x86_64-simulator/Headers/ReactCommon/TurboModule.h b/Frameworks/ReactCommon.xcframework/ios-arm64_x86_64-simulator/Headers/ReactCommon/TurboModule.h new file mode 100644 index 0000000..0772986 --- /dev/null +++ b/Frameworks/ReactCommon.xcframework/ios-arm64_x86_64-simulator/Headers/ReactCommon/TurboModule.h @@ -0,0 +1,71 @@ +/* + * 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. + */ + +#pragma once + +#include +#include + +#include + +#include + +namespace facebook { +namespace react { + +/** + * For now, support the same set of return types as existing impl. + * This can be improved to support richer typed objects. + */ +enum TurboModuleMethodValueKind { + VoidKind, + BooleanKind, + NumberKind, + StringKind, + ObjectKind, + ArrayKind, + FunctionKind, + PromiseKind, +}; + +/** + * Base HostObject class for every module to be exposed to JS + */ +class JSI_EXPORT TurboModule : public facebook::jsi::HostObject { + public: + TurboModule(const std::string &name, std::shared_ptr jsInvoker); + virtual ~TurboModule(); + + virtual facebook::jsi::Value get( + facebook::jsi::Runtime &runtime, + const facebook::jsi::PropNameID &propName) override; + + const std::string name_; + std::shared_ptr jsInvoker_; + + protected: + struct MethodMetadata { + size_t argCount; + facebook::jsi::Value (*invoker)( + facebook::jsi::Runtime &rt, + TurboModule &turboModule, + const facebook::jsi::Value *args, + size_t count); + }; + + std::unordered_map methodMap_; +}; + +/** + * An app/platform-specific provider function to get an instance of a module + * given a name. + */ +using TurboModuleProviderFunctionType = + std::function(const std::string &name)>; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/ReactCommon.xcframework/ios-arm64_x86_64-simulator/Headers/ReactCommon/TurboModuleBinding.h b/Frameworks/ReactCommon.xcframework/ios-arm64_x86_64-simulator/Headers/ReactCommon/TurboModuleBinding.h new file mode 100644 index 0000000..87679af --- /dev/null +++ b/Frameworks/ReactCommon.xcframework/ios-arm64_x86_64-simulator/Headers/ReactCommon/TurboModuleBinding.h @@ -0,0 +1,66 @@ +/* + * 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. + */ + +#pragma once + +#include + +#include +#include +#include + +namespace facebook { +namespace react { + +class JSCallInvoker; + +/** + * Represents the JavaScript binding for the TurboModule system. + */ +class TurboModuleBinding { + public: + /* + * Installs TurboModuleBinding into JavaScript runtime. + * Thread synchronization must be enforced externally. + */ + static void install( + jsi::Runtime &runtime, + const TurboModuleProviderFunctionType &&moduleProvider); + static void install( + jsi::Runtime &runtime, + const TurboModuleProviderFunctionType &&moduleProvider, + std::shared_ptr longLivedObjectCollection); + + TurboModuleBinding(const TurboModuleProviderFunctionType &&moduleProvider); + TurboModuleBinding( + const TurboModuleProviderFunctionType &&moduleProvider, + std::shared_ptr longLivedObjectCollection); + virtual ~TurboModuleBinding(); + + /** + * Get an TurboModule instance for the given module name. + */ + std::shared_ptr getModule(const std::string &name); + + private: + /** + * A lookup function exposed to JS to get an instance of a TurboModule + * for the given name. + */ + jsi::Value jsProxy( + jsi::Runtime &runtime, + const jsi::Value &thisVal, + const jsi::Value *args, + size_t count); + + TurboModuleProviderFunctionType moduleProvider_; + std::shared_ptr longLivedObjectCollection_; + bool disableGlobalLongLivedObjectCollection_; +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/ReactCommon.xcframework/ios-arm64_x86_64-simulator/Headers/ReactCommon/TurboModulePerfLogger.h b/Frameworks/ReactCommon.xcframework/ios-arm64_x86_64-simulator/Headers/ReactCommon/TurboModulePerfLogger.h new file mode 100644 index 0000000..2f7fcf8 --- /dev/null +++ b/Frameworks/ReactCommon.xcframework/ios-arm64_x86_64-simulator/Headers/ReactCommon/TurboModulePerfLogger.h @@ -0,0 +1,112 @@ +/* + * 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. + */ + +#pragma once + +#include +#include + +namespace facebook { +namespace react { +namespace TurboModulePerfLogger { +void enableLogging(std::unique_ptr &&logger); +void disableLogging(); + +void moduleDataCreateStart(const char *moduleName, int32_t id); +void moduleDataCreateEnd(const char *moduleName, int32_t id); + +/** + * Create NativeModule platform object + */ +void moduleCreateStart(const char *moduleName, int32_t id); +void moduleCreateCacheHit(const char *moduleName, int32_t id); +void moduleCreateConstructStart(const char *moduleName, int32_t id); +void moduleCreateConstructEnd(const char *moduleName, int32_t id); +void moduleCreateSetUpStart(const char *moduleName, int32_t id); +void moduleCreateSetUpEnd(const char *moduleName, int32_t id); +void moduleCreateEnd(const char *moduleName, int32_t id); +void moduleCreateFail(const char *moduleName, int32_t id); + +/** + * JS require beginning + */ +void moduleJSRequireBeginningStart(const char *moduleName); +void moduleJSRequireBeginningCacheHit(const char *moduleName); +void moduleJSRequireBeginningEnd(const char *moduleName); +void moduleJSRequireBeginningFail(const char *moduleName); + +/** + * JS require ending + */ +void moduleJSRequireEndingStart(const char *moduleName); +void moduleJSRequireEndingEnd(const char *moduleName); +void moduleJSRequireEndingFail(const char *moduleName); + +// Sync method calls +void syncMethodCallStart(const char *moduleName, const char *methodName); +void syncMethodCallArgConversionStart( + const char *moduleName, + const char *methodName); +void syncMethodCallArgConversionEnd( + const char *moduleName, + const char *methodName); +void syncMethodCallExecutionStart( + const char *moduleName, + const char *methodName); +void syncMethodCallExecutionEnd(const char *moduleName, const char *methodName); +void syncMethodCallReturnConversionStart( + const char *moduleName, + const char *methodName); +void syncMethodCallReturnConversionEnd( + const char *moduleName, + const char *methodName); +void syncMethodCallEnd(const char *moduleName, const char *methodName); +void syncMethodCallFail(const char *moduleName, const char *methodName); + +// Async method calls +void asyncMethodCallStart(const char *moduleName, const char *methodName); +void asyncMethodCallArgConversionStart( + const char *moduleName, + const char *methodName); +void asyncMethodCallArgConversionEnd( + const char *moduleName, + const char *methodName); +void asyncMethodCallDispatch(const char *moduleName, const char *methodName); +void asyncMethodCallEnd(const char *moduleName, const char *methodName); +void asyncMethodCallFail(const char *moduleName, const char *methodName); + +/** + * Pre-processing async method call batch + */ +void asyncMethodCallBatchPreprocessStart(); +void asyncMethodCallBatchPreprocessEnd(int batchSize); + +// Async method call execution +void asyncMethodCallExecutionStart( + const char *moduleName, + const char *methodName, + int32_t id); +void asyncMethodCallExecutionArgConversionStart( + const char *moduleName, + const char *methodName, + int32_t id); +void asyncMethodCallExecutionArgConversionEnd( + const char *moduleName, + const char *methodName, + int32_t id); +void asyncMethodCallExecutionEnd( + const char *moduleName, + const char *methodName, + int32_t id); +void asyncMethodCallExecutionFail( + const char *moduleName, + const char *methodName, + int32_t id); + +} // namespace TurboModulePerfLogger +} // namespace react +} // namespace facebook diff --git a/Frameworks/ReactCommon.xcframework/ios-arm64_x86_64-simulator/Headers/ReactCommon/TurboModuleUtils.h b/Frameworks/ReactCommon.xcframework/ios-arm64_x86_64-simulator/Headers/ReactCommon/TurboModuleUtils.h new file mode 100644 index 0000000..0dc0813 --- /dev/null +++ b/Frameworks/ReactCommon.xcframework/ios-arm64_x86_64-simulator/Headers/ReactCommon/TurboModuleUtils.h @@ -0,0 +1,142 @@ +/* + * 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. + */ + +#pragma once + +#include +#include + +#include + +#include +#include + +using namespace facebook; + +namespace facebook { +namespace react { + +jsi::Object deepCopyJSIObject(jsi::Runtime &rt, const jsi::Object &obj); +jsi::Array deepCopyJSIArray(jsi::Runtime &rt, const jsi::Array &arr); + +struct Promise : public LongLivedObject { + Promise(jsi::Runtime &rt, jsi::Function resolve, jsi::Function reject); + + void resolve(const jsi::Value &result); + void reject(const std::string &error); + + jsi::Runtime &runtime_; + jsi::Function resolve_; + jsi::Function reject_; +}; + +using PromiseSetupFunctionType = + std::function)>; +jsi::Value createPromiseAsJSIValue( + jsi::Runtime &rt, + const PromiseSetupFunctionType func); + +// Helper for passing jsi::Function arg to other methods. +class CallbackWrapper : public LongLivedObject { + private: + CallbackWrapper( + jsi::Function &&callback, + jsi::Runtime &runtime, + std::shared_ptr jsInvoker) + : longLivedObjectCollection_(), + callback_(std::move(callback)), + runtime_(runtime), + jsInvoker_(std::move(jsInvoker)) {} + + CallbackWrapper( + std::shared_ptr longLivedObjectCollection, + jsi::Function &&callback, + jsi::Runtime &runtime, + std::shared_ptr jsInvoker) + : longLivedObjectCollection_(longLivedObjectCollection), + callback_(std::move(callback)), + runtime_(runtime), + jsInvoker_(std::move(jsInvoker)) {} + + // Use a weak_ptr to avoid a retain cycle: LongLivedObjectCollection owns all + // CallbackWrappers. So, CallbackWrapper cannot own its + // LongLivedObjectCollection. + std::weak_ptr longLivedObjectCollection_; + jsi::Function callback_; + jsi::Runtime &runtime_; + std::shared_ptr jsInvoker_; + + public: + static std::weak_ptr createWeak( + jsi::Function &&callback, + jsi::Runtime &runtime, + std::shared_ptr jsInvoker) { + auto wrapper = std::shared_ptr( + new CallbackWrapper(std::move(callback), runtime, jsInvoker)); + LongLivedObjectCollection::get().add(wrapper); + return wrapper; + } + + static std::weak_ptr createWeak( + std::shared_ptr longLivedObjectCollection, + jsi::Function &&callback, + jsi::Runtime &runtime, + std::shared_ptr jsInvoker) { + auto wrapper = std::shared_ptr(new CallbackWrapper( + longLivedObjectCollection, std::move(callback), runtime, jsInvoker)); + longLivedObjectCollection->add(wrapper); + return wrapper; + } + + // Delete the enclosed jsi::Function + void destroy() { + allowRelease(); + } + + jsi::Function &callback() { + return callback_; + } + + jsi::Runtime &runtime() { + return runtime_; + } + + CallInvoker &jsInvoker() { + return *(jsInvoker_); + } + + void allowRelease() override { + if (auto longLivedObjectCollection = longLivedObjectCollection_.lock()) { + if (longLivedObjectCollection != nullptr) { + longLivedObjectCollection->remove(this); + return; + } + } + LongLivedObject::allowRelease(); + } +}; + +class RAIICallbackWrapperDestroyer { + public: + RAIICallbackWrapperDestroyer(std::weak_ptr callbackWrapper) + : callbackWrapper_(callbackWrapper) {} + + ~RAIICallbackWrapperDestroyer() { + auto strongWrapper = callbackWrapper_.lock(); + if (!strongWrapper) { + return; + } + + strongWrapper->destroy(); + } + + private: + std::weak_ptr callbackWrapper_; +}; + +} // namespace react +} // namespace facebook diff --git a/Frameworks/ReactCommon.xcframework/ios-arm64_x86_64-simulator/libReactCommon.a b/Frameworks/ReactCommon.xcframework/ios-arm64_x86_64-simulator/libReactCommon.a new file mode 100644 index 0000000..383ac6c Binary files /dev/null and b/Frameworks/ReactCommon.xcframework/ios-arm64_x86_64-simulator/libReactCommon.a differ diff --git a/Frameworks/ReactNativeART.xcframework/Info.plist b/Frameworks/ReactNativeART.xcframework/Info.plist new file mode 100644 index 0000000..80becfc --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libReactNativeART.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libReactNativeART.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libReactNativeART.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libReactNativeART.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTBrush.h b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTBrush.h new file mode 100644 index 0000000..f6e39e8 --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTBrush.h @@ -0,0 +1,33 @@ +/** + * 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 +#import + +@interface ARTBrush : NSObject + +/* @abstract */ +- (instancetype)initWithArray:(NSArray *)data NS_DESIGNATED_INITIALIZER; + +/** + * For certain brushes we can fast path a combined fill and stroke. + * For those brushes we override applyFillColor which sets the fill + * color to be used by those batch paints. Those return YES. + * We can't batch gradient painting in CoreGraphics, so those will + * return NO and paint gets called instead. + * @abstract + */ +- (BOOL)applyFillColor:(CGContextRef)context; + +/** + * paint fills the context with a brush. The context is assumed to + * be clipped. + * @abstract + */ +- (void)paint:(CGContextRef)context; + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTCGFloatArray.h b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTCGFloatArray.h new file mode 100644 index 0000000..b26bcb1 --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTCGFloatArray.h @@ -0,0 +1,18 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +// A little helper to make sure we have the right memory allocation ready for use. +// We assume that we will only this in one place so no reference counting is necessary. +// Needs to be freed when deallocated. + +// This is fragile since this relies on these values not getting reused. Consider +// wrapping these in an Obj-C class or some ARC hackery to get refcounting. + +typedef struct { + size_t count; + CGFloat *array; +} ARTCGFloatArray; diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTContainer.h b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTContainer.h new file mode 100644 index 0000000..5439d9f --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTContainer.h @@ -0,0 +1,16 @@ +/** + * 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 + +@protocol ARTContainer + +// This is used as a hook for child to mark it's parent as dirty. +// This bubbles up to the root which gets marked as dirty. +- (void)invalidate; + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTGroup.h b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTGroup.h new file mode 100644 index 0000000..31edddd --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTGroup.h @@ -0,0 +1,17 @@ +/** + * 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 + +#import "ARTContainer.h" +#import "ARTNode.h" + +@interface ARTGroup : ARTNode + +@property (nonatomic, assign) CGRect clipping; + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTGroupManager.h b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTGroupManager.h new file mode 100644 index 0000000..f518cf0 --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTGroupManager.h @@ -0,0 +1,12 @@ +/** + * 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 "ARTNodeManager.h" + +@interface ARTGroupManager : ARTNodeManager + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTLinearGradient.h b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTLinearGradient.h new file mode 100644 index 0000000..d289b19 --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTLinearGradient.h @@ -0,0 +1,12 @@ +/** + * 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 "ARTBrush.h" + +@interface ARTLinearGradient : ARTBrush + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTNode.h b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTNode.h new file mode 100644 index 0000000..8c6a7a6 --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTNode.h @@ -0,0 +1,31 @@ +/** + * 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 +#import "ARTShadow.h" +/** + * ART nodes are implemented as empty UIViews but this is just an implementation detail to fit + * into the existing view management. They should also be shadow views and painted on a background + * thread. + */ + +@interface ARTNode : UIView + +@property (nonatomic, assign) CGFloat opacity; +@property (nonatomic, assign) ARTShadow shadow; + +- (void)invalidate; +- (void)renderTo:(CGContextRef)context; + +/** + * renderTo will take opacity into account and draw renderLayerTo off-screen if there is opacity + * specified, then composite that onto the context. renderLayerTo always draws at opacity=1. + * @abstract + */ +- (void)renderLayerTo:(CGContextRef)context; + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTNodeManager.h b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTNodeManager.h new file mode 100644 index 0000000..84ef8fb --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTNodeManager.h @@ -0,0 +1,16 @@ +/** + * 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 + +@class ARTNode; + +@interface ARTNodeManager : RCTViewManager + +- (ARTNode *)node; + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTPattern.h b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTPattern.h new file mode 100644 index 0000000..11fa935 --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTPattern.h @@ -0,0 +1,12 @@ +/** + * 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 "ARTBrush.h" + +@interface ARTPattern : ARTBrush + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTRadialGradient.h b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTRadialGradient.h new file mode 100644 index 0000000..98bec02 --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTRadialGradient.h @@ -0,0 +1,12 @@ +/** + * 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 "ARTBrush.h" + +@interface ARTRadialGradient : ARTBrush + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTRenderable.h b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTRenderable.h new file mode 100644 index 0000000..077d47e --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTRenderable.h @@ -0,0 +1,23 @@ +/** + * 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 + +#import "ARTBrush.h" +#import "ARTCGFloatArray.h" +#import "ARTNode.h" + +@interface ARTRenderable : ARTNode + +@property (nonatomic, strong) ARTBrush *fill; +@property (nonatomic, assign) CGColorRef stroke; +@property (nonatomic, assign) CGFloat strokeWidth; +@property (nonatomic, assign) CGLineCap strokeCap; +@property (nonatomic, assign) CGLineJoin strokeJoin; +@property (nonatomic, assign) ARTCGFloatArray strokeDash; + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTRenderableManager.h b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTRenderableManager.h new file mode 100644 index 0000000..781ed32 --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTRenderableManager.h @@ -0,0 +1,15 @@ +/** + * 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 "ARTNodeManager.h" +#import "ARTRenderable.h" + +@interface ARTRenderableManager : ARTNodeManager + +- (ARTRenderable *)node; + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTShadow.h b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTShadow.h new file mode 100644 index 0000000..2aa5b48 --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTShadow.h @@ -0,0 +1,12 @@ +/** + * 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. + */ + +typedef struct { + CGSize offset; + CGFloat blur; + UIColor* color; +} ARTShadow; diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTShape.h b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTShape.h new file mode 100644 index 0000000..1a1fd42 --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTShape.h @@ -0,0 +1,16 @@ +/** + * 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 + +#import "ARTRenderable.h" + +@interface ARTShape : ARTRenderable + +@property (nonatomic, assign) CGPathRef d; + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTShapeManager.h b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTShapeManager.h new file mode 100644 index 0000000..cc514b1 --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTShapeManager.h @@ -0,0 +1,12 @@ +/** + * 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 "ARTRenderableManager.h" + +@interface ARTShapeManager : ARTRenderableManager + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTSolidColor.h b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTSolidColor.h new file mode 100644 index 0000000..9880cfd --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTSolidColor.h @@ -0,0 +1,12 @@ +/** + * 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 "ARTBrush.h" + +@interface ARTSolidColor : ARTBrush + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTSurfaceView.h b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTSurfaceView.h new file mode 100644 index 0000000..34016b9 --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTSurfaceView.h @@ -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 + +#import "ARTContainer.h" + +@interface ARTSurfaceView : UIView + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTSurfaceViewManager.h b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTSurfaceViewManager.h new file mode 100644 index 0000000..36d5949 --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTSurfaceViewManager.h @@ -0,0 +1,12 @@ +/** + * 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 + +@interface ARTSurfaceViewManager : RCTViewManager + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTText.h b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTText.h new file mode 100644 index 0000000..1431fc5 --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTText.h @@ -0,0 +1,18 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +#import "ARTRenderable.h" +#import "ARTTextFrame.h" + +@interface ARTText : ARTRenderable + +@property (nonatomic, assign) CTTextAlignment alignment; +@property (nonatomic, assign) ARTTextFrame textFrame; + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTTextFrame.h b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTTextFrame.h new file mode 100644 index 0000000..00e61ce --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTTextFrame.h @@ -0,0 +1,23 @@ +/** + * 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 + +// A little helper to make sure we have a set of lines including width ready for use. +// We assume that we will only this in one place so no reference counting is necessary. +// Needs to be freed when deallocated. + +// This is fragile since this relies on these values not getting reused. Consider +// wrapping these in an Obj-C class or some ARC hackery to get refcounting. + +typedef struct { + size_t count; + CGFloat baseLine; // Distance from the origin to the base line of the first line + CGFloat lineHeight; // Distance between lines + CTLineRef *lines; + CGFloat *widths; // Width of each line +} ARTTextFrame; diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTTextManager.h b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTTextManager.h new file mode 100644 index 0000000..343e669 --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/ARTTextManager.h @@ -0,0 +1,12 @@ +/** + * 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 "ARTRenderableManager.h" + +@interface ARTTextManager : ARTRenderableManager + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/RCTConvert+ART.h b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/RCTConvert+ART.h new file mode 100644 index 0000000..74b35df --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64/Headers/RCTConvert+ART.h @@ -0,0 +1,31 @@ +/** + * 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 + +#import + +#import "ARTBrush.h" +#import "ARTShadow.h" +#import "ARTCGFloatArray.h" +#import "ARTTextFrame.h" + +@interface RCTConvert (ART) + ++ (CGPathRef)CGPath:(id)json CF_RETURNS_NOT_RETAINED; ++ (CTTextAlignment)CTTextAlignment:(id)json; ++ (ARTTextFrame)ARTTextFrame:(id)json; ++ (ARTCGFloatArray)ARTCGFloatArray:(id)json; ++ (ARTBrush *)ARTBrush:(id)json; ++ (ARTShadow)ARTShadow:(id)json; + ++ (CGPoint)CGPoint:(id)json offset:(NSUInteger)offset; ++ (CGRect)CGRect:(id)json offset:(NSUInteger)offset; ++ (CGColorRef)CGColor:(id)json offset:(NSUInteger)offset CF_RETURNS_NOT_RETAINED; ++ (CGGradientRef)CGGradient:(id)json offset:(NSUInteger)offset CF_RETURNS_NOT_RETAINED; + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64/libReactNativeART.a b/Frameworks/ReactNativeART.xcframework/ios-arm64/libReactNativeART.a new file mode 100644 index 0000000..8c490b8 Binary files /dev/null and b/Frameworks/ReactNativeART.xcframework/ios-arm64/libReactNativeART.a differ diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTBrush.h b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTBrush.h new file mode 100644 index 0000000..f6e39e8 --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTBrush.h @@ -0,0 +1,33 @@ +/** + * 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 +#import + +@interface ARTBrush : NSObject + +/* @abstract */ +- (instancetype)initWithArray:(NSArray *)data NS_DESIGNATED_INITIALIZER; + +/** + * For certain brushes we can fast path a combined fill and stroke. + * For those brushes we override applyFillColor which sets the fill + * color to be used by those batch paints. Those return YES. + * We can't batch gradient painting in CoreGraphics, so those will + * return NO and paint gets called instead. + * @abstract + */ +- (BOOL)applyFillColor:(CGContextRef)context; + +/** + * paint fills the context with a brush. The context is assumed to + * be clipped. + * @abstract + */ +- (void)paint:(CGContextRef)context; + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTCGFloatArray.h b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTCGFloatArray.h new file mode 100644 index 0000000..b26bcb1 --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTCGFloatArray.h @@ -0,0 +1,18 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +// A little helper to make sure we have the right memory allocation ready for use. +// We assume that we will only this in one place so no reference counting is necessary. +// Needs to be freed when deallocated. + +// This is fragile since this relies on these values not getting reused. Consider +// wrapping these in an Obj-C class or some ARC hackery to get refcounting. + +typedef struct { + size_t count; + CGFloat *array; +} ARTCGFloatArray; diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTContainer.h b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTContainer.h new file mode 100644 index 0000000..5439d9f --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTContainer.h @@ -0,0 +1,16 @@ +/** + * 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 + +@protocol ARTContainer + +// This is used as a hook for child to mark it's parent as dirty. +// This bubbles up to the root which gets marked as dirty. +- (void)invalidate; + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTGroup.h b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTGroup.h new file mode 100644 index 0000000..31edddd --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTGroup.h @@ -0,0 +1,17 @@ +/** + * 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 + +#import "ARTContainer.h" +#import "ARTNode.h" + +@interface ARTGroup : ARTNode + +@property (nonatomic, assign) CGRect clipping; + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTGroupManager.h b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTGroupManager.h new file mode 100644 index 0000000..f518cf0 --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTGroupManager.h @@ -0,0 +1,12 @@ +/** + * 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 "ARTNodeManager.h" + +@interface ARTGroupManager : ARTNodeManager + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTLinearGradient.h b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTLinearGradient.h new file mode 100644 index 0000000..d289b19 --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTLinearGradient.h @@ -0,0 +1,12 @@ +/** + * 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 "ARTBrush.h" + +@interface ARTLinearGradient : ARTBrush + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTNode.h b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTNode.h new file mode 100644 index 0000000..8c6a7a6 --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTNode.h @@ -0,0 +1,31 @@ +/** + * 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 +#import "ARTShadow.h" +/** + * ART nodes are implemented as empty UIViews but this is just an implementation detail to fit + * into the existing view management. They should also be shadow views and painted on a background + * thread. + */ + +@interface ARTNode : UIView + +@property (nonatomic, assign) CGFloat opacity; +@property (nonatomic, assign) ARTShadow shadow; + +- (void)invalidate; +- (void)renderTo:(CGContextRef)context; + +/** + * renderTo will take opacity into account and draw renderLayerTo off-screen if there is opacity + * specified, then composite that onto the context. renderLayerTo always draws at opacity=1. + * @abstract + */ +- (void)renderLayerTo:(CGContextRef)context; + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTNodeManager.h b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTNodeManager.h new file mode 100644 index 0000000..84ef8fb --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTNodeManager.h @@ -0,0 +1,16 @@ +/** + * 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 + +@class ARTNode; + +@interface ARTNodeManager : RCTViewManager + +- (ARTNode *)node; + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTPattern.h b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTPattern.h new file mode 100644 index 0000000..11fa935 --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTPattern.h @@ -0,0 +1,12 @@ +/** + * 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 "ARTBrush.h" + +@interface ARTPattern : ARTBrush + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTRadialGradient.h b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTRadialGradient.h new file mode 100644 index 0000000..98bec02 --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTRadialGradient.h @@ -0,0 +1,12 @@ +/** + * 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 "ARTBrush.h" + +@interface ARTRadialGradient : ARTBrush + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTRenderable.h b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTRenderable.h new file mode 100644 index 0000000..077d47e --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTRenderable.h @@ -0,0 +1,23 @@ +/** + * 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 + +#import "ARTBrush.h" +#import "ARTCGFloatArray.h" +#import "ARTNode.h" + +@interface ARTRenderable : ARTNode + +@property (nonatomic, strong) ARTBrush *fill; +@property (nonatomic, assign) CGColorRef stroke; +@property (nonatomic, assign) CGFloat strokeWidth; +@property (nonatomic, assign) CGLineCap strokeCap; +@property (nonatomic, assign) CGLineJoin strokeJoin; +@property (nonatomic, assign) ARTCGFloatArray strokeDash; + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTRenderableManager.h b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTRenderableManager.h new file mode 100644 index 0000000..781ed32 --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTRenderableManager.h @@ -0,0 +1,15 @@ +/** + * 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 "ARTNodeManager.h" +#import "ARTRenderable.h" + +@interface ARTRenderableManager : ARTNodeManager + +- (ARTRenderable *)node; + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTShadow.h b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTShadow.h new file mode 100644 index 0000000..2aa5b48 --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTShadow.h @@ -0,0 +1,12 @@ +/** + * 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. + */ + +typedef struct { + CGSize offset; + CGFloat blur; + UIColor* color; +} ARTShadow; diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTShape.h b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTShape.h new file mode 100644 index 0000000..1a1fd42 --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTShape.h @@ -0,0 +1,16 @@ +/** + * 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 + +#import "ARTRenderable.h" + +@interface ARTShape : ARTRenderable + +@property (nonatomic, assign) CGPathRef d; + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTShapeManager.h b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTShapeManager.h new file mode 100644 index 0000000..cc514b1 --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTShapeManager.h @@ -0,0 +1,12 @@ +/** + * 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 "ARTRenderableManager.h" + +@interface ARTShapeManager : ARTRenderableManager + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTSolidColor.h b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTSolidColor.h new file mode 100644 index 0000000..9880cfd --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTSolidColor.h @@ -0,0 +1,12 @@ +/** + * 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 "ARTBrush.h" + +@interface ARTSolidColor : ARTBrush + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTSurfaceView.h b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTSurfaceView.h new file mode 100644 index 0000000..34016b9 --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTSurfaceView.h @@ -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 + +#import "ARTContainer.h" + +@interface ARTSurfaceView : UIView + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTSurfaceViewManager.h b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTSurfaceViewManager.h new file mode 100644 index 0000000..36d5949 --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTSurfaceViewManager.h @@ -0,0 +1,12 @@ +/** + * 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 + +@interface ARTSurfaceViewManager : RCTViewManager + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTText.h b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTText.h new file mode 100644 index 0000000..1431fc5 --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTText.h @@ -0,0 +1,18 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +#import "ARTRenderable.h" +#import "ARTTextFrame.h" + +@interface ARTText : ARTRenderable + +@property (nonatomic, assign) CTTextAlignment alignment; +@property (nonatomic, assign) ARTTextFrame textFrame; + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTTextFrame.h b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTTextFrame.h new file mode 100644 index 0000000..00e61ce --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTTextFrame.h @@ -0,0 +1,23 @@ +/** + * 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 + +// A little helper to make sure we have a set of lines including width ready for use. +// We assume that we will only this in one place so no reference counting is necessary. +// Needs to be freed when deallocated. + +// This is fragile since this relies on these values not getting reused. Consider +// wrapping these in an Obj-C class or some ARC hackery to get refcounting. + +typedef struct { + size_t count; + CGFloat baseLine; // Distance from the origin to the base line of the first line + CGFloat lineHeight; // Distance between lines + CTLineRef *lines; + CGFloat *widths; // Width of each line +} ARTTextFrame; diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTTextManager.h b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTTextManager.h new file mode 100644 index 0000000..343e669 --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/ARTTextManager.h @@ -0,0 +1,12 @@ +/** + * 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 "ARTRenderableManager.h" + +@interface ARTTextManager : ARTRenderableManager + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/RCTConvert+ART.h b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/RCTConvert+ART.h new file mode 100644 index 0000000..74b35df --- /dev/null +++ b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/Headers/RCTConvert+ART.h @@ -0,0 +1,31 @@ +/** + * 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 + +#import + +#import "ARTBrush.h" +#import "ARTShadow.h" +#import "ARTCGFloatArray.h" +#import "ARTTextFrame.h" + +@interface RCTConvert (ART) + ++ (CGPathRef)CGPath:(id)json CF_RETURNS_NOT_RETAINED; ++ (CTTextAlignment)CTTextAlignment:(id)json; ++ (ARTTextFrame)ARTTextFrame:(id)json; ++ (ARTCGFloatArray)ARTCGFloatArray:(id)json; ++ (ARTBrush *)ARTBrush:(id)json; ++ (ARTShadow)ARTShadow:(id)json; + ++ (CGPoint)CGPoint:(id)json offset:(NSUInteger)offset; ++ (CGRect)CGRect:(id)json offset:(NSUInteger)offset; ++ (CGColorRef)CGColor:(id)json offset:(NSUInteger)offset CF_RETURNS_NOT_RETAINED; ++ (CGGradientRef)CGGradient:(id)json offset:(NSUInteger)offset CF_RETURNS_NOT_RETAINED; + +@end diff --git a/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/libReactNativeART.a b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/libReactNativeART.a new file mode 100644 index 0000000..44cfa0b Binary files /dev/null and b/Frameworks/ReactNativeART.xcframework/ios-arm64_x86_64-simulator/libReactNativeART.a differ diff --git a/Frameworks/ReactNativeDarkMode.xcframework/Info.plist b/Frameworks/ReactNativeDarkMode.xcframework/Info.plist new file mode 100644 index 0000000..ee8eba8 --- /dev/null +++ b/Frameworks/ReactNativeDarkMode.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libReactNativeDarkMode.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libReactNativeDarkMode.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libReactNativeDarkMode.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libReactNativeDarkMode.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/ReactNativeDarkMode.xcframework/ios-arm64/Headers/RNDarkMode.h b/Frameworks/ReactNativeDarkMode.xcframework/ios-arm64/Headers/RNDarkMode.h new file mode 100644 index 0000000..3f610a7 --- /dev/null +++ b/Frameworks/ReactNativeDarkMode.xcframework/ios-arm64/Headers/RNDarkMode.h @@ -0,0 +1,10 @@ +#import +#import + +#import "UIScreen+RNDarkModeTraitChangeListener.h" + +@interface RNDarkMode : RCTEventEmitter + +- (void)currentModeChanged:(NSString *)newMode; + +@end diff --git a/Frameworks/ReactNativeDarkMode.xcframework/ios-arm64/Headers/UIScreen+RNDarkModeTraitChangeListener.h b/Frameworks/ReactNativeDarkMode.xcframework/ios-arm64/Headers/UIScreen+RNDarkModeTraitChangeListener.h new file mode 100644 index 0000000..b13cc62 --- /dev/null +++ b/Frameworks/ReactNativeDarkMode.xcframework/ios-arm64/Headers/UIScreen+RNDarkModeTraitChangeListener.h @@ -0,0 +1,17 @@ +#import + +#import "RNDarkMode.h" + +typedef NS_ENUM(NSInteger, RNDarkModeMode) { + RNDarkModeModeLight, + RNDarkModeModeDark, +}; + +@class RNDarkMode; + +@interface UIScreen (RNDarkModeTraitChangeListener) + ++ (NSString *)getCurrentMode; ++ (void)setCurrentManager:(RNDarkMode *)manager; + +@end diff --git a/Frameworks/ReactNativeDarkMode.xcframework/ios-arm64/libReactNativeDarkMode.a b/Frameworks/ReactNativeDarkMode.xcframework/ios-arm64/libReactNativeDarkMode.a new file mode 100644 index 0000000..3edc3c2 Binary files /dev/null and b/Frameworks/ReactNativeDarkMode.xcframework/ios-arm64/libReactNativeDarkMode.a differ diff --git a/Frameworks/ReactNativeDarkMode.xcframework/ios-arm64_x86_64-simulator/Headers/RNDarkMode.h b/Frameworks/ReactNativeDarkMode.xcframework/ios-arm64_x86_64-simulator/Headers/RNDarkMode.h new file mode 100644 index 0000000..3f610a7 --- /dev/null +++ b/Frameworks/ReactNativeDarkMode.xcframework/ios-arm64_x86_64-simulator/Headers/RNDarkMode.h @@ -0,0 +1,10 @@ +#import +#import + +#import "UIScreen+RNDarkModeTraitChangeListener.h" + +@interface RNDarkMode : RCTEventEmitter + +- (void)currentModeChanged:(NSString *)newMode; + +@end diff --git a/Frameworks/ReactNativeDarkMode.xcframework/ios-arm64_x86_64-simulator/Headers/UIScreen+RNDarkModeTraitChangeListener.h b/Frameworks/ReactNativeDarkMode.xcframework/ios-arm64_x86_64-simulator/Headers/UIScreen+RNDarkModeTraitChangeListener.h new file mode 100644 index 0000000..b13cc62 --- /dev/null +++ b/Frameworks/ReactNativeDarkMode.xcframework/ios-arm64_x86_64-simulator/Headers/UIScreen+RNDarkModeTraitChangeListener.h @@ -0,0 +1,17 @@ +#import + +#import "RNDarkMode.h" + +typedef NS_ENUM(NSInteger, RNDarkModeMode) { + RNDarkModeModeLight, + RNDarkModeModeDark, +}; + +@class RNDarkMode; + +@interface UIScreen (RNDarkModeTraitChangeListener) + ++ (NSString *)getCurrentMode; ++ (void)setCurrentManager:(RNDarkMode *)manager; + +@end diff --git a/Frameworks/ReactNativeDarkMode.xcframework/ios-arm64_x86_64-simulator/libReactNativeDarkMode.a b/Frameworks/ReactNativeDarkMode.xcframework/ios-arm64_x86_64-simulator/libReactNativeDarkMode.a new file mode 100644 index 0000000..0d44821 Binary files /dev/null and b/Frameworks/ReactNativeDarkMode.xcframework/ios-arm64_x86_64-simulator/libReactNativeDarkMode.a differ diff --git a/Frameworks/TextToSpeech.xcframework/Info.plist b/Frameworks/TextToSpeech.xcframework/Info.plist new file mode 100644 index 0000000..77539de --- /dev/null +++ b/Frameworks/TextToSpeech.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libTextToSpeech.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libTextToSpeech.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + libTextToSpeech.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libTextToSpeech.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/TextToSpeech.xcframework/ios-arm64/Headers/TextToSpeech.h b/Frameworks/TextToSpeech.xcframework/ios-arm64/Headers/TextToSpeech.h new file mode 100644 index 0000000..25bd220 --- /dev/null +++ b/Frameworks/TextToSpeech.xcframework/ios-arm64/Headers/TextToSpeech.h @@ -0,0 +1,20 @@ +// +// TextToSpeech.h +// TextToSpeech +// +// Created by Anton Krasovsky on 27/09/2016. +// Copyright © 2016 Anton Krasovsky. All rights reserved. +// + +#import +#import + +@import AVFoundation; + +@interface TextToSpeech : RCTEventEmitter +@property (nonatomic, strong) AVSpeechSynthesizer *synthesizer; +@property (nonatomic, strong) AVSpeechSynthesisVoice *defaultVoice; +@property (nonatomic) float defaultRate; +@property (nonatomic) float defaultPitch; +@property (nonatomic) bool ducking; +@end diff --git a/Frameworks/TextToSpeech.xcframework/ios-arm64/libTextToSpeech.a b/Frameworks/TextToSpeech.xcframework/ios-arm64/libTextToSpeech.a new file mode 100644 index 0000000..da34697 Binary files /dev/null and b/Frameworks/TextToSpeech.xcframework/ios-arm64/libTextToSpeech.a differ diff --git a/Frameworks/TextToSpeech.xcframework/ios-arm64_x86_64-simulator/Headers/TextToSpeech.h b/Frameworks/TextToSpeech.xcframework/ios-arm64_x86_64-simulator/Headers/TextToSpeech.h new file mode 100644 index 0000000..25bd220 --- /dev/null +++ b/Frameworks/TextToSpeech.xcframework/ios-arm64_x86_64-simulator/Headers/TextToSpeech.h @@ -0,0 +1,20 @@ +// +// TextToSpeech.h +// TextToSpeech +// +// Created by Anton Krasovsky on 27/09/2016. +// Copyright © 2016 Anton Krasovsky. All rights reserved. +// + +#import +#import + +@import AVFoundation; + +@interface TextToSpeech : RCTEventEmitter +@property (nonatomic, strong) AVSpeechSynthesizer *synthesizer; +@property (nonatomic, strong) AVSpeechSynthesisVoice *defaultVoice; +@property (nonatomic) float defaultRate; +@property (nonatomic) float defaultPitch; +@property (nonatomic) bool ducking; +@end diff --git a/Frameworks/TextToSpeech.xcframework/ios-arm64_x86_64-simulator/libTextToSpeech.a b/Frameworks/TextToSpeech.xcframework/ios-arm64_x86_64-simulator/libTextToSpeech.a new file mode 100644 index 0000000..0e35014 Binary files /dev/null and b/Frameworks/TextToSpeech.xcframework/ios-arm64_x86_64-simulator/libTextToSpeech.a differ diff --git a/Frameworks/Yoga.xcframework/Info.plist b/Frameworks/Yoga.xcframework/Info.plist new file mode 100644 index 0000000..a143914 --- /dev/null +++ b/Frameworks/Yoga.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libYoga.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libYoga.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + libYoga.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libYoga.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/Yoga.xcframework/ios-arm64/Headers/Yoga-umbrella.h b/Frameworks/Yoga.xcframework/ios-arm64/Headers/Yoga-umbrella.h new file mode 100644 index 0000000..65d28e5 --- /dev/null +++ b/Frameworks/Yoga.xcframework/ios-arm64/Headers/Yoga-umbrella.h @@ -0,0 +1,22 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + +#import "yoga/YGEnums.h" +#import "yoga/YGMacros.h" +#import "yoga/YGNode.h" +#import "yoga/YGStyle.h" +#import "yoga/YGValue.h" +#import "yoga/Yoga.h" + +FOUNDATION_EXPORT double yogaVersionNumber; +FOUNDATION_EXPORT const unsigned char yogaVersionString[]; + diff --git a/Frameworks/Yoga.xcframework/ios-arm64/Headers/Yoga.modulemap b/Frameworks/Yoga.xcframework/ios-arm64/Headers/Yoga.modulemap new file mode 100644 index 0000000..b47796c --- /dev/null +++ b/Frameworks/Yoga.xcframework/ios-arm64/Headers/Yoga.modulemap @@ -0,0 +1,6 @@ +module yoga { + umbrella header "Yoga-umbrella.h" + + export * + module * { export * } +} diff --git a/Frameworks/Yoga.xcframework/ios-arm64/Headers/yoga/YGEnums.h b/Frameworks/Yoga.xcframework/ios-arm64/Headers/yoga/YGEnums.h new file mode 100644 index 0000000..3dc458d --- /dev/null +++ b/Frameworks/Yoga.xcframework/ios-arm64/Headers/yoga/YGEnums.h @@ -0,0 +1,155 @@ +/* + * 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. + */ + +#pragma once + +#include "YGMacros.h" + +#ifdef __cplusplus +namespace facebook { +namespace yoga { +namespace enums { + +template +constexpr int count(); // can't use `= delete` due to a defect in clang < 3.9 + +namespace detail { +template +constexpr int n() { + return sizeof...(xs); +} +} // namespace detail + +} // namespace enums +} // namespace yoga +} // namespace facebook +#endif + +#define YG_ENUM_DECL(NAME, ...) \ + typedef YG_ENUM_BEGIN(NAME){__VA_ARGS__} YG_ENUM_END(NAME); \ + WIN_EXPORT const char* NAME##ToString(NAME); + +#ifdef __cplusplus +#define YG_ENUM_SEQ_DECL(NAME, ...) \ + YG_ENUM_DECL(NAME, __VA_ARGS__) \ + YG_EXTERN_C_END \ + namespace facebook { \ + namespace yoga { \ + namespace enums { \ + template <> \ + constexpr int count() { \ + return detail::n<__VA_ARGS__>(); \ + } \ + } \ + } \ + } \ + YG_EXTERN_C_BEGIN +#else +#define YG_ENUM_SEQ_DECL YG_ENUM_DECL +#endif + +YG_EXTERN_C_BEGIN + +YG_ENUM_SEQ_DECL( + YGAlign, + YGAlignAuto, + YGAlignFlexStart, + YGAlignCenter, + YGAlignFlexEnd, + YGAlignStretch, + YGAlignBaseline, + YGAlignSpaceBetween, + YGAlignSpaceAround); + +YG_ENUM_SEQ_DECL(YGDimension, YGDimensionWidth, YGDimensionHeight) + +YG_ENUM_SEQ_DECL( + YGDirection, + YGDirectionInherit, + YGDirectionLTR, + YGDirectionRTL) + +YG_ENUM_SEQ_DECL(YGDisplay, YGDisplayFlex, YGDisplayNone) + +YG_ENUM_SEQ_DECL( + YGEdge, + YGEdgeLeft, + YGEdgeTop, + YGEdgeRight, + YGEdgeBottom, + YGEdgeStart, + YGEdgeEnd, + YGEdgeHorizontal, + YGEdgeVertical, + YGEdgeAll) + +YG_ENUM_SEQ_DECL(YGExperimentalFeature, YGExperimentalFeatureWebFlexBasis) + +YG_ENUM_SEQ_DECL( + YGFlexDirection, + YGFlexDirectionColumn, + YGFlexDirectionColumnReverse, + YGFlexDirectionRow, + YGFlexDirectionRowReverse) + +YG_ENUM_SEQ_DECL( + YGJustify, + YGJustifyFlexStart, + YGJustifyCenter, + YGJustifyFlexEnd, + YGJustifySpaceBetween, + YGJustifySpaceAround, + YGJustifySpaceEvenly) + +YG_ENUM_SEQ_DECL( + YGLogLevel, + YGLogLevelError, + YGLogLevelWarn, + YGLogLevelInfo, + YGLogLevelDebug, + YGLogLevelVerbose, + YGLogLevelFatal) + +YG_ENUM_SEQ_DECL( + YGMeasureMode, + YGMeasureModeUndefined, + YGMeasureModeExactly, + YGMeasureModeAtMost) + +YG_ENUM_SEQ_DECL(YGNodeType, YGNodeTypeDefault, YGNodeTypeText) + +YG_ENUM_SEQ_DECL( + YGOverflow, + YGOverflowVisible, + YGOverflowHidden, + YGOverflowScroll) + +YG_ENUM_SEQ_DECL( + YGPositionType, + YGPositionTypeStatic, + YGPositionTypeRelative, + YGPositionTypeAbsolute) + +YG_ENUM_DECL( + YGPrintOptions, + YGPrintOptionsLayout = 1, + YGPrintOptionsStyle = 2, + YGPrintOptionsChildren = 4) + +YG_ENUM_SEQ_DECL( + YGUnit, + YGUnitUndefined, + YGUnitPoint, + YGUnitPercent, + YGUnitAuto) + +YG_ENUM_SEQ_DECL(YGWrap, YGWrapNoWrap, YGWrapWrap, YGWrapWrapReverse) + +YG_EXTERN_C_END + +#undef YG_ENUM_DECL +#undef YG_ENUM_SEQ_DECL diff --git a/Frameworks/Yoga.xcframework/ios-arm64/Headers/yoga/YGMacros.h b/Frameworks/Yoga.xcframework/ios-arm64/Headers/yoga/YGMacros.h new file mode 100644 index 0000000..c6917f1 --- /dev/null +++ b/Frameworks/Yoga.xcframework/ios-arm64/Headers/yoga/YGMacros.h @@ -0,0 +1,53 @@ +/* + * 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. + */ + +#pragma once + +#ifdef __cplusplus +#define YG_EXTERN_C_BEGIN extern "C" { +#define YG_EXTERN_C_END } +#else +#define YG_EXTERN_C_BEGIN +#define YG_EXTERN_C_END +#endif + +#ifdef _WINDLL +#define WIN_EXPORT __declspec(dllexport) +#else +#define WIN_EXPORT +#endif + +#ifndef YOGA_EXPORT +#ifdef _MSC_VER +#define YOGA_EXPORT +#else +#define YOGA_EXPORT __attribute__((visibility("default"))) +#endif +#endif + +#ifdef NS_ENUM +// Cannot use NSInteger as NSInteger has a different size than int (which is the +// default type of a enum). Therefor when linking the Yoga C library into obj-c +// the header is a missmatch for the Yoga ABI. +#define YG_ENUM_BEGIN(name) NS_ENUM(int, name) +#define YG_ENUM_END(name) +#else +#define YG_ENUM_BEGIN(name) enum name +#define YG_ENUM_END(name) name +#endif + +#ifdef __GNUC__ +#define YG_DEPRECATED __attribute__((deprecated)) +#elif defined(_MSC_VER) +#define YG_DEPRECATED __declspec(deprecated) +#elif __cplusplus >= 201402L +#if defined(__has_cpp_attribute) +#if __has_cpp_attribute(deprecated) +#define YG_DEPRECATED [[deprecated]] +#endif +#endif +#endif diff --git a/Frameworks/Yoga.xcframework/ios-arm64/Headers/yoga/YGNode.h b/Frameworks/Yoga.xcframework/ios-arm64/Headers/yoga/YGNode.h new file mode 100644 index 0000000..4b6e627 --- /dev/null +++ b/Frameworks/Yoga.xcframework/ios-arm64/Headers/yoga/YGNode.h @@ -0,0 +1,348 @@ +/* + * 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. + */ + +#pragma once + +#ifdef __cplusplus + +#include +#include +#include "BitUtils.h" +#include "CompactValue.h" +#include "YGConfig.h" +#include "YGLayout.h" +#include "YGStyle.h" +#include "YGMacros.h" +#include "Yoga-internal.h" + +YGConfigRef YGConfigGetDefault(); + +struct YOGA_EXPORT YGNode { + using MeasureWithContextFn = + YGSize (*)(YGNode*, float, YGMeasureMode, float, YGMeasureMode, void*); + using BaselineWithContextFn = float (*)(YGNode*, float, float, void*); + using PrintWithContextFn = void (*)(YGNode*, void*); + +private: + static constexpr size_t hasNewLayout_ = 0; + static constexpr size_t isReferenceBaseline_ = 1; + static constexpr size_t isDirty_ = 2; + static constexpr size_t nodeType_ = 3; + static constexpr size_t measureUsesContext_ = 4; + static constexpr size_t baselineUsesContext_ = 5; + static constexpr size_t printUsesContext_ = 6; + static constexpr size_t useWebDefaults_ = 7; + + void* context_ = nullptr; + uint8_t flags = 1; + uint8_t reserved_ = 0; + union { + YGMeasureFunc noContext; + MeasureWithContextFn withContext; + } measure_ = {nullptr}; + union { + YGBaselineFunc noContext; + BaselineWithContextFn withContext; + } baseline_ = {nullptr}; + union { + YGPrintFunc noContext; + PrintWithContextFn withContext; + } print_ = {nullptr}; + YGDirtiedFunc dirtied_ = nullptr; + YGStyle style_ = {}; + YGLayout layout_ = {}; + uint32_t lineIndex_ = 0; + YGNodeRef owner_ = nullptr; + YGVector children_ = {}; + YGConfigRef config_; + std::array resolvedDimensions_ = { + {YGValueUndefined, YGValueUndefined}}; + + YGFloatOptional relativePosition( + const YGFlexDirection axis, + const float axisSize) const; + + void setMeasureFunc(decltype(measure_)); + void setBaselineFunc(decltype(baseline_)); + + void useWebDefaults() { + facebook::yoga::detail::setBooleanData(flags, useWebDefaults_, true); + style_.flexDirection() = YGFlexDirectionRow; + style_.alignContent() = YGAlignStretch; + } + + // DANGER DANGER DANGER! + // If the node assigned to has children, we'd either have to deallocate + // them (potentially incorrect) or ignore them (danger of leaks). Only ever + // use this after checking that there are no children. + // DO NOT CHANGE THE VISIBILITY OF THIS METHOD! + YGNode& operator=(YGNode&&) = default; + + using CompactValue = facebook::yoga::detail::CompactValue; + +public: + YGNode() : YGNode{YGConfigGetDefault()} {} + explicit YGNode(const YGConfigRef config) : config_{config} { + if (config->useWebDefaults) { + useWebDefaults(); + } + }; + ~YGNode() = default; // cleanup of owner/children relationships in YGNodeFree + + YGNode(YGNode&&); + + // Does not expose true value semantics, as children are not cloned eagerly. + // Should we remove this? + YGNode(const YGNode& node) = default; + + // for RB fabric + YGNode(const YGNode& node, YGConfigRef config); + + // assignment means potential leaks of existing children, or alternatively + // freeing unowned memory, double free, or freeing stack memory. + YGNode& operator=(const YGNode&) = delete; + + // Getters + void* getContext() const { return context_; } + + uint8_t& reserved() { return reserved_; } + uint8_t reserved() const { return reserved_; } + + void print(void*); + + bool getHasNewLayout() const { + return facebook::yoga::detail::getBooleanData(flags, hasNewLayout_); + } + + YGNodeType getNodeType() const { + return facebook::yoga::detail::getEnumData(flags, nodeType_); + } + + bool hasMeasureFunc() const noexcept { return measure_.noContext != nullptr; } + + YGSize measure(float, YGMeasureMode, float, YGMeasureMode, void*); + + bool hasBaselineFunc() const noexcept { + return baseline_.noContext != nullptr; + } + + float baseline(float width, float height, void* layoutContext); + + YGDirtiedFunc getDirtied() const { return dirtied_; } + + // For Performance reasons passing as reference. + YGStyle& getStyle() { return style_; } + + const YGStyle& getStyle() const { return style_; } + + // For Performance reasons passing as reference. + YGLayout& getLayout() { return layout_; } + + const YGLayout& getLayout() const { return layout_; } + + uint32_t getLineIndex() const { return lineIndex_; } + + bool isReferenceBaseline() { + return facebook::yoga::detail::getBooleanData(flags, isReferenceBaseline_); + } + + // returns the YGNodeRef that owns this YGNode. An owner is used to identify + // the YogaTree that a YGNode belongs to. This method will return the parent + // of the YGNode when a YGNode only belongs to one YogaTree or nullptr when + // the YGNode is shared between two or more YogaTrees. + YGNodeRef getOwner() const { return owner_; } + + // Deprecated, use getOwner() instead. + YGNodeRef getParent() const { return getOwner(); } + + const YGVector& getChildren() const { return children_; } + + // Applies a callback to all children, after cloning them if they are not + // owned. + template + void iterChildrenAfterCloningIfNeeded(T callback, void* cloneContext) { + int i = 0; + for (YGNodeRef& child : children_) { + if (child->getOwner() != this) { + child = config_->cloneNode(child, this, i, cloneContext); + child->setOwner(this); + } + i += 1; + + callback(child, cloneContext); + } + } + + YGNodeRef getChild(uint32_t index) const { return children_.at(index); } + + YGConfigRef getConfig() const { return config_; } + + bool isDirty() const { + return facebook::yoga::detail::getBooleanData(flags, isDirty_); + } + + std::array getResolvedDimensions() const { + return resolvedDimensions_; + } + + YGValue getResolvedDimension(int index) const { + return resolvedDimensions_[index]; + } + + static CompactValue computeEdgeValueForColumn( + const YGStyle::Edges& edges, + YGEdge edge, + CompactValue defaultValue); + + static CompactValue computeEdgeValueForRow( + const YGStyle::Edges& edges, + YGEdge rowEdge, + YGEdge edge, + CompactValue defaultValue); + + // Methods related to positions, margin, padding and border + YGFloatOptional getLeadingPosition( + const YGFlexDirection axis, + const float axisSize) const; + bool isLeadingPositionDefined(const YGFlexDirection axis) const; + bool isTrailingPosDefined(const YGFlexDirection axis) const; + YGFloatOptional getTrailingPosition( + const YGFlexDirection axis, + const float axisSize) const; + YGFloatOptional getLeadingMargin( + const YGFlexDirection axis, + const float widthSize) const; + YGFloatOptional getTrailingMargin( + const YGFlexDirection axis, + const float widthSize) const; + float getLeadingBorder(const YGFlexDirection flexDirection) const; + float getTrailingBorder(const YGFlexDirection flexDirection) const; + YGFloatOptional getLeadingPadding( + const YGFlexDirection axis, + const float widthSize) const; + YGFloatOptional getTrailingPadding( + const YGFlexDirection axis, + const float widthSize) const; + YGFloatOptional getLeadingPaddingAndBorder( + const YGFlexDirection axis, + const float widthSize) const; + YGFloatOptional getTrailingPaddingAndBorder( + const YGFlexDirection axis, + const float widthSize) const; + YGFloatOptional getMarginForAxis( + const YGFlexDirection axis, + const float widthSize) const; + // Setters + + void setContext(void* context) { context_ = context; } + + void setPrintFunc(YGPrintFunc printFunc) { + print_.noContext = printFunc; + facebook::yoga::detail::setBooleanData(flags, printUsesContext_, false); + } + void setPrintFunc(PrintWithContextFn printFunc) { + print_.withContext = printFunc; + facebook::yoga::detail::setBooleanData(flags, printUsesContext_, true); + } + void setPrintFunc(std::nullptr_t) { setPrintFunc(YGPrintFunc{nullptr}); } + + void setHasNewLayout(bool hasNewLayout) { + facebook::yoga::detail::setBooleanData(flags, hasNewLayout_, hasNewLayout); + } + + void setNodeType(YGNodeType nodeType) { + return facebook::yoga::detail::setEnumData( + flags, nodeType_, nodeType); + } + + void setMeasureFunc(YGMeasureFunc measureFunc); + void setMeasureFunc(MeasureWithContextFn); + void setMeasureFunc(std::nullptr_t) { + return setMeasureFunc(YGMeasureFunc{nullptr}); + } + + void setBaselineFunc(YGBaselineFunc baseLineFunc) { + facebook::yoga::detail::setBooleanData(flags, baselineUsesContext_, false); + baseline_.noContext = baseLineFunc; + } + void setBaselineFunc(BaselineWithContextFn baseLineFunc) { + facebook::yoga::detail::setBooleanData(flags, baselineUsesContext_, true); + baseline_.withContext = baseLineFunc; + } + void setBaselineFunc(std::nullptr_t) { + return setBaselineFunc(YGBaselineFunc{nullptr}); + } + + void setDirtiedFunc(YGDirtiedFunc dirtiedFunc) { dirtied_ = dirtiedFunc; } + + void setStyle(const YGStyle& style) { style_ = style; } + + void setLayout(const YGLayout& layout) { layout_ = layout; } + + void setLineIndex(uint32_t lineIndex) { lineIndex_ = lineIndex; } + + void setIsReferenceBaseline(bool isReferenceBaseline) { + facebook::yoga::detail::setBooleanData( + flags, isReferenceBaseline_, isReferenceBaseline); + } + + void setOwner(YGNodeRef owner) { owner_ = owner; } + + void setChildren(const YGVector& children) { children_ = children; } + + // TODO: rvalue override for setChildren + + YG_DEPRECATED void setConfig(YGConfigRef config) { config_ = config; } + + void setDirty(bool isDirty); + void setLayoutLastOwnerDirection(YGDirection direction); + void setLayoutComputedFlexBasis(const YGFloatOptional computedFlexBasis); + void setLayoutComputedFlexBasisGeneration( + uint32_t computedFlexBasisGeneration); + void setLayoutMeasuredDimension(float measuredDimension, int index); + void setLayoutHadOverflow(bool hadOverflow); + void setLayoutDimension(float dimension, int index); + void setLayoutDirection(YGDirection direction); + void setLayoutMargin(float margin, int index); + void setLayoutBorder(float border, int index); + void setLayoutPadding(float padding, int index); + void setLayoutPosition(float position, int index); + void setPosition( + const YGDirection direction, + const float mainSize, + const float crossSize, + const float ownerWidth); + void setLayoutDoesLegacyFlagAffectsLayout(bool doesLegacyFlagAffectsLayout); + void setLayoutDidUseLegacyFlag(bool didUseLegacyFlag); + void markDirtyAndPropogateDownwards(); + + // Other methods + YGValue marginLeadingValue(const YGFlexDirection axis) const; + YGValue marginTrailingValue(const YGFlexDirection axis) const; + YGValue resolveFlexBasisPtr() const; + void resolveDimension(); + YGDirection resolveDirection(const YGDirection ownerDirection); + void clearChildren(); + /// Replaces the occurrences of oldChild with newChild + void replaceChild(YGNodeRef oldChild, YGNodeRef newChild); + void replaceChild(YGNodeRef child, uint32_t index); + void insertChild(YGNodeRef child, uint32_t index); + /// Removes the first occurrence of child + bool removeChild(YGNodeRef child); + void removeChild(uint32_t index); + + void cloneChildrenIfNeeded(void*); + void markDirtyAndPropogate(); + float resolveFlexGrow() const; + float resolveFlexShrink() const; + bool isNodeFlexible(); + bool didUseLegacyFlag(); + bool isLayoutTreeEqualToNode(const YGNode& node) const; + void reset(); +}; + +#endif diff --git a/Frameworks/Yoga.xcframework/ios-arm64/Headers/yoga/YGStyle.h b/Frameworks/Yoga.xcframework/ios-arm64/Headers/yoga/YGStyle.h new file mode 100644 index 0000000..aab7599 --- /dev/null +++ b/Frameworks/Yoga.xcframework/ios-arm64/Headers/yoga/YGStyle.h @@ -0,0 +1,236 @@ +/* + * 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. + */ + +#pragma once + +#ifdef __cplusplus + +#include +#include +#include +#include +#include "CompactValue.h" +#include "YGEnums.h" +#include "YGFloatOptional.h" +#include "Yoga-internal.h" +#include "Yoga.h" +#include "BitUtils.h" + +class YOGA_EXPORT YGStyle { + template + using Values = + facebook::yoga::detail::Values()>; + using CompactValue = facebook::yoga::detail::CompactValue; + +public: + using Dimensions = Values; + using Edges = Values; + + template + struct BitfieldRef { + YGStyle& style; + size_t offset; + operator T() const { + return facebook::yoga::detail::getEnumData(style.flags, offset); + } + BitfieldRef& operator=(T x) { + facebook::yoga::detail::setEnumData(style.flags, offset, x); + return *this; + } + }; + + template + struct Ref { + YGStyle& style; + operator T() const { return style.*Prop; } + Ref& operator=(T value) { + style.*Prop = value; + return *this; + } + }; + + template YGStyle::*Prop> + struct IdxRef { + struct Ref { + YGStyle& style; + Idx idx; + operator CompactValue() const { return (style.*Prop)[idx]; } + operator YGValue() const { return (style.*Prop)[idx]; } + Ref& operator=(CompactValue value) { + (style.*Prop)[idx] = value; + return *this; + } + }; + + YGStyle& style; + IdxRef& operator=(const Values& values) { + style.*Prop = values; + return *this; + } + operator const Values&() const { return style.*Prop; } + Ref operator[](Idx idx) { return {style, idx}; } + CompactValue operator[](Idx idx) const { return (style.*Prop)[idx]; } + }; + + YGStyle() { + alignContent() = YGAlignFlexStart; + alignItems() = YGAlignStretch; + } + ~YGStyle() = default; + +private: + static constexpr size_t directionOffset = 0; + static constexpr size_t flexdirectionOffset = + directionOffset + facebook::yoga::detail::bitWidthFn(); + static constexpr size_t justifyContentOffset = flexdirectionOffset + + facebook::yoga::detail::bitWidthFn(); + static constexpr size_t alignContentOffset = + justifyContentOffset + facebook::yoga::detail::bitWidthFn(); + static constexpr size_t alignItemsOffset = + alignContentOffset + facebook::yoga::detail::bitWidthFn(); + static constexpr size_t alignSelfOffset = + alignItemsOffset + facebook::yoga::detail::bitWidthFn(); + static constexpr size_t positionTypeOffset = + alignSelfOffset + facebook::yoga::detail::bitWidthFn(); + static constexpr size_t flexWrapOffset = + positionTypeOffset + facebook::yoga::detail::bitWidthFn(); + static constexpr size_t overflowOffset = + flexWrapOffset + facebook::yoga::detail::bitWidthFn(); + static constexpr size_t displayOffset = + overflowOffset + facebook::yoga::detail::bitWidthFn(); + + uint32_t flags = 0; + + YGFloatOptional flex_ = {}; + YGFloatOptional flexGrow_ = {}; + YGFloatOptional flexShrink_ = {}; + CompactValue flexBasis_ = CompactValue::ofAuto(); + Edges margin_ = {}; + Edges position_ = {}; + Edges padding_ = {}; + Edges border_ = {}; + Dimensions dimensions_{CompactValue::ofAuto()}; + Dimensions minDimensions_ = {}; + Dimensions maxDimensions_ = {}; + // Yoga specific properties, not compatible with flexbox specification + YGFloatOptional aspectRatio_ = {}; + +public: + // for library users needing a type + using ValueRepr = std::remove_reference::type; + + YGDirection direction() const { + return facebook::yoga::detail::getEnumData( + flags, directionOffset); + } + BitfieldRef direction() { return {*this, directionOffset}; } + + YGFlexDirection flexDirection() const { + return facebook::yoga::detail::getEnumData( + flags, flexdirectionOffset); + } + BitfieldRef flexDirection() { + return {*this, flexdirectionOffset}; + } + + YGJustify justifyContent() const { + return facebook::yoga::detail::getEnumData( + flags, justifyContentOffset); + } + BitfieldRef justifyContent() { + return {*this, justifyContentOffset}; + } + + YGAlign alignContent() const { + return facebook::yoga::detail::getEnumData( + flags, alignContentOffset); + } + BitfieldRef alignContent() { return {*this, alignContentOffset}; } + + YGAlign alignItems() const { + return facebook::yoga::detail::getEnumData( + flags, alignItemsOffset); + } + BitfieldRef alignItems() { return {*this, alignItemsOffset}; } + + YGAlign alignSelf() const { + return facebook::yoga::detail::getEnumData(flags, alignSelfOffset); + } + BitfieldRef alignSelf() { return {*this, alignSelfOffset}; } + + YGPositionType positionType() const { + return facebook::yoga::detail::getEnumData( + flags, positionTypeOffset); + } + BitfieldRef positionType() { + return {*this, positionTypeOffset}; + } + + YGWrap flexWrap() const { + return facebook::yoga::detail::getEnumData(flags, flexWrapOffset); + } + BitfieldRef flexWrap() { return {*this, flexWrapOffset}; } + + YGOverflow overflow() const { + return facebook::yoga::detail::getEnumData( + flags, overflowOffset); + } + BitfieldRef overflow() { return {*this, overflowOffset}; } + + YGDisplay display() const { + return facebook::yoga::detail::getEnumData(flags, displayOffset); + } + BitfieldRef display() { return {*this, displayOffset}; } + + YGFloatOptional flex() const { return flex_; } + Ref flex() { return {*this}; } + + YGFloatOptional flexGrow() const { return flexGrow_; } + Ref flexGrow() { return {*this}; } + + YGFloatOptional flexShrink() const { return flexShrink_; } + Ref flexShrink() { return {*this}; } + + CompactValue flexBasis() const { return flexBasis_; } + Ref flexBasis() { return {*this}; } + + const Edges& margin() const { return margin_; } + IdxRef margin() { return {*this}; } + + const Edges& position() const { return position_; } + IdxRef position() { return {*this}; } + + const Edges& padding() const { return padding_; } + IdxRef padding() { return {*this}; } + + const Edges& border() const { return border_; } + IdxRef border() { return {*this}; } + + const Dimensions& dimensions() const { return dimensions_; } + IdxRef dimensions() { return {*this}; } + + const Dimensions& minDimensions() const { return minDimensions_; } + IdxRef minDimensions() { + return {*this}; + } + + const Dimensions& maxDimensions() const { return maxDimensions_; } + IdxRef maxDimensions() { + return {*this}; + } + + // Yoga specific properties, not compatible with flexbox specification + YGFloatOptional aspectRatio() const { return aspectRatio_; } + Ref aspectRatio() { return {*this}; } +}; + +YOGA_EXPORT bool operator==(const YGStyle& lhs, const YGStyle& rhs); +YOGA_EXPORT inline bool operator!=(const YGStyle& lhs, const YGStyle& rhs) { + return !(lhs == rhs); +} + +#endif diff --git a/Frameworks/Yoga.xcframework/ios-arm64/Headers/yoga/YGValue.h b/Frameworks/Yoga.xcframework/ios-arm64/Headers/yoga/YGValue.h new file mode 100644 index 0000000..a200097 --- /dev/null +++ b/Frameworks/Yoga.xcframework/ios-arm64/Headers/yoga/YGValue.h @@ -0,0 +1,95 @@ +/* + * 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. + */ + +#pragma once + +#include +#include "YGEnums.h" +#include "YGMacros.h" + +#if defined(_MSC_VER) && defined(__clang__) +#define COMPILING_WITH_CLANG_ON_WINDOWS +#endif +#if defined(COMPILING_WITH_CLANG_ON_WINDOWS) +#include +constexpr float YGUndefined = std::numeric_limits::quiet_NaN(); +#else +YG_EXTERN_C_BEGIN + +// Not defined in MSVC++ +#ifndef NAN +static const uint32_t __nan = 0x7fc00000; +#define NAN (*(const float*) __nan) +#endif + +#define YGUndefined NAN +#endif + +typedef struct YGValue { + float value; + YGUnit unit; +} YGValue; + +YOGA_EXPORT extern const YGValue YGValueAuto; +YOGA_EXPORT extern const YGValue YGValueUndefined; +YOGA_EXPORT extern const YGValue YGValueZero; + +#if !defined(COMPILING_WITH_CLANG_ON_WINDOWS) +YG_EXTERN_C_END +#endif +#undef COMPILING_WITH_CLANG_ON_WINDOWS + +#ifdef __cplusplus + +inline bool operator==(const YGValue& lhs, const YGValue& rhs) { + if (lhs.unit != rhs.unit) { + return false; + } + + switch (lhs.unit) { + case YGUnitUndefined: + case YGUnitAuto: + return true; + case YGUnitPoint: + case YGUnitPercent: + return lhs.value == rhs.value; + } + + return false; +} + +inline bool operator!=(const YGValue& lhs, const YGValue& rhs) { + return !(lhs == rhs); +} + +inline YGValue operator-(const YGValue& value) { + return {-value.value, value.unit}; +} + +namespace facebook { +namespace yoga { +namespace literals { + +inline YGValue operator"" _pt(long double value) { + return YGValue{static_cast(value), YGUnitPoint}; +} +inline YGValue operator"" _pt(unsigned long long value) { + return operator"" _pt(static_cast(value)); +} + +inline YGValue operator"" _percent(long double value) { + return YGValue{static_cast(value), YGUnitPercent}; +} +inline YGValue operator"" _percent(unsigned long long value) { + return operator"" _percent(static_cast(value)); +} + +} // namespace literals +} // namespace yoga +} // namespace facebook + +#endif diff --git a/Frameworks/Yoga.xcframework/ios-arm64/Headers/yoga/Yoga.h b/Frameworks/Yoga.xcframework/ios-arm64/Headers/yoga/Yoga.h new file mode 100644 index 0000000..86cd65e --- /dev/null +++ b/Frameworks/Yoga.xcframework/ios-arm64/Headers/yoga/Yoga.h @@ -0,0 +1,374 @@ +/* + * 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. + */ + +#pragma once + +#include +#include +#include +#include +#include +#include + +#ifndef __cplusplus +#include +#endif + +#include "YGEnums.h" +#include "YGMacros.h" +#include "YGValue.h" + +YG_EXTERN_C_BEGIN + +typedef struct YGSize { + float width; + float height; +} YGSize; + +typedef struct YGConfig* YGConfigRef; + +typedef struct YGNode* YGNodeRef; +typedef const struct YGNode* YGNodeConstRef; + +typedef YGSize (*YGMeasureFunc)( + YGNodeRef node, + float width, + YGMeasureMode widthMode, + float height, + YGMeasureMode heightMode); +typedef float (*YGBaselineFunc)(YGNodeRef node, float width, float height); +typedef void (*YGDirtiedFunc)(YGNodeRef node); +typedef void (*YGPrintFunc)(YGNodeRef node); +typedef void (*YGNodeCleanupFunc)(YGNodeRef node); +typedef int (*YGLogger)( + YGConfigRef config, + YGNodeRef node, + YGLogLevel level, + const char* format, + va_list args); +typedef YGNodeRef ( + *YGCloneNodeFunc)(YGNodeRef oldNode, YGNodeRef owner, int childIndex); + +// YGNode +WIN_EXPORT YGNodeRef YGNodeNew(void); +WIN_EXPORT YGNodeRef YGNodeNewWithConfig(YGConfigRef config); +WIN_EXPORT YGNodeRef YGNodeClone(YGNodeRef node); +WIN_EXPORT void YGNodeFree(YGNodeRef node); +WIN_EXPORT void YGNodeFreeRecursiveWithCleanupFunc( + YGNodeRef node, + YGNodeCleanupFunc cleanup); +WIN_EXPORT void YGNodeFreeRecursive(YGNodeRef node); +WIN_EXPORT void YGNodeReset(YGNodeRef node); + +WIN_EXPORT void YGNodeInsertChild( + YGNodeRef node, + YGNodeRef child, + uint32_t index); + +WIN_EXPORT void YGNodeSwapChild( + YGNodeRef node, + YGNodeRef child, + uint32_t index); + +WIN_EXPORT void YGNodeRemoveChild(YGNodeRef node, YGNodeRef child); +WIN_EXPORT void YGNodeRemoveAllChildren(YGNodeRef node); +WIN_EXPORT YGNodeRef YGNodeGetChild(YGNodeRef node, uint32_t index); +WIN_EXPORT YGNodeRef YGNodeGetOwner(YGNodeRef node); +WIN_EXPORT YGNodeRef YGNodeGetParent(YGNodeRef node); +WIN_EXPORT uint32_t YGNodeGetChildCount(YGNodeRef node); +WIN_EXPORT void YGNodeSetChildren( + YGNodeRef owner, + const YGNodeRef children[], + uint32_t count); + +WIN_EXPORT void YGNodeSetIsReferenceBaseline( + YGNodeRef node, + bool isReferenceBaseline); + +WIN_EXPORT bool YGNodeIsReferenceBaseline(YGNodeRef node); + +WIN_EXPORT void YGNodeCalculateLayout( + YGNodeRef node, + float availableWidth, + float availableHeight, + YGDirection ownerDirection); + +// Mark a node as dirty. Only valid for nodes with a custom measure function +// set. +// +// Yoga knows when to mark all other nodes as dirty but because nodes with +// measure functions depend on information not known to Yoga they must perform +// this dirty marking manually. +WIN_EXPORT void YGNodeMarkDirty(YGNodeRef node); + +// Marks the current node and all its descendants as dirty. +// +// Intended to be used for Yoga benchmarks. Don't use in production, as calling +// `YGCalculateLayout` will cause the recalculation of each and every node. +WIN_EXPORT void YGNodeMarkDirtyAndPropogateToDescendants(YGNodeRef node); + +WIN_EXPORT void YGNodePrint(YGNodeRef node, YGPrintOptions options); + +WIN_EXPORT bool YGFloatIsUndefined(float value); + +WIN_EXPORT bool YGNodeCanUseCachedMeasurement( + YGMeasureMode widthMode, + float width, + YGMeasureMode heightMode, + float height, + YGMeasureMode lastWidthMode, + float lastWidth, + YGMeasureMode lastHeightMode, + float lastHeight, + float lastComputedWidth, + float lastComputedHeight, + float marginRow, + float marginColumn, + YGConfigRef config); + +WIN_EXPORT void YGNodeCopyStyle(YGNodeRef dstNode, YGNodeRef srcNode); + +WIN_EXPORT void* YGNodeGetContext(YGNodeRef node); +WIN_EXPORT void YGNodeSetContext(YGNodeRef node, void* context); +void YGConfigSetPrintTreeFlag(YGConfigRef config, bool enabled); +bool YGNodeHasMeasureFunc(YGNodeRef node); +WIN_EXPORT void YGNodeSetMeasureFunc(YGNodeRef node, YGMeasureFunc measureFunc); +bool YGNodeHasBaselineFunc(YGNodeRef node); +void YGNodeSetBaselineFunc(YGNodeRef node, YGBaselineFunc baselineFunc); +YGDirtiedFunc YGNodeGetDirtiedFunc(YGNodeRef node); +void YGNodeSetDirtiedFunc(YGNodeRef node, YGDirtiedFunc dirtiedFunc); +void YGNodeSetPrintFunc(YGNodeRef node, YGPrintFunc printFunc); +WIN_EXPORT bool YGNodeGetHasNewLayout(YGNodeRef node); +WIN_EXPORT void YGNodeSetHasNewLayout(YGNodeRef node, bool hasNewLayout); +YGNodeType YGNodeGetNodeType(YGNodeRef node); +void YGNodeSetNodeType(YGNodeRef node, YGNodeType nodeType); +WIN_EXPORT bool YGNodeIsDirty(YGNodeRef node); +bool YGNodeLayoutGetDidUseLegacyFlag(YGNodeRef node); + +WIN_EXPORT void YGNodeStyleSetDirection(YGNodeRef node, YGDirection direction); +WIN_EXPORT YGDirection YGNodeStyleGetDirection(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetFlexDirection( + YGNodeRef node, + YGFlexDirection flexDirection); +WIN_EXPORT YGFlexDirection YGNodeStyleGetFlexDirection(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetJustifyContent( + YGNodeRef node, + YGJustify justifyContent); +WIN_EXPORT YGJustify YGNodeStyleGetJustifyContent(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetAlignContent( + YGNodeRef node, + YGAlign alignContent); +WIN_EXPORT YGAlign YGNodeStyleGetAlignContent(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetAlignItems(YGNodeRef node, YGAlign alignItems); +WIN_EXPORT YGAlign YGNodeStyleGetAlignItems(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetAlignSelf(YGNodeRef node, YGAlign alignSelf); +WIN_EXPORT YGAlign YGNodeStyleGetAlignSelf(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetPositionType( + YGNodeRef node, + YGPositionType positionType); +WIN_EXPORT YGPositionType YGNodeStyleGetPositionType(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetFlexWrap(YGNodeRef node, YGWrap flexWrap); +WIN_EXPORT YGWrap YGNodeStyleGetFlexWrap(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetOverflow(YGNodeRef node, YGOverflow overflow); +WIN_EXPORT YGOverflow YGNodeStyleGetOverflow(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetDisplay(YGNodeRef node, YGDisplay display); +WIN_EXPORT YGDisplay YGNodeStyleGetDisplay(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetFlex(YGNodeRef node, float flex); +WIN_EXPORT float YGNodeStyleGetFlex(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetFlexGrow(YGNodeRef node, float flexGrow); +WIN_EXPORT float YGNodeStyleGetFlexGrow(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetFlexShrink(YGNodeRef node, float flexShrink); +WIN_EXPORT float YGNodeStyleGetFlexShrink(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetFlexBasis(YGNodeRef node, float flexBasis); +WIN_EXPORT void YGNodeStyleSetFlexBasisPercent(YGNodeRef node, float flexBasis); +WIN_EXPORT void YGNodeStyleSetFlexBasisAuto(YGNodeRef node); +WIN_EXPORT YGValue YGNodeStyleGetFlexBasis(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetPosition( + YGNodeRef node, + YGEdge edge, + float position); +WIN_EXPORT void YGNodeStyleSetPositionPercent( + YGNodeRef node, + YGEdge edge, + float position); +WIN_EXPORT YGValue YGNodeStyleGetPosition(YGNodeConstRef node, YGEdge edge); + +WIN_EXPORT void YGNodeStyleSetMargin(YGNodeRef node, YGEdge edge, float margin); +WIN_EXPORT void YGNodeStyleSetMarginPercent( + YGNodeRef node, + YGEdge edge, + float margin); +WIN_EXPORT void YGNodeStyleSetMarginAuto(YGNodeRef node, YGEdge edge); +WIN_EXPORT YGValue YGNodeStyleGetMargin(YGNodeConstRef node, YGEdge edge); + +WIN_EXPORT void YGNodeStyleSetPadding( + YGNodeRef node, + YGEdge edge, + float padding); +WIN_EXPORT void YGNodeStyleSetPaddingPercent( + YGNodeRef node, + YGEdge edge, + float padding); +WIN_EXPORT YGValue YGNodeStyleGetPadding(YGNodeConstRef node, YGEdge edge); + +WIN_EXPORT void YGNodeStyleSetBorder(YGNodeRef node, YGEdge edge, float border); +WIN_EXPORT float YGNodeStyleGetBorder(YGNodeConstRef node, YGEdge edge); + +WIN_EXPORT void YGNodeStyleSetWidth(YGNodeRef node, float width); +WIN_EXPORT void YGNodeStyleSetWidthPercent(YGNodeRef node, float width); +WIN_EXPORT void YGNodeStyleSetWidthAuto(YGNodeRef node); +WIN_EXPORT YGValue YGNodeStyleGetWidth(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetHeight(YGNodeRef node, float height); +WIN_EXPORT void YGNodeStyleSetHeightPercent(YGNodeRef node, float height); +WIN_EXPORT void YGNodeStyleSetHeightAuto(YGNodeRef node); +WIN_EXPORT YGValue YGNodeStyleGetHeight(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetMinWidth(YGNodeRef node, float minWidth); +WIN_EXPORT void YGNodeStyleSetMinWidthPercent(YGNodeRef node, float minWidth); +WIN_EXPORT YGValue YGNodeStyleGetMinWidth(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetMinHeight(YGNodeRef node, float minHeight); +WIN_EXPORT void YGNodeStyleSetMinHeightPercent(YGNodeRef node, float minHeight); +WIN_EXPORT YGValue YGNodeStyleGetMinHeight(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetMaxWidth(YGNodeRef node, float maxWidth); +WIN_EXPORT void YGNodeStyleSetMaxWidthPercent(YGNodeRef node, float maxWidth); +WIN_EXPORT YGValue YGNodeStyleGetMaxWidth(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetMaxHeight(YGNodeRef node, float maxHeight); +WIN_EXPORT void YGNodeStyleSetMaxHeightPercent(YGNodeRef node, float maxHeight); +WIN_EXPORT YGValue YGNodeStyleGetMaxHeight(YGNodeConstRef node); + +// Yoga specific properties, not compatible with flexbox specification Aspect +// ratio control the size of the undefined dimension of a node. Aspect ratio is +// encoded as a floating point value width/height. e.g. A value of 2 leads to a +// node with a width twice the size of its height while a value of 0.5 gives the +// opposite effect. +// +// - On a node with a set width/height aspect ratio control the size of the +// unset dimension +// - On a node with a set flex basis aspect ratio controls the size of the node +// in the cross axis if unset +// - On a node with a measure function aspect ratio works as though the measure +// function measures the flex basis +// - On a node with flex grow/shrink aspect ratio controls the size of the node +// in the cross axis if unset +// - Aspect ratio takes min/max dimensions into account +WIN_EXPORT void YGNodeStyleSetAspectRatio(YGNodeRef node, float aspectRatio); +WIN_EXPORT float YGNodeStyleGetAspectRatio(YGNodeConstRef node); + +WIN_EXPORT float YGNodeLayoutGetLeft(YGNodeRef node); +WIN_EXPORT float YGNodeLayoutGetTop(YGNodeRef node); +WIN_EXPORT float YGNodeLayoutGetRight(YGNodeRef node); +WIN_EXPORT float YGNodeLayoutGetBottom(YGNodeRef node); +WIN_EXPORT float YGNodeLayoutGetWidth(YGNodeRef node); +WIN_EXPORT float YGNodeLayoutGetHeight(YGNodeRef node); +WIN_EXPORT YGDirection YGNodeLayoutGetDirection(YGNodeRef node); +WIN_EXPORT bool YGNodeLayoutGetHadOverflow(YGNodeRef node); +bool YGNodeLayoutGetDidLegacyStretchFlagAffectLayout(YGNodeRef node); + +// Get the computed values for these nodes after performing layout. If they were +// set using point values then the returned value will be the same as +// YGNodeStyleGetXXX. However if they were set using a percentage value then the +// returned value is the computed value used during layout. +WIN_EXPORT float YGNodeLayoutGetMargin(YGNodeRef node, YGEdge edge); +WIN_EXPORT float YGNodeLayoutGetBorder(YGNodeRef node, YGEdge edge); +WIN_EXPORT float YGNodeLayoutGetPadding(YGNodeRef node, YGEdge edge); + +WIN_EXPORT void YGConfigSetLogger(YGConfigRef config, YGLogger logger); +WIN_EXPORT void YGAssert(bool condition, const char* message); +WIN_EXPORT void YGAssertWithNode( + YGNodeRef node, + bool condition, + const char* message); +WIN_EXPORT void YGAssertWithConfig( + YGConfigRef config, + bool condition, + const char* message); +// Set this to number of pixels in 1 point to round calculation results If you +// want to avoid rounding - set PointScaleFactor to 0 +WIN_EXPORT void YGConfigSetPointScaleFactor( + YGConfigRef config, + float pixelsInPoint); +void YGConfigSetShouldDiffLayoutWithoutLegacyStretchBehaviour( + YGConfigRef config, + bool shouldDiffLayout); + +// Yoga previously had an error where containers would take the maximum space +// possible instead of the minimum like they are supposed to. In practice this +// resulted in implicit behaviour similar to align-self: stretch; Because this +// was such a long-standing bug we must allow legacy users to switch back to +// this behaviour. +WIN_EXPORT void YGConfigSetUseLegacyStretchBehaviour( + YGConfigRef config, + bool useLegacyStretchBehaviour); + +// YGConfig +WIN_EXPORT YGConfigRef YGConfigNew(void); +WIN_EXPORT void YGConfigFree(YGConfigRef config); +WIN_EXPORT void YGConfigCopy(YGConfigRef dest, YGConfigRef src); +WIN_EXPORT int32_t YGConfigGetInstanceCount(void); + +WIN_EXPORT void YGConfigSetExperimentalFeatureEnabled( + YGConfigRef config, + YGExperimentalFeature feature, + bool enabled); +WIN_EXPORT bool YGConfigIsExperimentalFeatureEnabled( + YGConfigRef config, + YGExperimentalFeature feature); + +// Using the web defaults is the preferred configuration for new projects. Usage +// of non web defaults should be considered as legacy. +WIN_EXPORT void YGConfigSetUseWebDefaults(YGConfigRef config, bool enabled); +WIN_EXPORT bool YGConfigGetUseWebDefaults(YGConfigRef config); + +WIN_EXPORT void YGConfigSetCloneNodeFunc( + YGConfigRef config, + YGCloneNodeFunc callback); + +// Export only for C# +WIN_EXPORT YGConfigRef YGConfigGetDefault(void); + +WIN_EXPORT void YGConfigSetContext(YGConfigRef config, void* context); +WIN_EXPORT void* YGConfigGetContext(YGConfigRef config); + +WIN_EXPORT float YGRoundValueToPixelGrid( + double value, + double pointScaleFactor, + bool forceCeil, + bool forceFloor); + +YG_EXTERN_C_END + +#ifdef __cplusplus + +#include +#include + +// Calls f on each node in the tree including the given node argument. +void YGTraversePreOrder( + YGNodeRef node, + std::function&& f); + +void YGNodeSetChildren(YGNodeRef owner, const std::vector& children); + +#endif diff --git a/Frameworks/Yoga.xcframework/ios-arm64/libYoga.a b/Frameworks/Yoga.xcframework/ios-arm64/libYoga.a new file mode 100644 index 0000000..4f671a9 Binary files /dev/null and b/Frameworks/Yoga.xcframework/ios-arm64/libYoga.a differ diff --git a/Frameworks/Yoga.xcframework/ios-arm64_x86_64-simulator/Headers/Yoga-umbrella.h b/Frameworks/Yoga.xcframework/ios-arm64_x86_64-simulator/Headers/Yoga-umbrella.h new file mode 100644 index 0000000..65d28e5 --- /dev/null +++ b/Frameworks/Yoga.xcframework/ios-arm64_x86_64-simulator/Headers/Yoga-umbrella.h @@ -0,0 +1,22 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + +#import "yoga/YGEnums.h" +#import "yoga/YGMacros.h" +#import "yoga/YGNode.h" +#import "yoga/YGStyle.h" +#import "yoga/YGValue.h" +#import "yoga/Yoga.h" + +FOUNDATION_EXPORT double yogaVersionNumber; +FOUNDATION_EXPORT const unsigned char yogaVersionString[]; + diff --git a/Frameworks/Yoga.xcframework/ios-arm64_x86_64-simulator/Headers/Yoga.modulemap b/Frameworks/Yoga.xcframework/ios-arm64_x86_64-simulator/Headers/Yoga.modulemap new file mode 100644 index 0000000..b47796c --- /dev/null +++ b/Frameworks/Yoga.xcframework/ios-arm64_x86_64-simulator/Headers/Yoga.modulemap @@ -0,0 +1,6 @@ +module yoga { + umbrella header "Yoga-umbrella.h" + + export * + module * { export * } +} diff --git a/Frameworks/Yoga.xcframework/ios-arm64_x86_64-simulator/Headers/yoga/YGEnums.h b/Frameworks/Yoga.xcframework/ios-arm64_x86_64-simulator/Headers/yoga/YGEnums.h new file mode 100644 index 0000000..3dc458d --- /dev/null +++ b/Frameworks/Yoga.xcframework/ios-arm64_x86_64-simulator/Headers/yoga/YGEnums.h @@ -0,0 +1,155 @@ +/* + * 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. + */ + +#pragma once + +#include "YGMacros.h" + +#ifdef __cplusplus +namespace facebook { +namespace yoga { +namespace enums { + +template +constexpr int count(); // can't use `= delete` due to a defect in clang < 3.9 + +namespace detail { +template +constexpr int n() { + return sizeof...(xs); +} +} // namespace detail + +} // namespace enums +} // namespace yoga +} // namespace facebook +#endif + +#define YG_ENUM_DECL(NAME, ...) \ + typedef YG_ENUM_BEGIN(NAME){__VA_ARGS__} YG_ENUM_END(NAME); \ + WIN_EXPORT const char* NAME##ToString(NAME); + +#ifdef __cplusplus +#define YG_ENUM_SEQ_DECL(NAME, ...) \ + YG_ENUM_DECL(NAME, __VA_ARGS__) \ + YG_EXTERN_C_END \ + namespace facebook { \ + namespace yoga { \ + namespace enums { \ + template <> \ + constexpr int count() { \ + return detail::n<__VA_ARGS__>(); \ + } \ + } \ + } \ + } \ + YG_EXTERN_C_BEGIN +#else +#define YG_ENUM_SEQ_DECL YG_ENUM_DECL +#endif + +YG_EXTERN_C_BEGIN + +YG_ENUM_SEQ_DECL( + YGAlign, + YGAlignAuto, + YGAlignFlexStart, + YGAlignCenter, + YGAlignFlexEnd, + YGAlignStretch, + YGAlignBaseline, + YGAlignSpaceBetween, + YGAlignSpaceAround); + +YG_ENUM_SEQ_DECL(YGDimension, YGDimensionWidth, YGDimensionHeight) + +YG_ENUM_SEQ_DECL( + YGDirection, + YGDirectionInherit, + YGDirectionLTR, + YGDirectionRTL) + +YG_ENUM_SEQ_DECL(YGDisplay, YGDisplayFlex, YGDisplayNone) + +YG_ENUM_SEQ_DECL( + YGEdge, + YGEdgeLeft, + YGEdgeTop, + YGEdgeRight, + YGEdgeBottom, + YGEdgeStart, + YGEdgeEnd, + YGEdgeHorizontal, + YGEdgeVertical, + YGEdgeAll) + +YG_ENUM_SEQ_DECL(YGExperimentalFeature, YGExperimentalFeatureWebFlexBasis) + +YG_ENUM_SEQ_DECL( + YGFlexDirection, + YGFlexDirectionColumn, + YGFlexDirectionColumnReverse, + YGFlexDirectionRow, + YGFlexDirectionRowReverse) + +YG_ENUM_SEQ_DECL( + YGJustify, + YGJustifyFlexStart, + YGJustifyCenter, + YGJustifyFlexEnd, + YGJustifySpaceBetween, + YGJustifySpaceAround, + YGJustifySpaceEvenly) + +YG_ENUM_SEQ_DECL( + YGLogLevel, + YGLogLevelError, + YGLogLevelWarn, + YGLogLevelInfo, + YGLogLevelDebug, + YGLogLevelVerbose, + YGLogLevelFatal) + +YG_ENUM_SEQ_DECL( + YGMeasureMode, + YGMeasureModeUndefined, + YGMeasureModeExactly, + YGMeasureModeAtMost) + +YG_ENUM_SEQ_DECL(YGNodeType, YGNodeTypeDefault, YGNodeTypeText) + +YG_ENUM_SEQ_DECL( + YGOverflow, + YGOverflowVisible, + YGOverflowHidden, + YGOverflowScroll) + +YG_ENUM_SEQ_DECL( + YGPositionType, + YGPositionTypeStatic, + YGPositionTypeRelative, + YGPositionTypeAbsolute) + +YG_ENUM_DECL( + YGPrintOptions, + YGPrintOptionsLayout = 1, + YGPrintOptionsStyle = 2, + YGPrintOptionsChildren = 4) + +YG_ENUM_SEQ_DECL( + YGUnit, + YGUnitUndefined, + YGUnitPoint, + YGUnitPercent, + YGUnitAuto) + +YG_ENUM_SEQ_DECL(YGWrap, YGWrapNoWrap, YGWrapWrap, YGWrapWrapReverse) + +YG_EXTERN_C_END + +#undef YG_ENUM_DECL +#undef YG_ENUM_SEQ_DECL diff --git a/Frameworks/Yoga.xcframework/ios-arm64_x86_64-simulator/Headers/yoga/YGMacros.h b/Frameworks/Yoga.xcframework/ios-arm64_x86_64-simulator/Headers/yoga/YGMacros.h new file mode 100644 index 0000000..c6917f1 --- /dev/null +++ b/Frameworks/Yoga.xcframework/ios-arm64_x86_64-simulator/Headers/yoga/YGMacros.h @@ -0,0 +1,53 @@ +/* + * 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. + */ + +#pragma once + +#ifdef __cplusplus +#define YG_EXTERN_C_BEGIN extern "C" { +#define YG_EXTERN_C_END } +#else +#define YG_EXTERN_C_BEGIN +#define YG_EXTERN_C_END +#endif + +#ifdef _WINDLL +#define WIN_EXPORT __declspec(dllexport) +#else +#define WIN_EXPORT +#endif + +#ifndef YOGA_EXPORT +#ifdef _MSC_VER +#define YOGA_EXPORT +#else +#define YOGA_EXPORT __attribute__((visibility("default"))) +#endif +#endif + +#ifdef NS_ENUM +// Cannot use NSInteger as NSInteger has a different size than int (which is the +// default type of a enum). Therefor when linking the Yoga C library into obj-c +// the header is a missmatch for the Yoga ABI. +#define YG_ENUM_BEGIN(name) NS_ENUM(int, name) +#define YG_ENUM_END(name) +#else +#define YG_ENUM_BEGIN(name) enum name +#define YG_ENUM_END(name) name +#endif + +#ifdef __GNUC__ +#define YG_DEPRECATED __attribute__((deprecated)) +#elif defined(_MSC_VER) +#define YG_DEPRECATED __declspec(deprecated) +#elif __cplusplus >= 201402L +#if defined(__has_cpp_attribute) +#if __has_cpp_attribute(deprecated) +#define YG_DEPRECATED [[deprecated]] +#endif +#endif +#endif diff --git a/Frameworks/Yoga.xcframework/ios-arm64_x86_64-simulator/Headers/yoga/YGNode.h b/Frameworks/Yoga.xcframework/ios-arm64_x86_64-simulator/Headers/yoga/YGNode.h new file mode 100644 index 0000000..4b6e627 --- /dev/null +++ b/Frameworks/Yoga.xcframework/ios-arm64_x86_64-simulator/Headers/yoga/YGNode.h @@ -0,0 +1,348 @@ +/* + * 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. + */ + +#pragma once + +#ifdef __cplusplus + +#include +#include +#include "BitUtils.h" +#include "CompactValue.h" +#include "YGConfig.h" +#include "YGLayout.h" +#include "YGStyle.h" +#include "YGMacros.h" +#include "Yoga-internal.h" + +YGConfigRef YGConfigGetDefault(); + +struct YOGA_EXPORT YGNode { + using MeasureWithContextFn = + YGSize (*)(YGNode*, float, YGMeasureMode, float, YGMeasureMode, void*); + using BaselineWithContextFn = float (*)(YGNode*, float, float, void*); + using PrintWithContextFn = void (*)(YGNode*, void*); + +private: + static constexpr size_t hasNewLayout_ = 0; + static constexpr size_t isReferenceBaseline_ = 1; + static constexpr size_t isDirty_ = 2; + static constexpr size_t nodeType_ = 3; + static constexpr size_t measureUsesContext_ = 4; + static constexpr size_t baselineUsesContext_ = 5; + static constexpr size_t printUsesContext_ = 6; + static constexpr size_t useWebDefaults_ = 7; + + void* context_ = nullptr; + uint8_t flags = 1; + uint8_t reserved_ = 0; + union { + YGMeasureFunc noContext; + MeasureWithContextFn withContext; + } measure_ = {nullptr}; + union { + YGBaselineFunc noContext; + BaselineWithContextFn withContext; + } baseline_ = {nullptr}; + union { + YGPrintFunc noContext; + PrintWithContextFn withContext; + } print_ = {nullptr}; + YGDirtiedFunc dirtied_ = nullptr; + YGStyle style_ = {}; + YGLayout layout_ = {}; + uint32_t lineIndex_ = 0; + YGNodeRef owner_ = nullptr; + YGVector children_ = {}; + YGConfigRef config_; + std::array resolvedDimensions_ = { + {YGValueUndefined, YGValueUndefined}}; + + YGFloatOptional relativePosition( + const YGFlexDirection axis, + const float axisSize) const; + + void setMeasureFunc(decltype(measure_)); + void setBaselineFunc(decltype(baseline_)); + + void useWebDefaults() { + facebook::yoga::detail::setBooleanData(flags, useWebDefaults_, true); + style_.flexDirection() = YGFlexDirectionRow; + style_.alignContent() = YGAlignStretch; + } + + // DANGER DANGER DANGER! + // If the node assigned to has children, we'd either have to deallocate + // them (potentially incorrect) or ignore them (danger of leaks). Only ever + // use this after checking that there are no children. + // DO NOT CHANGE THE VISIBILITY OF THIS METHOD! + YGNode& operator=(YGNode&&) = default; + + using CompactValue = facebook::yoga::detail::CompactValue; + +public: + YGNode() : YGNode{YGConfigGetDefault()} {} + explicit YGNode(const YGConfigRef config) : config_{config} { + if (config->useWebDefaults) { + useWebDefaults(); + } + }; + ~YGNode() = default; // cleanup of owner/children relationships in YGNodeFree + + YGNode(YGNode&&); + + // Does not expose true value semantics, as children are not cloned eagerly. + // Should we remove this? + YGNode(const YGNode& node) = default; + + // for RB fabric + YGNode(const YGNode& node, YGConfigRef config); + + // assignment means potential leaks of existing children, or alternatively + // freeing unowned memory, double free, or freeing stack memory. + YGNode& operator=(const YGNode&) = delete; + + // Getters + void* getContext() const { return context_; } + + uint8_t& reserved() { return reserved_; } + uint8_t reserved() const { return reserved_; } + + void print(void*); + + bool getHasNewLayout() const { + return facebook::yoga::detail::getBooleanData(flags, hasNewLayout_); + } + + YGNodeType getNodeType() const { + return facebook::yoga::detail::getEnumData(flags, nodeType_); + } + + bool hasMeasureFunc() const noexcept { return measure_.noContext != nullptr; } + + YGSize measure(float, YGMeasureMode, float, YGMeasureMode, void*); + + bool hasBaselineFunc() const noexcept { + return baseline_.noContext != nullptr; + } + + float baseline(float width, float height, void* layoutContext); + + YGDirtiedFunc getDirtied() const { return dirtied_; } + + // For Performance reasons passing as reference. + YGStyle& getStyle() { return style_; } + + const YGStyle& getStyle() const { return style_; } + + // For Performance reasons passing as reference. + YGLayout& getLayout() { return layout_; } + + const YGLayout& getLayout() const { return layout_; } + + uint32_t getLineIndex() const { return lineIndex_; } + + bool isReferenceBaseline() { + return facebook::yoga::detail::getBooleanData(flags, isReferenceBaseline_); + } + + // returns the YGNodeRef that owns this YGNode. An owner is used to identify + // the YogaTree that a YGNode belongs to. This method will return the parent + // of the YGNode when a YGNode only belongs to one YogaTree or nullptr when + // the YGNode is shared between two or more YogaTrees. + YGNodeRef getOwner() const { return owner_; } + + // Deprecated, use getOwner() instead. + YGNodeRef getParent() const { return getOwner(); } + + const YGVector& getChildren() const { return children_; } + + // Applies a callback to all children, after cloning them if they are not + // owned. + template + void iterChildrenAfterCloningIfNeeded(T callback, void* cloneContext) { + int i = 0; + for (YGNodeRef& child : children_) { + if (child->getOwner() != this) { + child = config_->cloneNode(child, this, i, cloneContext); + child->setOwner(this); + } + i += 1; + + callback(child, cloneContext); + } + } + + YGNodeRef getChild(uint32_t index) const { return children_.at(index); } + + YGConfigRef getConfig() const { return config_; } + + bool isDirty() const { + return facebook::yoga::detail::getBooleanData(flags, isDirty_); + } + + std::array getResolvedDimensions() const { + return resolvedDimensions_; + } + + YGValue getResolvedDimension(int index) const { + return resolvedDimensions_[index]; + } + + static CompactValue computeEdgeValueForColumn( + const YGStyle::Edges& edges, + YGEdge edge, + CompactValue defaultValue); + + static CompactValue computeEdgeValueForRow( + const YGStyle::Edges& edges, + YGEdge rowEdge, + YGEdge edge, + CompactValue defaultValue); + + // Methods related to positions, margin, padding and border + YGFloatOptional getLeadingPosition( + const YGFlexDirection axis, + const float axisSize) const; + bool isLeadingPositionDefined(const YGFlexDirection axis) const; + bool isTrailingPosDefined(const YGFlexDirection axis) const; + YGFloatOptional getTrailingPosition( + const YGFlexDirection axis, + const float axisSize) const; + YGFloatOptional getLeadingMargin( + const YGFlexDirection axis, + const float widthSize) const; + YGFloatOptional getTrailingMargin( + const YGFlexDirection axis, + const float widthSize) const; + float getLeadingBorder(const YGFlexDirection flexDirection) const; + float getTrailingBorder(const YGFlexDirection flexDirection) const; + YGFloatOptional getLeadingPadding( + const YGFlexDirection axis, + const float widthSize) const; + YGFloatOptional getTrailingPadding( + const YGFlexDirection axis, + const float widthSize) const; + YGFloatOptional getLeadingPaddingAndBorder( + const YGFlexDirection axis, + const float widthSize) const; + YGFloatOptional getTrailingPaddingAndBorder( + const YGFlexDirection axis, + const float widthSize) const; + YGFloatOptional getMarginForAxis( + const YGFlexDirection axis, + const float widthSize) const; + // Setters + + void setContext(void* context) { context_ = context; } + + void setPrintFunc(YGPrintFunc printFunc) { + print_.noContext = printFunc; + facebook::yoga::detail::setBooleanData(flags, printUsesContext_, false); + } + void setPrintFunc(PrintWithContextFn printFunc) { + print_.withContext = printFunc; + facebook::yoga::detail::setBooleanData(flags, printUsesContext_, true); + } + void setPrintFunc(std::nullptr_t) { setPrintFunc(YGPrintFunc{nullptr}); } + + void setHasNewLayout(bool hasNewLayout) { + facebook::yoga::detail::setBooleanData(flags, hasNewLayout_, hasNewLayout); + } + + void setNodeType(YGNodeType nodeType) { + return facebook::yoga::detail::setEnumData( + flags, nodeType_, nodeType); + } + + void setMeasureFunc(YGMeasureFunc measureFunc); + void setMeasureFunc(MeasureWithContextFn); + void setMeasureFunc(std::nullptr_t) { + return setMeasureFunc(YGMeasureFunc{nullptr}); + } + + void setBaselineFunc(YGBaselineFunc baseLineFunc) { + facebook::yoga::detail::setBooleanData(flags, baselineUsesContext_, false); + baseline_.noContext = baseLineFunc; + } + void setBaselineFunc(BaselineWithContextFn baseLineFunc) { + facebook::yoga::detail::setBooleanData(flags, baselineUsesContext_, true); + baseline_.withContext = baseLineFunc; + } + void setBaselineFunc(std::nullptr_t) { + return setBaselineFunc(YGBaselineFunc{nullptr}); + } + + void setDirtiedFunc(YGDirtiedFunc dirtiedFunc) { dirtied_ = dirtiedFunc; } + + void setStyle(const YGStyle& style) { style_ = style; } + + void setLayout(const YGLayout& layout) { layout_ = layout; } + + void setLineIndex(uint32_t lineIndex) { lineIndex_ = lineIndex; } + + void setIsReferenceBaseline(bool isReferenceBaseline) { + facebook::yoga::detail::setBooleanData( + flags, isReferenceBaseline_, isReferenceBaseline); + } + + void setOwner(YGNodeRef owner) { owner_ = owner; } + + void setChildren(const YGVector& children) { children_ = children; } + + // TODO: rvalue override for setChildren + + YG_DEPRECATED void setConfig(YGConfigRef config) { config_ = config; } + + void setDirty(bool isDirty); + void setLayoutLastOwnerDirection(YGDirection direction); + void setLayoutComputedFlexBasis(const YGFloatOptional computedFlexBasis); + void setLayoutComputedFlexBasisGeneration( + uint32_t computedFlexBasisGeneration); + void setLayoutMeasuredDimension(float measuredDimension, int index); + void setLayoutHadOverflow(bool hadOverflow); + void setLayoutDimension(float dimension, int index); + void setLayoutDirection(YGDirection direction); + void setLayoutMargin(float margin, int index); + void setLayoutBorder(float border, int index); + void setLayoutPadding(float padding, int index); + void setLayoutPosition(float position, int index); + void setPosition( + const YGDirection direction, + const float mainSize, + const float crossSize, + const float ownerWidth); + void setLayoutDoesLegacyFlagAffectsLayout(bool doesLegacyFlagAffectsLayout); + void setLayoutDidUseLegacyFlag(bool didUseLegacyFlag); + void markDirtyAndPropogateDownwards(); + + // Other methods + YGValue marginLeadingValue(const YGFlexDirection axis) const; + YGValue marginTrailingValue(const YGFlexDirection axis) const; + YGValue resolveFlexBasisPtr() const; + void resolveDimension(); + YGDirection resolveDirection(const YGDirection ownerDirection); + void clearChildren(); + /// Replaces the occurrences of oldChild with newChild + void replaceChild(YGNodeRef oldChild, YGNodeRef newChild); + void replaceChild(YGNodeRef child, uint32_t index); + void insertChild(YGNodeRef child, uint32_t index); + /// Removes the first occurrence of child + bool removeChild(YGNodeRef child); + void removeChild(uint32_t index); + + void cloneChildrenIfNeeded(void*); + void markDirtyAndPropogate(); + float resolveFlexGrow() const; + float resolveFlexShrink() const; + bool isNodeFlexible(); + bool didUseLegacyFlag(); + bool isLayoutTreeEqualToNode(const YGNode& node) const; + void reset(); +}; + +#endif diff --git a/Frameworks/Yoga.xcframework/ios-arm64_x86_64-simulator/Headers/yoga/YGStyle.h b/Frameworks/Yoga.xcframework/ios-arm64_x86_64-simulator/Headers/yoga/YGStyle.h new file mode 100644 index 0000000..aab7599 --- /dev/null +++ b/Frameworks/Yoga.xcframework/ios-arm64_x86_64-simulator/Headers/yoga/YGStyle.h @@ -0,0 +1,236 @@ +/* + * 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. + */ + +#pragma once + +#ifdef __cplusplus + +#include +#include +#include +#include +#include "CompactValue.h" +#include "YGEnums.h" +#include "YGFloatOptional.h" +#include "Yoga-internal.h" +#include "Yoga.h" +#include "BitUtils.h" + +class YOGA_EXPORT YGStyle { + template + using Values = + facebook::yoga::detail::Values()>; + using CompactValue = facebook::yoga::detail::CompactValue; + +public: + using Dimensions = Values; + using Edges = Values; + + template + struct BitfieldRef { + YGStyle& style; + size_t offset; + operator T() const { + return facebook::yoga::detail::getEnumData(style.flags, offset); + } + BitfieldRef& operator=(T x) { + facebook::yoga::detail::setEnumData(style.flags, offset, x); + return *this; + } + }; + + template + struct Ref { + YGStyle& style; + operator T() const { return style.*Prop; } + Ref& operator=(T value) { + style.*Prop = value; + return *this; + } + }; + + template YGStyle::*Prop> + struct IdxRef { + struct Ref { + YGStyle& style; + Idx idx; + operator CompactValue() const { return (style.*Prop)[idx]; } + operator YGValue() const { return (style.*Prop)[idx]; } + Ref& operator=(CompactValue value) { + (style.*Prop)[idx] = value; + return *this; + } + }; + + YGStyle& style; + IdxRef& operator=(const Values& values) { + style.*Prop = values; + return *this; + } + operator const Values&() const { return style.*Prop; } + Ref operator[](Idx idx) { return {style, idx}; } + CompactValue operator[](Idx idx) const { return (style.*Prop)[idx]; } + }; + + YGStyle() { + alignContent() = YGAlignFlexStart; + alignItems() = YGAlignStretch; + } + ~YGStyle() = default; + +private: + static constexpr size_t directionOffset = 0; + static constexpr size_t flexdirectionOffset = + directionOffset + facebook::yoga::detail::bitWidthFn(); + static constexpr size_t justifyContentOffset = flexdirectionOffset + + facebook::yoga::detail::bitWidthFn(); + static constexpr size_t alignContentOffset = + justifyContentOffset + facebook::yoga::detail::bitWidthFn(); + static constexpr size_t alignItemsOffset = + alignContentOffset + facebook::yoga::detail::bitWidthFn(); + static constexpr size_t alignSelfOffset = + alignItemsOffset + facebook::yoga::detail::bitWidthFn(); + static constexpr size_t positionTypeOffset = + alignSelfOffset + facebook::yoga::detail::bitWidthFn(); + static constexpr size_t flexWrapOffset = + positionTypeOffset + facebook::yoga::detail::bitWidthFn(); + static constexpr size_t overflowOffset = + flexWrapOffset + facebook::yoga::detail::bitWidthFn(); + static constexpr size_t displayOffset = + overflowOffset + facebook::yoga::detail::bitWidthFn(); + + uint32_t flags = 0; + + YGFloatOptional flex_ = {}; + YGFloatOptional flexGrow_ = {}; + YGFloatOptional flexShrink_ = {}; + CompactValue flexBasis_ = CompactValue::ofAuto(); + Edges margin_ = {}; + Edges position_ = {}; + Edges padding_ = {}; + Edges border_ = {}; + Dimensions dimensions_{CompactValue::ofAuto()}; + Dimensions minDimensions_ = {}; + Dimensions maxDimensions_ = {}; + // Yoga specific properties, not compatible with flexbox specification + YGFloatOptional aspectRatio_ = {}; + +public: + // for library users needing a type + using ValueRepr = std::remove_reference::type; + + YGDirection direction() const { + return facebook::yoga::detail::getEnumData( + flags, directionOffset); + } + BitfieldRef direction() { return {*this, directionOffset}; } + + YGFlexDirection flexDirection() const { + return facebook::yoga::detail::getEnumData( + flags, flexdirectionOffset); + } + BitfieldRef flexDirection() { + return {*this, flexdirectionOffset}; + } + + YGJustify justifyContent() const { + return facebook::yoga::detail::getEnumData( + flags, justifyContentOffset); + } + BitfieldRef justifyContent() { + return {*this, justifyContentOffset}; + } + + YGAlign alignContent() const { + return facebook::yoga::detail::getEnumData( + flags, alignContentOffset); + } + BitfieldRef alignContent() { return {*this, alignContentOffset}; } + + YGAlign alignItems() const { + return facebook::yoga::detail::getEnumData( + flags, alignItemsOffset); + } + BitfieldRef alignItems() { return {*this, alignItemsOffset}; } + + YGAlign alignSelf() const { + return facebook::yoga::detail::getEnumData(flags, alignSelfOffset); + } + BitfieldRef alignSelf() { return {*this, alignSelfOffset}; } + + YGPositionType positionType() const { + return facebook::yoga::detail::getEnumData( + flags, positionTypeOffset); + } + BitfieldRef positionType() { + return {*this, positionTypeOffset}; + } + + YGWrap flexWrap() const { + return facebook::yoga::detail::getEnumData(flags, flexWrapOffset); + } + BitfieldRef flexWrap() { return {*this, flexWrapOffset}; } + + YGOverflow overflow() const { + return facebook::yoga::detail::getEnumData( + flags, overflowOffset); + } + BitfieldRef overflow() { return {*this, overflowOffset}; } + + YGDisplay display() const { + return facebook::yoga::detail::getEnumData(flags, displayOffset); + } + BitfieldRef display() { return {*this, displayOffset}; } + + YGFloatOptional flex() const { return flex_; } + Ref flex() { return {*this}; } + + YGFloatOptional flexGrow() const { return flexGrow_; } + Ref flexGrow() { return {*this}; } + + YGFloatOptional flexShrink() const { return flexShrink_; } + Ref flexShrink() { return {*this}; } + + CompactValue flexBasis() const { return flexBasis_; } + Ref flexBasis() { return {*this}; } + + const Edges& margin() const { return margin_; } + IdxRef margin() { return {*this}; } + + const Edges& position() const { return position_; } + IdxRef position() { return {*this}; } + + const Edges& padding() const { return padding_; } + IdxRef padding() { return {*this}; } + + const Edges& border() const { return border_; } + IdxRef border() { return {*this}; } + + const Dimensions& dimensions() const { return dimensions_; } + IdxRef dimensions() { return {*this}; } + + const Dimensions& minDimensions() const { return minDimensions_; } + IdxRef minDimensions() { + return {*this}; + } + + const Dimensions& maxDimensions() const { return maxDimensions_; } + IdxRef maxDimensions() { + return {*this}; + } + + // Yoga specific properties, not compatible with flexbox specification + YGFloatOptional aspectRatio() const { return aspectRatio_; } + Ref aspectRatio() { return {*this}; } +}; + +YOGA_EXPORT bool operator==(const YGStyle& lhs, const YGStyle& rhs); +YOGA_EXPORT inline bool operator!=(const YGStyle& lhs, const YGStyle& rhs) { + return !(lhs == rhs); +} + +#endif diff --git a/Frameworks/Yoga.xcframework/ios-arm64_x86_64-simulator/Headers/yoga/YGValue.h b/Frameworks/Yoga.xcframework/ios-arm64_x86_64-simulator/Headers/yoga/YGValue.h new file mode 100644 index 0000000..a200097 --- /dev/null +++ b/Frameworks/Yoga.xcframework/ios-arm64_x86_64-simulator/Headers/yoga/YGValue.h @@ -0,0 +1,95 @@ +/* + * 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. + */ + +#pragma once + +#include +#include "YGEnums.h" +#include "YGMacros.h" + +#if defined(_MSC_VER) && defined(__clang__) +#define COMPILING_WITH_CLANG_ON_WINDOWS +#endif +#if defined(COMPILING_WITH_CLANG_ON_WINDOWS) +#include +constexpr float YGUndefined = std::numeric_limits::quiet_NaN(); +#else +YG_EXTERN_C_BEGIN + +// Not defined in MSVC++ +#ifndef NAN +static const uint32_t __nan = 0x7fc00000; +#define NAN (*(const float*) __nan) +#endif + +#define YGUndefined NAN +#endif + +typedef struct YGValue { + float value; + YGUnit unit; +} YGValue; + +YOGA_EXPORT extern const YGValue YGValueAuto; +YOGA_EXPORT extern const YGValue YGValueUndefined; +YOGA_EXPORT extern const YGValue YGValueZero; + +#if !defined(COMPILING_WITH_CLANG_ON_WINDOWS) +YG_EXTERN_C_END +#endif +#undef COMPILING_WITH_CLANG_ON_WINDOWS + +#ifdef __cplusplus + +inline bool operator==(const YGValue& lhs, const YGValue& rhs) { + if (lhs.unit != rhs.unit) { + return false; + } + + switch (lhs.unit) { + case YGUnitUndefined: + case YGUnitAuto: + return true; + case YGUnitPoint: + case YGUnitPercent: + return lhs.value == rhs.value; + } + + return false; +} + +inline bool operator!=(const YGValue& lhs, const YGValue& rhs) { + return !(lhs == rhs); +} + +inline YGValue operator-(const YGValue& value) { + return {-value.value, value.unit}; +} + +namespace facebook { +namespace yoga { +namespace literals { + +inline YGValue operator"" _pt(long double value) { + return YGValue{static_cast(value), YGUnitPoint}; +} +inline YGValue operator"" _pt(unsigned long long value) { + return operator"" _pt(static_cast(value)); +} + +inline YGValue operator"" _percent(long double value) { + return YGValue{static_cast(value), YGUnitPercent}; +} +inline YGValue operator"" _percent(unsigned long long value) { + return operator"" _percent(static_cast(value)); +} + +} // namespace literals +} // namespace yoga +} // namespace facebook + +#endif diff --git a/Frameworks/Yoga.xcframework/ios-arm64_x86_64-simulator/Headers/yoga/Yoga.h b/Frameworks/Yoga.xcframework/ios-arm64_x86_64-simulator/Headers/yoga/Yoga.h new file mode 100644 index 0000000..86cd65e --- /dev/null +++ b/Frameworks/Yoga.xcframework/ios-arm64_x86_64-simulator/Headers/yoga/Yoga.h @@ -0,0 +1,374 @@ +/* + * 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. + */ + +#pragma once + +#include +#include +#include +#include +#include +#include + +#ifndef __cplusplus +#include +#endif + +#include "YGEnums.h" +#include "YGMacros.h" +#include "YGValue.h" + +YG_EXTERN_C_BEGIN + +typedef struct YGSize { + float width; + float height; +} YGSize; + +typedef struct YGConfig* YGConfigRef; + +typedef struct YGNode* YGNodeRef; +typedef const struct YGNode* YGNodeConstRef; + +typedef YGSize (*YGMeasureFunc)( + YGNodeRef node, + float width, + YGMeasureMode widthMode, + float height, + YGMeasureMode heightMode); +typedef float (*YGBaselineFunc)(YGNodeRef node, float width, float height); +typedef void (*YGDirtiedFunc)(YGNodeRef node); +typedef void (*YGPrintFunc)(YGNodeRef node); +typedef void (*YGNodeCleanupFunc)(YGNodeRef node); +typedef int (*YGLogger)( + YGConfigRef config, + YGNodeRef node, + YGLogLevel level, + const char* format, + va_list args); +typedef YGNodeRef ( + *YGCloneNodeFunc)(YGNodeRef oldNode, YGNodeRef owner, int childIndex); + +// YGNode +WIN_EXPORT YGNodeRef YGNodeNew(void); +WIN_EXPORT YGNodeRef YGNodeNewWithConfig(YGConfigRef config); +WIN_EXPORT YGNodeRef YGNodeClone(YGNodeRef node); +WIN_EXPORT void YGNodeFree(YGNodeRef node); +WIN_EXPORT void YGNodeFreeRecursiveWithCleanupFunc( + YGNodeRef node, + YGNodeCleanupFunc cleanup); +WIN_EXPORT void YGNodeFreeRecursive(YGNodeRef node); +WIN_EXPORT void YGNodeReset(YGNodeRef node); + +WIN_EXPORT void YGNodeInsertChild( + YGNodeRef node, + YGNodeRef child, + uint32_t index); + +WIN_EXPORT void YGNodeSwapChild( + YGNodeRef node, + YGNodeRef child, + uint32_t index); + +WIN_EXPORT void YGNodeRemoveChild(YGNodeRef node, YGNodeRef child); +WIN_EXPORT void YGNodeRemoveAllChildren(YGNodeRef node); +WIN_EXPORT YGNodeRef YGNodeGetChild(YGNodeRef node, uint32_t index); +WIN_EXPORT YGNodeRef YGNodeGetOwner(YGNodeRef node); +WIN_EXPORT YGNodeRef YGNodeGetParent(YGNodeRef node); +WIN_EXPORT uint32_t YGNodeGetChildCount(YGNodeRef node); +WIN_EXPORT void YGNodeSetChildren( + YGNodeRef owner, + const YGNodeRef children[], + uint32_t count); + +WIN_EXPORT void YGNodeSetIsReferenceBaseline( + YGNodeRef node, + bool isReferenceBaseline); + +WIN_EXPORT bool YGNodeIsReferenceBaseline(YGNodeRef node); + +WIN_EXPORT void YGNodeCalculateLayout( + YGNodeRef node, + float availableWidth, + float availableHeight, + YGDirection ownerDirection); + +// Mark a node as dirty. Only valid for nodes with a custom measure function +// set. +// +// Yoga knows when to mark all other nodes as dirty but because nodes with +// measure functions depend on information not known to Yoga they must perform +// this dirty marking manually. +WIN_EXPORT void YGNodeMarkDirty(YGNodeRef node); + +// Marks the current node and all its descendants as dirty. +// +// Intended to be used for Yoga benchmarks. Don't use in production, as calling +// `YGCalculateLayout` will cause the recalculation of each and every node. +WIN_EXPORT void YGNodeMarkDirtyAndPropogateToDescendants(YGNodeRef node); + +WIN_EXPORT void YGNodePrint(YGNodeRef node, YGPrintOptions options); + +WIN_EXPORT bool YGFloatIsUndefined(float value); + +WIN_EXPORT bool YGNodeCanUseCachedMeasurement( + YGMeasureMode widthMode, + float width, + YGMeasureMode heightMode, + float height, + YGMeasureMode lastWidthMode, + float lastWidth, + YGMeasureMode lastHeightMode, + float lastHeight, + float lastComputedWidth, + float lastComputedHeight, + float marginRow, + float marginColumn, + YGConfigRef config); + +WIN_EXPORT void YGNodeCopyStyle(YGNodeRef dstNode, YGNodeRef srcNode); + +WIN_EXPORT void* YGNodeGetContext(YGNodeRef node); +WIN_EXPORT void YGNodeSetContext(YGNodeRef node, void* context); +void YGConfigSetPrintTreeFlag(YGConfigRef config, bool enabled); +bool YGNodeHasMeasureFunc(YGNodeRef node); +WIN_EXPORT void YGNodeSetMeasureFunc(YGNodeRef node, YGMeasureFunc measureFunc); +bool YGNodeHasBaselineFunc(YGNodeRef node); +void YGNodeSetBaselineFunc(YGNodeRef node, YGBaselineFunc baselineFunc); +YGDirtiedFunc YGNodeGetDirtiedFunc(YGNodeRef node); +void YGNodeSetDirtiedFunc(YGNodeRef node, YGDirtiedFunc dirtiedFunc); +void YGNodeSetPrintFunc(YGNodeRef node, YGPrintFunc printFunc); +WIN_EXPORT bool YGNodeGetHasNewLayout(YGNodeRef node); +WIN_EXPORT void YGNodeSetHasNewLayout(YGNodeRef node, bool hasNewLayout); +YGNodeType YGNodeGetNodeType(YGNodeRef node); +void YGNodeSetNodeType(YGNodeRef node, YGNodeType nodeType); +WIN_EXPORT bool YGNodeIsDirty(YGNodeRef node); +bool YGNodeLayoutGetDidUseLegacyFlag(YGNodeRef node); + +WIN_EXPORT void YGNodeStyleSetDirection(YGNodeRef node, YGDirection direction); +WIN_EXPORT YGDirection YGNodeStyleGetDirection(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetFlexDirection( + YGNodeRef node, + YGFlexDirection flexDirection); +WIN_EXPORT YGFlexDirection YGNodeStyleGetFlexDirection(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetJustifyContent( + YGNodeRef node, + YGJustify justifyContent); +WIN_EXPORT YGJustify YGNodeStyleGetJustifyContent(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetAlignContent( + YGNodeRef node, + YGAlign alignContent); +WIN_EXPORT YGAlign YGNodeStyleGetAlignContent(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetAlignItems(YGNodeRef node, YGAlign alignItems); +WIN_EXPORT YGAlign YGNodeStyleGetAlignItems(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetAlignSelf(YGNodeRef node, YGAlign alignSelf); +WIN_EXPORT YGAlign YGNodeStyleGetAlignSelf(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetPositionType( + YGNodeRef node, + YGPositionType positionType); +WIN_EXPORT YGPositionType YGNodeStyleGetPositionType(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetFlexWrap(YGNodeRef node, YGWrap flexWrap); +WIN_EXPORT YGWrap YGNodeStyleGetFlexWrap(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetOverflow(YGNodeRef node, YGOverflow overflow); +WIN_EXPORT YGOverflow YGNodeStyleGetOverflow(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetDisplay(YGNodeRef node, YGDisplay display); +WIN_EXPORT YGDisplay YGNodeStyleGetDisplay(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetFlex(YGNodeRef node, float flex); +WIN_EXPORT float YGNodeStyleGetFlex(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetFlexGrow(YGNodeRef node, float flexGrow); +WIN_EXPORT float YGNodeStyleGetFlexGrow(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetFlexShrink(YGNodeRef node, float flexShrink); +WIN_EXPORT float YGNodeStyleGetFlexShrink(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetFlexBasis(YGNodeRef node, float flexBasis); +WIN_EXPORT void YGNodeStyleSetFlexBasisPercent(YGNodeRef node, float flexBasis); +WIN_EXPORT void YGNodeStyleSetFlexBasisAuto(YGNodeRef node); +WIN_EXPORT YGValue YGNodeStyleGetFlexBasis(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetPosition( + YGNodeRef node, + YGEdge edge, + float position); +WIN_EXPORT void YGNodeStyleSetPositionPercent( + YGNodeRef node, + YGEdge edge, + float position); +WIN_EXPORT YGValue YGNodeStyleGetPosition(YGNodeConstRef node, YGEdge edge); + +WIN_EXPORT void YGNodeStyleSetMargin(YGNodeRef node, YGEdge edge, float margin); +WIN_EXPORT void YGNodeStyleSetMarginPercent( + YGNodeRef node, + YGEdge edge, + float margin); +WIN_EXPORT void YGNodeStyleSetMarginAuto(YGNodeRef node, YGEdge edge); +WIN_EXPORT YGValue YGNodeStyleGetMargin(YGNodeConstRef node, YGEdge edge); + +WIN_EXPORT void YGNodeStyleSetPadding( + YGNodeRef node, + YGEdge edge, + float padding); +WIN_EXPORT void YGNodeStyleSetPaddingPercent( + YGNodeRef node, + YGEdge edge, + float padding); +WIN_EXPORT YGValue YGNodeStyleGetPadding(YGNodeConstRef node, YGEdge edge); + +WIN_EXPORT void YGNodeStyleSetBorder(YGNodeRef node, YGEdge edge, float border); +WIN_EXPORT float YGNodeStyleGetBorder(YGNodeConstRef node, YGEdge edge); + +WIN_EXPORT void YGNodeStyleSetWidth(YGNodeRef node, float width); +WIN_EXPORT void YGNodeStyleSetWidthPercent(YGNodeRef node, float width); +WIN_EXPORT void YGNodeStyleSetWidthAuto(YGNodeRef node); +WIN_EXPORT YGValue YGNodeStyleGetWidth(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetHeight(YGNodeRef node, float height); +WIN_EXPORT void YGNodeStyleSetHeightPercent(YGNodeRef node, float height); +WIN_EXPORT void YGNodeStyleSetHeightAuto(YGNodeRef node); +WIN_EXPORT YGValue YGNodeStyleGetHeight(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetMinWidth(YGNodeRef node, float minWidth); +WIN_EXPORT void YGNodeStyleSetMinWidthPercent(YGNodeRef node, float minWidth); +WIN_EXPORT YGValue YGNodeStyleGetMinWidth(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetMinHeight(YGNodeRef node, float minHeight); +WIN_EXPORT void YGNodeStyleSetMinHeightPercent(YGNodeRef node, float minHeight); +WIN_EXPORT YGValue YGNodeStyleGetMinHeight(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetMaxWidth(YGNodeRef node, float maxWidth); +WIN_EXPORT void YGNodeStyleSetMaxWidthPercent(YGNodeRef node, float maxWidth); +WIN_EXPORT YGValue YGNodeStyleGetMaxWidth(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetMaxHeight(YGNodeRef node, float maxHeight); +WIN_EXPORT void YGNodeStyleSetMaxHeightPercent(YGNodeRef node, float maxHeight); +WIN_EXPORT YGValue YGNodeStyleGetMaxHeight(YGNodeConstRef node); + +// Yoga specific properties, not compatible with flexbox specification Aspect +// ratio control the size of the undefined dimension of a node. Aspect ratio is +// encoded as a floating point value width/height. e.g. A value of 2 leads to a +// node with a width twice the size of its height while a value of 0.5 gives the +// opposite effect. +// +// - On a node with a set width/height aspect ratio control the size of the +// unset dimension +// - On a node with a set flex basis aspect ratio controls the size of the node +// in the cross axis if unset +// - On a node with a measure function aspect ratio works as though the measure +// function measures the flex basis +// - On a node with flex grow/shrink aspect ratio controls the size of the node +// in the cross axis if unset +// - Aspect ratio takes min/max dimensions into account +WIN_EXPORT void YGNodeStyleSetAspectRatio(YGNodeRef node, float aspectRatio); +WIN_EXPORT float YGNodeStyleGetAspectRatio(YGNodeConstRef node); + +WIN_EXPORT float YGNodeLayoutGetLeft(YGNodeRef node); +WIN_EXPORT float YGNodeLayoutGetTop(YGNodeRef node); +WIN_EXPORT float YGNodeLayoutGetRight(YGNodeRef node); +WIN_EXPORT float YGNodeLayoutGetBottom(YGNodeRef node); +WIN_EXPORT float YGNodeLayoutGetWidth(YGNodeRef node); +WIN_EXPORT float YGNodeLayoutGetHeight(YGNodeRef node); +WIN_EXPORT YGDirection YGNodeLayoutGetDirection(YGNodeRef node); +WIN_EXPORT bool YGNodeLayoutGetHadOverflow(YGNodeRef node); +bool YGNodeLayoutGetDidLegacyStretchFlagAffectLayout(YGNodeRef node); + +// Get the computed values for these nodes after performing layout. If they were +// set using point values then the returned value will be the same as +// YGNodeStyleGetXXX. However if they were set using a percentage value then the +// returned value is the computed value used during layout. +WIN_EXPORT float YGNodeLayoutGetMargin(YGNodeRef node, YGEdge edge); +WIN_EXPORT float YGNodeLayoutGetBorder(YGNodeRef node, YGEdge edge); +WIN_EXPORT float YGNodeLayoutGetPadding(YGNodeRef node, YGEdge edge); + +WIN_EXPORT void YGConfigSetLogger(YGConfigRef config, YGLogger logger); +WIN_EXPORT void YGAssert(bool condition, const char* message); +WIN_EXPORT void YGAssertWithNode( + YGNodeRef node, + bool condition, + const char* message); +WIN_EXPORT void YGAssertWithConfig( + YGConfigRef config, + bool condition, + const char* message); +// Set this to number of pixels in 1 point to round calculation results If you +// want to avoid rounding - set PointScaleFactor to 0 +WIN_EXPORT void YGConfigSetPointScaleFactor( + YGConfigRef config, + float pixelsInPoint); +void YGConfigSetShouldDiffLayoutWithoutLegacyStretchBehaviour( + YGConfigRef config, + bool shouldDiffLayout); + +// Yoga previously had an error where containers would take the maximum space +// possible instead of the minimum like they are supposed to. In practice this +// resulted in implicit behaviour similar to align-self: stretch; Because this +// was such a long-standing bug we must allow legacy users to switch back to +// this behaviour. +WIN_EXPORT void YGConfigSetUseLegacyStretchBehaviour( + YGConfigRef config, + bool useLegacyStretchBehaviour); + +// YGConfig +WIN_EXPORT YGConfigRef YGConfigNew(void); +WIN_EXPORT void YGConfigFree(YGConfigRef config); +WIN_EXPORT void YGConfigCopy(YGConfigRef dest, YGConfigRef src); +WIN_EXPORT int32_t YGConfigGetInstanceCount(void); + +WIN_EXPORT void YGConfigSetExperimentalFeatureEnabled( + YGConfigRef config, + YGExperimentalFeature feature, + bool enabled); +WIN_EXPORT bool YGConfigIsExperimentalFeatureEnabled( + YGConfigRef config, + YGExperimentalFeature feature); + +// Using the web defaults is the preferred configuration for new projects. Usage +// of non web defaults should be considered as legacy. +WIN_EXPORT void YGConfigSetUseWebDefaults(YGConfigRef config, bool enabled); +WIN_EXPORT bool YGConfigGetUseWebDefaults(YGConfigRef config); + +WIN_EXPORT void YGConfigSetCloneNodeFunc( + YGConfigRef config, + YGCloneNodeFunc callback); + +// Export only for C# +WIN_EXPORT YGConfigRef YGConfigGetDefault(void); + +WIN_EXPORT void YGConfigSetContext(YGConfigRef config, void* context); +WIN_EXPORT void* YGConfigGetContext(YGConfigRef config); + +WIN_EXPORT float YGRoundValueToPixelGrid( + double value, + double pointScaleFactor, + bool forceCeil, + bool forceFloor); + +YG_EXTERN_C_END + +#ifdef __cplusplus + +#include +#include + +// Calls f on each node in the tree including the given node argument. +void YGTraversePreOrder( + YGNodeRef node, + std::function&& f); + +void YGNodeSetChildren(YGNodeRef owner, const std::vector& children); + +#endif diff --git a/Frameworks/Yoga.xcframework/ios-arm64_x86_64-simulator/libYoga.a b/Frameworks/Yoga.xcframework/ios-arm64_x86_64-simulator/libYoga.a new file mode 100644 index 0000000..45a55b3 Binary files /dev/null and b/Frameworks/Yoga.xcframework/ios-arm64_x86_64-simulator/libYoga.a differ diff --git a/Frameworks/glog.xcframework/Info.plist b/Frameworks/glog.xcframework/Info.plist new file mode 100644 index 0000000..3feac22 --- /dev/null +++ b/Frameworks/glog.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libglog.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libglog.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libglog.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libglog.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/glog.xcframework/ios-arm64/Headers/glog/log_severity.h b/Frameworks/glog.xcframework/ios-arm64/Headers/glog/log_severity.h new file mode 100644 index 0000000..99945a4 --- /dev/null +++ b/Frameworks/glog.xcframework/ios-arm64/Headers/glog/log_severity.h @@ -0,0 +1,92 @@ +// Copyright (c) 2007, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef BASE_LOG_SEVERITY_H__ +#define BASE_LOG_SEVERITY_H__ + +// Annoying stuff for windows -- makes sure clients can import these functions +#ifndef GOOGLE_GLOG_DLL_DECL +# if defined(_WIN32) && !defined(__CYGWIN__) +# define GOOGLE_GLOG_DLL_DECL __declspec(dllimport) +# else +# define GOOGLE_GLOG_DLL_DECL +# endif +#endif + +// Variables of type LogSeverity are widely taken to lie in the range +// [0, NUM_SEVERITIES-1]. Be careful to preserve this assumption if +// you ever need to change their values or add a new severity. +typedef int LogSeverity; + +const int GLOG_INFO = 0, GLOG_WARNING = 1, GLOG_ERROR = 2, GLOG_FATAL = 3, + NUM_SEVERITIES = 4; +#ifndef GLOG_NO_ABBREVIATED_SEVERITIES +# ifdef ERROR +# error ERROR macro is defined. Define GLOG_NO_ABBREVIATED_SEVERITIES before including logging.h. See the document for detail. +# endif +const int INFO = GLOG_INFO, WARNING = GLOG_WARNING, + ERROR = GLOG_ERROR, FATAL = GLOG_FATAL; +#endif + +// DFATAL is FATAL in debug mode, ERROR in normal mode +#ifdef NDEBUG +#define DFATAL_LEVEL ERROR +#else +#define DFATAL_LEVEL FATAL +#endif + +extern GOOGLE_GLOG_DLL_DECL const char* const LogSeverityNames[NUM_SEVERITIES]; + +// NDEBUG usage helpers related to (RAW_)DCHECK: +// +// DEBUG_MODE is for small !NDEBUG uses like +// if (DEBUG_MODE) foo.CheckThatFoo(); +// instead of substantially more verbose +// #ifndef NDEBUG +// foo.CheckThatFoo(); +// #endif +// +// IF_DEBUG_MODE is for small !NDEBUG uses like +// IF_DEBUG_MODE( string error; ) +// DCHECK(Foo(&error)) << error; +// instead of substantially more verbose +// #ifndef NDEBUG +// string error; +// DCHECK(Foo(&error)) << error; +// #endif +// +#ifdef NDEBUG +enum { DEBUG_MODE = 0 }; +#define IF_DEBUG_MODE(x) +#else +enum { DEBUG_MODE = 1 }; +#define IF_DEBUG_MODE(x) x +#endif + +#endif // BASE_LOG_SEVERITY_H__ diff --git a/Frameworks/glog.xcframework/ios-arm64/Headers/glog/logging.h b/Frameworks/glog.xcframework/ios-arm64/Headers/glog/logging.h new file mode 100644 index 0000000..5abdacd --- /dev/null +++ b/Frameworks/glog.xcframework/ios-arm64/Headers/glog/logging.h @@ -0,0 +1,1661 @@ +// Copyright (c) 1999, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: Ray Sidney +// +// This file contains #include information about logging-related stuff. +// Pretty much everybody needs to #include this file so that they can +// log various happenings. +// +#ifndef _LOGGING_H_ +#define _LOGGING_H_ + +#include +#include +#include +#include +#include +#include +#include +#if 1 +# include +#endif +#include + +#if defined(_MSC_VER) +#define GLOG_MSVC_PUSH_DISABLE_WARNING(n) __pragma(warning(push)) \ + __pragma(warning(disable:n)) +#define GLOG_MSVC_POP_WARNING() __pragma(warning(pop)) +#else +#define GLOG_MSVC_PUSH_DISABLE_WARNING(n) +#define GLOG_MSVC_POP_WARNING() +#endif + +// Annoying stuff for windows -- makes sure clients can import these functions +#ifndef GOOGLE_GLOG_DLL_DECL +# if defined(_WIN32) && !defined(__CYGWIN__) +# define GOOGLE_GLOG_DLL_DECL __declspec(dllimport) +# else +# define GOOGLE_GLOG_DLL_DECL +# endif +#endif + +// We care a lot about number of bits things take up. Unfortunately, +// systems define their bit-specific ints in a lot of different ways. +// We use our own way, and have a typedef to get there. +// Note: these commands below may look like "#if 1" or "#if 0", but +// that's because they were constructed that way at ./configure time. +// Look at logging.h.in to see how they're calculated (based on your config). +#if 1 +#include // the normal place uint16_t is defined +#endif +#if 1 +#include // the normal place u_int16_t is defined +#endif +#if 1 +#include // a third place for uint16_t or u_int16_t +#endif + +#if 0 +#include +#endif + +namespace google { + +#if 1 // the C99 format +typedef int32_t int32; +typedef uint32_t uint32; +typedef int64_t int64; +typedef uint64_t uint64; +#elif 1 // the BSD format +typedef int32_t int32; +typedef u_int32_t uint32; +typedef int64_t int64; +typedef u_int64_t uint64; +#elif 0 // the windows (vc7) format +typedef __int32 int32; +typedef unsigned __int32 uint32; +typedef __int64 int64; +typedef unsigned __int64 uint64; +#else +#error Do not know how to define a 32-bit integer quantity on your system +#endif + +} + +// The global value of GOOGLE_STRIP_LOG. All the messages logged to +// LOG(XXX) with severity less than GOOGLE_STRIP_LOG will not be displayed. +// If it can be determined at compile time that the message will not be +// printed, the statement will be compiled out. +// +// Example: to strip out all INFO and WARNING messages, use the value +// of 2 below. To make an exception for WARNING messages from a single +// file, add "#define GOOGLE_STRIP_LOG 1" to that file _before_ including +// base/logging.h +#ifndef GOOGLE_STRIP_LOG +#define GOOGLE_STRIP_LOG 0 +#endif + +// GCC can be told that a certain branch is not likely to be taken (for +// instance, a CHECK failure), and use that information in static analysis. +// Giving it this information can help it optimize for the common case in +// the absence of better information (ie. -fprofile-arcs). +// +#ifndef GOOGLE_PREDICT_BRANCH_NOT_TAKEN +#if 1 +#define GOOGLE_PREDICT_BRANCH_NOT_TAKEN(x) (__builtin_expect(x, 0)) +#else +#define GOOGLE_PREDICT_BRANCH_NOT_TAKEN(x) x +#endif +#endif + +#ifndef GOOGLE_PREDICT_FALSE +#if 1 +#define GOOGLE_PREDICT_FALSE(x) (__builtin_expect(x, 0)) +#else +#define GOOGLE_PREDICT_FALSE(x) x +#endif +#endif + +#ifndef GOOGLE_PREDICT_TRUE +#if 1 +#define GOOGLE_PREDICT_TRUE(x) (__builtin_expect(!!(x), 1)) +#else +#define GOOGLE_PREDICT_TRUE(x) x +#endif +#endif + + +// Make a bunch of macros for logging. The way to log things is to stream +// things to LOG(). E.g., +// +// LOG(INFO) << "Found " << num_cookies << " cookies"; +// +// You can capture log messages in a string, rather than reporting them +// immediately: +// +// vector errors; +// LOG_STRING(ERROR, &errors) << "Couldn't parse cookie #" << cookie_num; +// +// This pushes back the new error onto 'errors'; if given a NULL pointer, +// it reports the error via LOG(ERROR). +// +// You can also do conditional logging: +// +// LOG_IF(INFO, num_cookies > 10) << "Got lots of cookies"; +// +// You can also do occasional logging (log every n'th occurrence of an +// event): +// +// LOG_EVERY_N(INFO, 10) << "Got the " << google::COUNTER << "th cookie"; +// +// The above will cause log messages to be output on the 1st, 11th, 21st, ... +// times it is executed. Note that the special google::COUNTER value is used +// to identify which repetition is happening. +// +// You can also do occasional conditional logging (log every n'th +// occurrence of an event, when condition is satisfied): +// +// LOG_IF_EVERY_N(INFO, (size > 1024), 10) << "Got the " << google::COUNTER +// << "th big cookie"; +// +// You can log messages the first N times your code executes a line. E.g. +// +// LOG_FIRST_N(INFO, 20) << "Got the " << google::COUNTER << "th cookie"; +// +// Outputs log messages for the first 20 times it is executed. +// +// Analogous SYSLOG, SYSLOG_IF, and SYSLOG_EVERY_N macros are available. +// These log to syslog as well as to the normal logs. If you use these at +// all, you need to be aware that syslog can drastically reduce performance, +// especially if it is configured for remote logging! Don't use these +// unless you fully understand this and have a concrete need to use them. +// Even then, try to minimize your use of them. +// +// There are also "debug mode" logging macros like the ones above: +// +// DLOG(INFO) << "Found cookies"; +// +// DLOG_IF(INFO, num_cookies > 10) << "Got lots of cookies"; +// +// DLOG_EVERY_N(INFO, 10) << "Got the " << google::COUNTER << "th cookie"; +// +// All "debug mode" logging is compiled away to nothing for non-debug mode +// compiles. +// +// We also have +// +// LOG_ASSERT(assertion); +// DLOG_ASSERT(assertion); +// +// which is syntactic sugar for {,D}LOG_IF(FATAL, assert fails) << assertion; +// +// There are "verbose level" logging macros. They look like +// +// VLOG(1) << "I'm printed when you run the program with --v=1 or more"; +// VLOG(2) << "I'm printed when you run the program with --v=2 or more"; +// +// These always log at the INFO log level (when they log at all). +// The verbose logging can also be turned on module-by-module. For instance, +// --vmodule=mapreduce=2,file=1,gfs*=3 --v=0 +// will cause: +// a. VLOG(2) and lower messages to be printed from mapreduce.{h,cc} +// b. VLOG(1) and lower messages to be printed from file.{h,cc} +// c. VLOG(3) and lower messages to be printed from files prefixed with "gfs" +// d. VLOG(0) and lower messages to be printed from elsewhere +// +// The wildcarding functionality shown by (c) supports both '*' (match +// 0 or more characters) and '?' (match any single character) wildcards. +// +// There's also VLOG_IS_ON(n) "verbose level" condition macro. To be used as +// +// if (VLOG_IS_ON(2)) { +// // do some logging preparation and logging +// // that can't be accomplished with just VLOG(2) << ...; +// } +// +// There are also VLOG_IF, VLOG_EVERY_N and VLOG_IF_EVERY_N "verbose level" +// condition macros for sample cases, when some extra computation and +// preparation for logs is not needed. +// VLOG_IF(1, (size > 1024)) +// << "I'm printed when size is more than 1024 and when you run the " +// "program with --v=1 or more"; +// VLOG_EVERY_N(1, 10) +// << "I'm printed every 10th occurrence, and when you run the program " +// "with --v=1 or more. Present occurence is " << google::COUNTER; +// VLOG_IF_EVERY_N(1, (size > 1024), 10) +// << "I'm printed on every 10th occurence of case when size is more " +// " than 1024, when you run the program with --v=1 or more. "; +// "Present occurence is " << google::COUNTER; +// +// The supported severity levels for macros that allow you to specify one +// are (in increasing order of severity) INFO, WARNING, ERROR, and FATAL. +// Note that messages of a given severity are logged not only in the +// logfile for that severity, but also in all logfiles of lower severity. +// E.g., a message of severity FATAL will be logged to the logfiles of +// severity FATAL, ERROR, WARNING, and INFO. +// +// There is also the special severity of DFATAL, which logs FATAL in +// debug mode, ERROR in normal mode. +// +// Very important: logging a message at the FATAL severity level causes +// the program to terminate (after the message is logged). +// +// Unless otherwise specified, logs will be written to the filename +// "...log..", followed +// by the date, time, and pid (you can't prevent the date, time, and pid +// from being in the filename). +// +// The logging code takes two flags: +// --v=# set the verbose level +// --logtostderr log all the messages to stderr instead of to logfiles + +// LOG LINE PREFIX FORMAT +// +// Log lines have this form: +// +// Lmmdd hh:mm:ss.uuuuuu threadid file:line] msg... +// +// where the fields are defined as follows: +// +// L A single character, representing the log level +// (eg 'I' for INFO) +// mm The month (zero padded; ie May is '05') +// dd The day (zero padded) +// hh:mm:ss.uuuuuu Time in hours, minutes and fractional seconds +// threadid The space-padded thread ID as returned by GetTID() +// (this matches the PID on Linux) +// file The file name +// line The line number +// msg The user-supplied message +// +// Example: +// +// I1103 11:57:31.739339 24395 google.cc:2341] Command line: ./some_prog +// I1103 11:57:31.739403 24395 google.cc:2342] Process id 24395 +// +// NOTE: although the microseconds are useful for comparing events on +// a single machine, clocks on different machines may not be well +// synchronized. Hence, use caution when comparing the low bits of +// timestamps from different machines. + +#ifndef DECLARE_VARIABLE +#define MUST_UNDEF_GFLAGS_DECLARE_MACROS +#define DECLARE_VARIABLE(type, shorttype, name, tn) \ + namespace fL##shorttype { \ + extern GOOGLE_GLOG_DLL_DECL type FLAGS_##name; \ + } \ + using fL##shorttype::FLAGS_##name + +// bool specialization +#define DECLARE_bool(name) \ + DECLARE_VARIABLE(bool, B, name, bool) + +// int32 specialization +#define DECLARE_int32(name) \ + DECLARE_VARIABLE(google::int32, I, name, int32) + +// Special case for string, because we have to specify the namespace +// std::string, which doesn't play nicely with our FLAG__namespace hackery. +#define DECLARE_string(name) \ + namespace fLS { \ + extern GOOGLE_GLOG_DLL_DECL std::string& FLAGS_##name; \ + } \ + using fLS::FLAGS_##name +#endif + +// Set whether log messages go to stderr instead of logfiles +DECLARE_bool(logtostderr); + +// Set whether log messages go to stderr in addition to logfiles. +DECLARE_bool(alsologtostderr); + +// Set color messages logged to stderr (if supported by terminal). +DECLARE_bool(colorlogtostderr); + +// Log messages at a level >= this flag are automatically sent to +// stderr in addition to log files. +DECLARE_int32(stderrthreshold); + +// Set whether the log prefix should be prepended to each line of output. +DECLARE_bool(log_prefix); + +// Log messages at a level <= this flag are buffered. +// Log messages at a higher level are flushed immediately. +DECLARE_int32(logbuflevel); + +// Sets the maximum number of seconds which logs may be buffered for. +DECLARE_int32(logbufsecs); + +// Log suppression level: messages logged at a lower level than this +// are suppressed. +DECLARE_int32(minloglevel); + +// If specified, logfiles are written into this directory instead of the +// default logging directory. +DECLARE_string(log_dir); + +// Set the log file mode. +DECLARE_int32(logfile_mode); + +// Sets the path of the directory into which to put additional links +// to the log files. +DECLARE_string(log_link); + +DECLARE_int32(v); // in vlog_is_on.cc + +// Sets the maximum log file size (in MB). +DECLARE_int32(max_log_size); + +// Sets whether to avoid logging to the disk if the disk is full. +DECLARE_bool(stop_logging_if_full_disk); + +#ifdef MUST_UNDEF_GFLAGS_DECLARE_MACROS +#undef MUST_UNDEF_GFLAGS_DECLARE_MACROS +#undef DECLARE_VARIABLE +#undef DECLARE_bool +#undef DECLARE_int32 +#undef DECLARE_string +#endif + +// Log messages below the GOOGLE_STRIP_LOG level will be compiled away for +// security reasons. See LOG(severtiy) below. + +// A few definitions of macros that don't generate much code. Since +// LOG(INFO) and its ilk are used all over our code, it's +// better to have compact code for these operations. + +#if GOOGLE_STRIP_LOG == 0 +#define COMPACT_GOOGLE_LOG_INFO google::LogMessage( \ + __FILE__, __LINE__) +#define LOG_TO_STRING_INFO(message) google::LogMessage( \ + __FILE__, __LINE__, google::GLOG_INFO, message) +#else +#define COMPACT_GOOGLE_LOG_INFO google::NullStream() +#define LOG_TO_STRING_INFO(message) google::NullStream() +#endif + +#if GOOGLE_STRIP_LOG <= 1 +#define COMPACT_GOOGLE_LOG_WARNING google::LogMessage( \ + __FILE__, __LINE__, google::GLOG_WARNING) +#define LOG_TO_STRING_WARNING(message) google::LogMessage( \ + __FILE__, __LINE__, google::GLOG_WARNING, message) +#else +#define COMPACT_GOOGLE_LOG_WARNING google::NullStream() +#define LOG_TO_STRING_WARNING(message) google::NullStream() +#endif + +#if GOOGLE_STRIP_LOG <= 2 +#define COMPACT_GOOGLE_LOG_ERROR google::LogMessage( \ + __FILE__, __LINE__, google::GLOG_ERROR) +#define LOG_TO_STRING_ERROR(message) google::LogMessage( \ + __FILE__, __LINE__, google::GLOG_ERROR, message) +#else +#define COMPACT_GOOGLE_LOG_ERROR google::NullStream() +#define LOG_TO_STRING_ERROR(message) google::NullStream() +#endif + +#if GOOGLE_STRIP_LOG <= 3 +#define COMPACT_GOOGLE_LOG_FATAL google::LogMessageFatal( \ + __FILE__, __LINE__) +#define LOG_TO_STRING_FATAL(message) google::LogMessage( \ + __FILE__, __LINE__, google::GLOG_FATAL, message) +#else +#define COMPACT_GOOGLE_LOG_FATAL google::NullStreamFatal() +#define LOG_TO_STRING_FATAL(message) google::NullStreamFatal() +#endif + +#if defined(NDEBUG) && !defined(DCHECK_ALWAYS_ON) +#define DCHECK_IS_ON() 0 +#else +#define DCHECK_IS_ON() 1 +#endif + +// For DFATAL, we want to use LogMessage (as opposed to +// LogMessageFatal), to be consistent with the original behavior. +#if !DCHECK_IS_ON() +#define COMPACT_GOOGLE_LOG_DFATAL COMPACT_GOOGLE_LOG_ERROR +#elif GOOGLE_STRIP_LOG <= 3 +#define COMPACT_GOOGLE_LOG_DFATAL google::LogMessage( \ + __FILE__, __LINE__, google::GLOG_FATAL) +#else +#define COMPACT_GOOGLE_LOG_DFATAL google::NullStreamFatal() +#endif + +#define GOOGLE_LOG_INFO(counter) google::LogMessage(__FILE__, __LINE__, google::GLOG_INFO, counter, &google::LogMessage::SendToLog) +#define SYSLOG_INFO(counter) \ + google::LogMessage(__FILE__, __LINE__, google::GLOG_INFO, counter, \ + &google::LogMessage::SendToSyslogAndLog) +#define GOOGLE_LOG_WARNING(counter) \ + google::LogMessage(__FILE__, __LINE__, google::GLOG_WARNING, counter, \ + &google::LogMessage::SendToLog) +#define SYSLOG_WARNING(counter) \ + google::LogMessage(__FILE__, __LINE__, google::GLOG_WARNING, counter, \ + &google::LogMessage::SendToSyslogAndLog) +#define GOOGLE_LOG_ERROR(counter) \ + google::LogMessage(__FILE__, __LINE__, google::GLOG_ERROR, counter, \ + &google::LogMessage::SendToLog) +#define SYSLOG_ERROR(counter) \ + google::LogMessage(__FILE__, __LINE__, google::GLOG_ERROR, counter, \ + &google::LogMessage::SendToSyslogAndLog) +#define GOOGLE_LOG_FATAL(counter) \ + google::LogMessage(__FILE__, __LINE__, google::GLOG_FATAL, counter, \ + &google::LogMessage::SendToLog) +#define SYSLOG_FATAL(counter) \ + google::LogMessage(__FILE__, __LINE__, google::GLOG_FATAL, counter, \ + &google::LogMessage::SendToSyslogAndLog) +#define GOOGLE_LOG_DFATAL(counter) \ + google::LogMessage(__FILE__, __LINE__, google::DFATAL_LEVEL, counter, \ + &google::LogMessage::SendToLog) +#define SYSLOG_DFATAL(counter) \ + google::LogMessage(__FILE__, __LINE__, google::DFATAL_LEVEL, counter, \ + &google::LogMessage::SendToSyslogAndLog) + +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) || defined(__CYGWIN32__) +// A very useful logging macro to log windows errors: +#define LOG_SYSRESULT(result) \ + if (FAILED(HRESULT_FROM_WIN32(result))) { \ + LPSTR message = NULL; \ + LPSTR msg = reinterpret_cast(&message); \ + DWORD message_length = FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | \ + FORMAT_MESSAGE_FROM_SYSTEM, \ + 0, result, 0, msg, 100, NULL); \ + if (message_length > 0) { \ + google::LogMessage(__FILE__, __LINE__, google::GLOG_ERROR, 0, \ + &google::LogMessage::SendToLog).stream() \ + << reinterpret_cast(message); \ + LocalFree(message); \ + } \ + } +#endif + +// We use the preprocessor's merging operator, "##", so that, e.g., +// LOG(INFO) becomes the token GOOGLE_LOG_INFO. There's some funny +// subtle difference between ostream member streaming functions (e.g., +// ostream::operator<<(int) and ostream non-member streaming functions +// (e.g., ::operator<<(ostream&, string&): it turns out that it's +// impossible to stream something like a string directly to an unnamed +// ostream. We employ a neat hack by calling the stream() member +// function of LogMessage which seems to avoid the problem. +#define LOG(severity) COMPACT_GOOGLE_LOG_ ## severity.stream() +#define SYSLOG(severity) SYSLOG_ ## severity(0).stream() + +namespace google { + +// They need the definitions of integer types. +#include "glog/log_severity.h" +#include "glog/vlog_is_on.h" + +// Initialize google's logging library. You will see the program name +// specified by argv0 in log outputs. +GOOGLE_GLOG_DLL_DECL void InitGoogleLogging(const char* argv0); + +// Shutdown google's logging library. +GOOGLE_GLOG_DLL_DECL void ShutdownGoogleLogging(); + +// Install a function which will be called after LOG(FATAL). +GOOGLE_GLOG_DLL_DECL void InstallFailureFunction(void (*fail_func)()); + +class LogSink; // defined below + +// If a non-NULL sink pointer is given, we push this message to that sink. +// For LOG_TO_SINK we then do normal LOG(severity) logging as well. +// This is useful for capturing messages and passing/storing them +// somewhere more specific than the global log of the process. +// Argument types: +// LogSink* sink; +// LogSeverity severity; +// The cast is to disambiguate NULL arguments. +#define LOG_TO_SINK(sink, severity) \ + google::LogMessage( \ + __FILE__, __LINE__, \ + google::GLOG_ ## severity, \ + static_cast(sink), true).stream() +#define LOG_TO_SINK_BUT_NOT_TO_LOGFILE(sink, severity) \ + google::LogMessage( \ + __FILE__, __LINE__, \ + google::GLOG_ ## severity, \ + static_cast(sink), false).stream() + +// If a non-NULL string pointer is given, we write this message to that string. +// We then do normal LOG(severity) logging as well. +// This is useful for capturing messages and storing them somewhere more +// specific than the global log of the process. +// Argument types: +// string* message; +// LogSeverity severity; +// The cast is to disambiguate NULL arguments. +// NOTE: LOG(severity) expands to LogMessage().stream() for the specified +// severity. +#define LOG_TO_STRING(severity, message) \ + LOG_TO_STRING_##severity(static_cast(message)).stream() + +// If a non-NULL pointer is given, we push the message onto the end +// of a vector of strings; otherwise, we report it with LOG(severity). +// This is handy for capturing messages and perhaps passing them back +// to the caller, rather than reporting them immediately. +// Argument types: +// LogSeverity severity; +// vector *outvec; +// The cast is to disambiguate NULL arguments. +#define LOG_STRING(severity, outvec) \ + LOG_TO_STRING_##severity(static_cast*>(outvec)).stream() + +#define LOG_IF(severity, condition) \ + !(condition) ? (void) 0 : google::LogMessageVoidify() & LOG(severity) +#define SYSLOG_IF(severity, condition) \ + !(condition) ? (void) 0 : google::LogMessageVoidify() & SYSLOG(severity) + +#define LOG_ASSERT(condition) \ + LOG_IF(FATAL, !(condition)) << "Assert failed: " #condition +#define SYSLOG_ASSERT(condition) \ + SYSLOG_IF(FATAL, !(condition)) << "Assert failed: " #condition + +// CHECK dies with a fatal error if condition is not true. It is *not* +// controlled by DCHECK_IS_ON(), so the check will be executed regardless of +// compilation mode. Therefore, it is safe to do things like: +// CHECK(fp->Write(x) == 4) +#define CHECK(condition) \ + LOG_IF(FATAL, GOOGLE_PREDICT_BRANCH_NOT_TAKEN(!(condition))) \ + << "Check failed: " #condition " " + +// A container for a string pointer which can be evaluated to a bool - +// true iff the pointer is NULL. +struct CheckOpString { + CheckOpString(std::string* str) : str_(str) { } + // No destructor: if str_ is non-NULL, we're about to LOG(FATAL), + // so there's no point in cleaning up str_. + operator bool() const { + return GOOGLE_PREDICT_BRANCH_NOT_TAKEN(str_ != NULL); + } + std::string* str_; +}; + +// Function is overloaded for integral types to allow static const +// integrals declared in classes and not defined to be used as arguments to +// CHECK* macros. It's not encouraged though. +template +inline const T& GetReferenceableValue(const T& t) { return t; } +inline char GetReferenceableValue(char t) { return t; } +inline unsigned char GetReferenceableValue(unsigned char t) { return t; } +inline signed char GetReferenceableValue(signed char t) { return t; } +inline short GetReferenceableValue(short t) { return t; } +inline unsigned short GetReferenceableValue(unsigned short t) { return t; } +inline int GetReferenceableValue(int t) { return t; } +inline unsigned int GetReferenceableValue(unsigned int t) { return t; } +inline long GetReferenceableValue(long t) { return t; } +inline unsigned long GetReferenceableValue(unsigned long t) { return t; } +inline long long GetReferenceableValue(long long t) { return t; } +inline unsigned long long GetReferenceableValue(unsigned long long t) { + return t; +} + +// This is a dummy class to define the following operator. +struct DummyClassToDefineOperator {}; + +} + +// Define global operator<< to declare using ::operator<<. +// This declaration will allow use to use CHECK macros for user +// defined classes which have operator<< (e.g., stl_logging.h). +inline std::ostream& operator<<( + std::ostream& out, const google::DummyClassToDefineOperator&) { + return out; +} + +namespace google { + +// This formats a value for a failing CHECK_XX statement. Ordinarily, +// it uses the definition for operator<<, with a few special cases below. +template +inline void MakeCheckOpValueString(std::ostream* os, const T& v) { + (*os) << v; +} + +// Overrides for char types provide readable values for unprintable +// characters. +template <> GOOGLE_GLOG_DLL_DECL +void MakeCheckOpValueString(std::ostream* os, const char& v); +template <> GOOGLE_GLOG_DLL_DECL +void MakeCheckOpValueString(std::ostream* os, const signed char& v); +template <> GOOGLE_GLOG_DLL_DECL +void MakeCheckOpValueString(std::ostream* os, const unsigned char& v); + +// Build the error message string. Specify no inlining for code size. +template +std::string* MakeCheckOpString(const T1& v1, const T2& v2, const char* exprtext) + __attribute__ ((noinline)); + +namespace base { +namespace internal { + +// If "s" is less than base_logging::INFO, returns base_logging::INFO. +// If "s" is greater than base_logging::FATAL, returns +// base_logging::ERROR. Otherwise, returns "s". +LogSeverity NormalizeSeverity(LogSeverity s); + +} // namespace internal + +// A helper class for formatting "expr (V1 vs. V2)" in a CHECK_XX +// statement. See MakeCheckOpString for sample usage. Other +// approaches were considered: use of a template method (e.g., +// base::BuildCheckOpString(exprtext, base::Print, &v1, +// base::Print, &v2), however this approach has complications +// related to volatile arguments and function-pointer arguments). +class GOOGLE_GLOG_DLL_DECL CheckOpMessageBuilder { + public: + // Inserts "exprtext" and " (" to the stream. + explicit CheckOpMessageBuilder(const char *exprtext); + // Deletes "stream_". + ~CheckOpMessageBuilder(); + // For inserting the first variable. + std::ostream* ForVar1() { return stream_; } + // For inserting the second variable (adds an intermediate " vs. "). + std::ostream* ForVar2(); + // Get the result (inserts the closing ")"). + std::string* NewString(); + + private: + std::ostringstream *stream_; +}; + +} // namespace base + +template +std::string* MakeCheckOpString(const T1& v1, const T2& v2, const char* exprtext) { + base::CheckOpMessageBuilder comb(exprtext); + MakeCheckOpValueString(comb.ForVar1(), v1); + MakeCheckOpValueString(comb.ForVar2(), v2); + return comb.NewString(); +} + +// Helper functions for CHECK_OP macro. +// The (int, int) specialization works around the issue that the compiler +// will not instantiate the template version of the function on values of +// unnamed enum type - see comment below. +#define DEFINE_CHECK_OP_IMPL(name, op) \ + template \ + inline std::string* name##Impl(const T1& v1, const T2& v2, \ + const char* exprtext) { \ + if (GOOGLE_PREDICT_TRUE(v1 op v2)) return NULL; \ + else return MakeCheckOpString(v1, v2, exprtext); \ + } \ + inline std::string* name##Impl(int v1, int v2, const char* exprtext) { \ + return name##Impl(v1, v2, exprtext); \ + } + +// We use the full name Check_EQ, Check_NE, etc. in case the file including +// base/logging.h provides its own #defines for the simpler names EQ, NE, etc. +// This happens if, for example, those are used as token names in a +// yacc grammar. +DEFINE_CHECK_OP_IMPL(Check_EQ, ==) // Compilation error with CHECK_EQ(NULL, x)? +DEFINE_CHECK_OP_IMPL(Check_NE, !=) // Use CHECK(x == NULL) instead. +DEFINE_CHECK_OP_IMPL(Check_LE, <=) +DEFINE_CHECK_OP_IMPL(Check_LT, < ) +DEFINE_CHECK_OP_IMPL(Check_GE, >=) +DEFINE_CHECK_OP_IMPL(Check_GT, > ) +#undef DEFINE_CHECK_OP_IMPL + +// Helper macro for binary operators. +// Don't use this macro directly in your code, use CHECK_EQ et al below. + +#if defined(STATIC_ANALYSIS) +// Only for static analysis tool to know that it is equivalent to assert +#define CHECK_OP_LOG(name, op, val1, val2, log) CHECK((val1) op (val2)) +#elif DCHECK_IS_ON() +// In debug mode, avoid constructing CheckOpStrings if possible, +// to reduce the overhead of CHECK statments by 2x. +// Real DCHECK-heavy tests have seen 1.5x speedups. + +// The meaning of "string" might be different between now and +// when this macro gets invoked (e.g., if someone is experimenting +// with other string implementations that get defined after this +// file is included). Save the current meaning now and use it +// in the macro. +typedef std::string _Check_string; +#define CHECK_OP_LOG(name, op, val1, val2, log) \ + while (google::_Check_string* _result = \ + google::Check##name##Impl( \ + google::GetReferenceableValue(val1), \ + google::GetReferenceableValue(val2), \ + #val1 " " #op " " #val2)) \ + log(__FILE__, __LINE__, \ + google::CheckOpString(_result)).stream() +#else +// In optimized mode, use CheckOpString to hint to compiler that +// the while condition is unlikely. +#define CHECK_OP_LOG(name, op, val1, val2, log) \ + while (google::CheckOpString _result = \ + google::Check##name##Impl( \ + google::GetReferenceableValue(val1), \ + google::GetReferenceableValue(val2), \ + #val1 " " #op " " #val2)) \ + log(__FILE__, __LINE__, _result).stream() +#endif // STATIC_ANALYSIS, DCHECK_IS_ON() + +#if GOOGLE_STRIP_LOG <= 3 +#define CHECK_OP(name, op, val1, val2) \ + CHECK_OP_LOG(name, op, val1, val2, google::LogMessageFatal) +#else +#define CHECK_OP(name, op, val1, val2) \ + CHECK_OP_LOG(name, op, val1, val2, google::NullStreamFatal) +#endif // STRIP_LOG <= 3 + +// Equality/Inequality checks - compare two values, and log a FATAL message +// including the two values when the result is not as expected. The values +// must have operator<<(ostream, ...) defined. +// +// You may append to the error message like so: +// CHECK_NE(1, 2) << ": The world must be ending!"; +// +// We are very careful to ensure that each argument is evaluated exactly +// once, and that anything which is legal to pass as a function argument is +// legal here. In particular, the arguments may be temporary expressions +// which will end up being destroyed at the end of the apparent statement, +// for example: +// CHECK_EQ(string("abc")[1], 'b'); +// +// WARNING: These don't compile correctly if one of the arguments is a pointer +// and the other is NULL. To work around this, simply static_cast NULL to the +// type of the desired pointer. + +#define CHECK_EQ(val1, val2) CHECK_OP(_EQ, ==, val1, val2) +#define CHECK_NE(val1, val2) CHECK_OP(_NE, !=, val1, val2) +#define CHECK_LE(val1, val2) CHECK_OP(_LE, <=, val1, val2) +#define CHECK_LT(val1, val2) CHECK_OP(_LT, < , val1, val2) +#define CHECK_GE(val1, val2) CHECK_OP(_GE, >=, val1, val2) +#define CHECK_GT(val1, val2) CHECK_OP(_GT, > , val1, val2) + +// Check that the input is non NULL. This very useful in constructor +// initializer lists. + +#define CHECK_NOTNULL(val) \ + google::CheckNotNull(__FILE__, __LINE__, "'" #val "' Must be non NULL", (val)) + +// Helper functions for string comparisons. +// To avoid bloat, the definitions are in logging.cc. +#define DECLARE_CHECK_STROP_IMPL(func, expected) \ + GOOGLE_GLOG_DLL_DECL std::string* Check##func##expected##Impl( \ + const char* s1, const char* s2, const char* names); +DECLARE_CHECK_STROP_IMPL(strcmp, true) +DECLARE_CHECK_STROP_IMPL(strcmp, false) +DECLARE_CHECK_STROP_IMPL(strcasecmp, true) +DECLARE_CHECK_STROP_IMPL(strcasecmp, false) +#undef DECLARE_CHECK_STROP_IMPL + +// Helper macro for string comparisons. +// Don't use this macro directly in your code, use CHECK_STREQ et al below. +#define CHECK_STROP(func, op, expected, s1, s2) \ + while (google::CheckOpString _result = \ + google::Check##func##expected##Impl((s1), (s2), \ + #s1 " " #op " " #s2)) \ + LOG(FATAL) << *_result.str_ + + +// String (char*) equality/inequality checks. +// CASE versions are case-insensitive. +// +// Note that "s1" and "s2" may be temporary strings which are destroyed +// by the compiler at the end of the current "full expression" +// (e.g. CHECK_STREQ(Foo().c_str(), Bar().c_str())). + +#define CHECK_STREQ(s1, s2) CHECK_STROP(strcmp, ==, true, s1, s2) +#define CHECK_STRNE(s1, s2) CHECK_STROP(strcmp, !=, false, s1, s2) +#define CHECK_STRCASEEQ(s1, s2) CHECK_STROP(strcasecmp, ==, true, s1, s2) +#define CHECK_STRCASENE(s1, s2) CHECK_STROP(strcasecmp, !=, false, s1, s2) + +#define CHECK_INDEX(I,A) CHECK(I < (sizeof(A)/sizeof(A[0]))) +#define CHECK_BOUND(B,A) CHECK(B <= (sizeof(A)/sizeof(A[0]))) + +#define CHECK_DOUBLE_EQ(val1, val2) \ + do { \ + CHECK_LE((val1), (val2)+0.000000000000001L); \ + CHECK_GE((val1), (val2)-0.000000000000001L); \ + } while (0) + +#define CHECK_NEAR(val1, val2, margin) \ + do { \ + CHECK_LE((val1), (val2)+(margin)); \ + CHECK_GE((val1), (val2)-(margin)); \ + } while (0) + +// perror()..googly style! +// +// PLOG() and PLOG_IF() and PCHECK() behave exactly like their LOG* and +// CHECK equivalents with the addition that they postpend a description +// of the current state of errno to their output lines. + +#define PLOG(severity) GOOGLE_PLOG(severity, 0).stream() + +#define GOOGLE_PLOG(severity, counter) \ + google::ErrnoLogMessage( \ + __FILE__, __LINE__, google::GLOG_ ## severity, counter, \ + &google::LogMessage::SendToLog) + +#define PLOG_IF(severity, condition) \ + !(condition) ? (void) 0 : google::LogMessageVoidify() & PLOG(severity) + +// A CHECK() macro that postpends errno if the condition is false. E.g. +// +// if (poll(fds, nfds, timeout) == -1) { PCHECK(errno == EINTR); ... } +#define PCHECK(condition) \ + PLOG_IF(FATAL, GOOGLE_PREDICT_BRANCH_NOT_TAKEN(!(condition))) \ + << "Check failed: " #condition " " + +// A CHECK() macro that lets you assert the success of a function that +// returns -1 and sets errno in case of an error. E.g. +// +// CHECK_ERR(mkdir(path, 0700)); +// +// or +// +// int fd = open(filename, flags); CHECK_ERR(fd) << ": open " << filename; +#define CHECK_ERR(invocation) \ +PLOG_IF(FATAL, GOOGLE_PREDICT_BRANCH_NOT_TAKEN((invocation) == -1)) \ + << #invocation + +// Use macro expansion to create, for each use of LOG_EVERY_N(), static +// variables with the __LINE__ expansion as part of the variable name. +#define LOG_EVERY_N_VARNAME(base, line) LOG_EVERY_N_VARNAME_CONCAT(base, line) +#define LOG_EVERY_N_VARNAME_CONCAT(base, line) base ## line + +#define LOG_OCCURRENCES LOG_EVERY_N_VARNAME(occurrences_, __LINE__) +#define LOG_OCCURRENCES_MOD_N LOG_EVERY_N_VARNAME(occurrences_mod_n_, __LINE__) + +#define SOME_KIND_OF_LOG_EVERY_N(severity, n, what_to_do) \ + static int LOG_OCCURRENCES = 0, LOG_OCCURRENCES_MOD_N = 0; \ + ++LOG_OCCURRENCES; \ + if (++LOG_OCCURRENCES_MOD_N > n) LOG_OCCURRENCES_MOD_N -= n; \ + if (LOG_OCCURRENCES_MOD_N == 1) \ + google::LogMessage( \ + __FILE__, __LINE__, google::GLOG_ ## severity, LOG_OCCURRENCES, \ + &what_to_do).stream() + +#define SOME_KIND_OF_LOG_IF_EVERY_N(severity, condition, n, what_to_do) \ + static int LOG_OCCURRENCES = 0, LOG_OCCURRENCES_MOD_N = 0; \ + ++LOG_OCCURRENCES; \ + if (condition && \ + ((LOG_OCCURRENCES_MOD_N=(LOG_OCCURRENCES_MOD_N + 1) % n) == (1 % n))) \ + google::LogMessage( \ + __FILE__, __LINE__, google::GLOG_ ## severity, LOG_OCCURRENCES, \ + &what_to_do).stream() + +#define SOME_KIND_OF_PLOG_EVERY_N(severity, n, what_to_do) \ + static int LOG_OCCURRENCES = 0, LOG_OCCURRENCES_MOD_N = 0; \ + ++LOG_OCCURRENCES; \ + if (++LOG_OCCURRENCES_MOD_N > n) LOG_OCCURRENCES_MOD_N -= n; \ + if (LOG_OCCURRENCES_MOD_N == 1) \ + google::ErrnoLogMessage( \ + __FILE__, __LINE__, google::GLOG_ ## severity, LOG_OCCURRENCES, \ + &what_to_do).stream() + +#define SOME_KIND_OF_LOG_FIRST_N(severity, n, what_to_do) \ + static int LOG_OCCURRENCES = 0; \ + if (LOG_OCCURRENCES <= n) \ + ++LOG_OCCURRENCES; \ + if (LOG_OCCURRENCES <= n) \ + google::LogMessage( \ + __FILE__, __LINE__, google::GLOG_ ## severity, LOG_OCCURRENCES, \ + &what_to_do).stream() + +namespace glog_internal_namespace_ { +template +struct CompileAssert { +}; +struct CrashReason; + +// Returns true if FailureSignalHandler is installed. +bool IsFailureSignalHandlerInstalled(); +} // namespace glog_internal_namespace_ + +#define GOOGLE_GLOG_COMPILE_ASSERT(expr, msg) \ + typedef google::glog_internal_namespace_::CompileAssert<(bool(expr))> msg[bool(expr) ? 1 : -1] + +#define LOG_EVERY_N(severity, n) \ + GOOGLE_GLOG_COMPILE_ASSERT(google::GLOG_ ## severity < \ + google::NUM_SEVERITIES, \ + INVALID_REQUESTED_LOG_SEVERITY); \ + SOME_KIND_OF_LOG_EVERY_N(severity, (n), google::LogMessage::SendToLog) + +#define SYSLOG_EVERY_N(severity, n) \ + SOME_KIND_OF_LOG_EVERY_N(severity, (n), google::LogMessage::SendToSyslogAndLog) + +#define PLOG_EVERY_N(severity, n) \ + SOME_KIND_OF_PLOG_EVERY_N(severity, (n), google::LogMessage::SendToLog) + +#define LOG_FIRST_N(severity, n) \ + SOME_KIND_OF_LOG_FIRST_N(severity, (n), google::LogMessage::SendToLog) + +#define LOG_IF_EVERY_N(severity, condition, n) \ + SOME_KIND_OF_LOG_IF_EVERY_N(severity, (condition), (n), google::LogMessage::SendToLog) + +// We want the special COUNTER value available for LOG_EVERY_X()'ed messages +enum PRIVATE_Counter {COUNTER}; + +#ifdef GLOG_NO_ABBREVIATED_SEVERITIES +// wingdi.h defines ERROR to be 0. When we call LOG(ERROR), it gets +// substituted with 0, and it expands to COMPACT_GOOGLE_LOG_0. To allow us +// to keep using this syntax, we define this macro to do the same thing +// as COMPACT_GOOGLE_LOG_ERROR. +#define COMPACT_GOOGLE_LOG_0 COMPACT_GOOGLE_LOG_ERROR +#define SYSLOG_0 SYSLOG_ERROR +#define LOG_TO_STRING_0 LOG_TO_STRING_ERROR +// Needed for LOG_IS_ON(ERROR). +const LogSeverity GLOG_0 = GLOG_ERROR; +#else +// Users may include windows.h after logging.h without +// GLOG_NO_ABBREVIATED_SEVERITIES nor WIN32_LEAN_AND_MEAN. +// For this case, we cannot detect if ERROR is defined before users +// actually use ERROR. Let's make an undefined symbol to warn users. +# define GLOG_ERROR_MSG ERROR_macro_is_defined_Define_GLOG_NO_ABBREVIATED_SEVERITIES_before_including_logging_h_See_the_document_for_detail +# define COMPACT_GOOGLE_LOG_0 GLOG_ERROR_MSG +# define SYSLOG_0 GLOG_ERROR_MSG +# define LOG_TO_STRING_0 GLOG_ERROR_MSG +# define GLOG_0 GLOG_ERROR_MSG +#endif + +// Plus some debug-logging macros that get compiled to nothing for production + +#if DCHECK_IS_ON() + +#define DLOG(severity) LOG(severity) +#define DVLOG(verboselevel) VLOG(verboselevel) +#define DLOG_IF(severity, condition) LOG_IF(severity, condition) +#define DLOG_EVERY_N(severity, n) LOG_EVERY_N(severity, n) +#define DLOG_IF_EVERY_N(severity, condition, n) \ + LOG_IF_EVERY_N(severity, condition, n) +#define DLOG_ASSERT(condition) LOG_ASSERT(condition) + +// debug-only checking. executed if DCHECK_IS_ON(). +#define DCHECK(condition) CHECK(condition) +#define DCHECK_EQ(val1, val2) CHECK_EQ(val1, val2) +#define DCHECK_NE(val1, val2) CHECK_NE(val1, val2) +#define DCHECK_LE(val1, val2) CHECK_LE(val1, val2) +#define DCHECK_LT(val1, val2) CHECK_LT(val1, val2) +#define DCHECK_GE(val1, val2) CHECK_GE(val1, val2) +#define DCHECK_GT(val1, val2) CHECK_GT(val1, val2) +#define DCHECK_NOTNULL(val) CHECK_NOTNULL(val) +#define DCHECK_STREQ(str1, str2) CHECK_STREQ(str1, str2) +#define DCHECK_STRCASEEQ(str1, str2) CHECK_STRCASEEQ(str1, str2) +#define DCHECK_STRNE(str1, str2) CHECK_STRNE(str1, str2) +#define DCHECK_STRCASENE(str1, str2) CHECK_STRCASENE(str1, str2) + +#else // !DCHECK_IS_ON() + +#define DLOG(severity) \ + true ? (void) 0 : google::LogMessageVoidify() & LOG(severity) + +#define DVLOG(verboselevel) \ + (true || !VLOG_IS_ON(verboselevel)) ?\ + (void) 0 : google::LogMessageVoidify() & LOG(INFO) + +#define DLOG_IF(severity, condition) \ + (true || !(condition)) ? (void) 0 : google::LogMessageVoidify() & LOG(severity) + +#define DLOG_EVERY_N(severity, n) \ + true ? (void) 0 : google::LogMessageVoidify() & LOG(severity) + +#define DLOG_IF_EVERY_N(severity, condition, n) \ + (true || !(condition))? (void) 0 : google::LogMessageVoidify() & LOG(severity) + +#define DLOG_ASSERT(condition) \ + true ? (void) 0 : LOG_ASSERT(condition) + +// MSVC warning C4127: conditional expression is constant +#define DCHECK(condition) \ + GLOG_MSVC_PUSH_DISABLE_WARNING(4127) \ + while (false) \ + GLOG_MSVC_POP_WARNING() CHECK(condition) + +#define DCHECK_EQ(val1, val2) \ + GLOG_MSVC_PUSH_DISABLE_WARNING(4127) \ + while (false) \ + GLOG_MSVC_POP_WARNING() CHECK_EQ(val1, val2) + +#define DCHECK_NE(val1, val2) \ + GLOG_MSVC_PUSH_DISABLE_WARNING(4127) \ + while (false) \ + GLOG_MSVC_POP_WARNING() CHECK_NE(val1, val2) + +#define DCHECK_LE(val1, val2) \ + GLOG_MSVC_PUSH_DISABLE_WARNING(4127) \ + while (false) \ + GLOG_MSVC_POP_WARNING() CHECK_LE(val1, val2) + +#define DCHECK_LT(val1, val2) \ + GLOG_MSVC_PUSH_DISABLE_WARNING(4127) \ + while (false) \ + GLOG_MSVC_POP_WARNING() CHECK_LT(val1, val2) + +#define DCHECK_GE(val1, val2) \ + GLOG_MSVC_PUSH_DISABLE_WARNING(4127) \ + while (false) \ + GLOG_MSVC_POP_WARNING() CHECK_GE(val1, val2) + +#define DCHECK_GT(val1, val2) \ + GLOG_MSVC_PUSH_DISABLE_WARNING(4127) \ + while (false) \ + GLOG_MSVC_POP_WARNING() CHECK_GT(val1, val2) + +// You may see warnings in release mode if you don't use the return +// value of DCHECK_NOTNULL. Please just use DCHECK for such cases. +#define DCHECK_NOTNULL(val) (val) + +#define DCHECK_STREQ(str1, str2) \ + GLOG_MSVC_PUSH_DISABLE_WARNING(4127) \ + while (false) \ + GLOG_MSVC_POP_WARNING() CHECK_STREQ(str1, str2) + +#define DCHECK_STRCASEEQ(str1, str2) \ + GLOG_MSVC_PUSH_DISABLE_WARNING(4127) \ + while (false) \ + GLOG_MSVC_POP_WARNING() CHECK_STRCASEEQ(str1, str2) + +#define DCHECK_STRNE(str1, str2) \ + GLOG_MSVC_PUSH_DISABLE_WARNING(4127) \ + while (false) \ + GLOG_MSVC_POP_WARNING() CHECK_STRNE(str1, str2) + +#define DCHECK_STRCASENE(str1, str2) \ + GLOG_MSVC_PUSH_DISABLE_WARNING(4127) \ + while (false) \ + GLOG_MSVC_POP_WARNING() CHECK_STRCASENE(str1, str2) + +#endif // DCHECK_IS_ON() + +// Log only in verbose mode. + +#define VLOG(verboselevel) LOG_IF(INFO, VLOG_IS_ON(verboselevel)) + +#define VLOG_IF(verboselevel, condition) \ + LOG_IF(INFO, (condition) && VLOG_IS_ON(verboselevel)) + +#define VLOG_EVERY_N(verboselevel, n) \ + LOG_IF_EVERY_N(INFO, VLOG_IS_ON(verboselevel), n) + +#define VLOG_IF_EVERY_N(verboselevel, condition, n) \ + LOG_IF_EVERY_N(INFO, (condition) && VLOG_IS_ON(verboselevel), n) + +namespace base_logging { + +// LogMessage::LogStream is a std::ostream backed by this streambuf. +// This class ignores overflow and leaves two bytes at the end of the +// buffer to allow for a '\n' and '\0'. +class GOOGLE_GLOG_DLL_DECL LogStreamBuf : public std::streambuf { + public: + // REQUIREMENTS: "len" must be >= 2 to account for the '\n' and '\n'. + LogStreamBuf(char *buf, int len) { + setp(buf, buf + len - 2); + } + // This effectively ignores overflow. + virtual int_type overflow(int_type ch) { + return ch; + } + + // Legacy public ostrstream method. + size_t pcount() const { return pptr() - pbase(); } + char* pbase() const { return std::streambuf::pbase(); } +}; + +} // namespace base_logging + +// +// This class more or less represents a particular log message. You +// create an instance of LogMessage and then stream stuff to it. +// When you finish streaming to it, ~LogMessage is called and the +// full message gets streamed to the appropriate destination. +// +// You shouldn't actually use LogMessage's constructor to log things, +// though. You should use the LOG() macro (and variants thereof) +// above. +class GOOGLE_GLOG_DLL_DECL LogMessage { +public: + enum { + // Passing kNoLogPrefix for the line number disables the + // log-message prefix. Useful for using the LogMessage + // infrastructure as a printing utility. See also the --log_prefix + // flag for controlling the log-message prefix on an + // application-wide basis. + kNoLogPrefix = -1 + }; + + // LogStream inherit from non-DLL-exported class (std::ostrstream) + // and VC++ produces a warning for this situation. + // However, MSDN says "C4275 can be ignored in Microsoft Visual C++ + // 2005 if you are deriving from a type in the Standard C++ Library" + // http://msdn.microsoft.com/en-us/library/3tdb471s(VS.80).aspx + // Let's just ignore the warning. +#ifdef _MSC_VER +# pragma warning(disable: 4275) +#endif + class GOOGLE_GLOG_DLL_DECL LogStream : public std::ostream { +#ifdef _MSC_VER +# pragma warning(default: 4275) +#endif + public: + LogStream(char *buf, int len, int ctr) + : std::ostream(NULL), + streambuf_(buf, len), + ctr_(ctr), + self_(this) { + rdbuf(&streambuf_); + } + + int ctr() const { return ctr_; } + void set_ctr(int ctr) { ctr_ = ctr; } + LogStream* self() const { return self_; } + + // Legacy std::streambuf methods. + size_t pcount() const { return streambuf_.pcount(); } + char* pbase() const { return streambuf_.pbase(); } + char* str() const { return pbase(); } + + private: + LogStream(const LogStream&); + LogStream& operator=(const LogStream&); + base_logging::LogStreamBuf streambuf_; + int ctr_; // Counter hack (for the LOG_EVERY_X() macro) + LogStream *self_; // Consistency check hack + }; + +public: + // icc 8 requires this typedef to avoid an internal compiler error. + typedef void (LogMessage::*SendMethod)(); + + LogMessage(const char* file, int line, LogSeverity severity, int ctr, + SendMethod send_method); + + // Two special constructors that generate reduced amounts of code at + // LOG call sites for common cases. + + // Used for LOG(INFO): Implied are: + // severity = INFO, ctr = 0, send_method = &LogMessage::SendToLog. + // + // Using this constructor instead of the more complex constructor above + // saves 19 bytes per call site. + LogMessage(const char* file, int line); + + // Used for LOG(severity) where severity != INFO. Implied + // are: ctr = 0, send_method = &LogMessage::SendToLog + // + // Using this constructor instead of the more complex constructor above + // saves 17 bytes per call site. + LogMessage(const char* file, int line, LogSeverity severity); + + // Constructor to log this message to a specified sink (if not NULL). + // Implied are: ctr = 0, send_method = &LogMessage::SendToSinkAndLog if + // also_send_to_log is true, send_method = &LogMessage::SendToSink otherwise. + LogMessage(const char* file, int line, LogSeverity severity, LogSink* sink, + bool also_send_to_log); + + // Constructor where we also give a vector pointer + // for storing the messages (if the pointer is not NULL). + // Implied are: ctr = 0, send_method = &LogMessage::SaveOrSendToLog. + LogMessage(const char* file, int line, LogSeverity severity, + std::vector* outvec); + + // Constructor where we also give a string pointer for storing the + // message (if the pointer is not NULL). Implied are: ctr = 0, + // send_method = &LogMessage::WriteToStringAndLog. + LogMessage(const char* file, int line, LogSeverity severity, + std::string* message); + + // A special constructor used for check failures + LogMessage(const char* file, int line, const CheckOpString& result); + + ~LogMessage(); + + // Flush a buffered message to the sink set in the constructor. Always + // called by the destructor, it may also be called from elsewhere if + // needed. Only the first call is actioned; any later ones are ignored. + void Flush(); + + // An arbitrary limit on the length of a single log message. This + // is so that streaming can be done more efficiently. + static const size_t kMaxLogMessageLen; + + // Theses should not be called directly outside of logging.*, + // only passed as SendMethod arguments to other LogMessage methods: + void SendToLog(); // Actually dispatch to the logs + void SendToSyslogAndLog(); // Actually dispatch to syslog and the logs + + // Call abort() or similar to perform LOG(FATAL) crash. + static void __attribute__ ((noreturn)) Fail(); + + std::ostream& stream(); + + int preserved_errno() const; + + // Must be called without the log_mutex held. (L < log_mutex) + static int64 num_messages(int severity); + + struct LogMessageData; + +private: + // Fully internal SendMethod cases: + void SendToSinkAndLog(); // Send to sink if provided and dispatch to the logs + void SendToSink(); // Send to sink if provided, do nothing otherwise. + + // Write to string if provided and dispatch to the logs. + void WriteToStringAndLog(); + + void SaveOrSendToLog(); // Save to stringvec if provided, else to logs + + void Init(const char* file, int line, LogSeverity severity, + void (LogMessage::*send_method)()); + + // Used to fill in crash information during LOG(FATAL) failures. + void RecordCrashReason(glog_internal_namespace_::CrashReason* reason); + + // Counts of messages sent at each priority: + static int64 num_messages_[NUM_SEVERITIES]; // under log_mutex + + // We keep the data in a separate struct so that each instance of + // LogMessage uses less stack space. + LogMessageData* allocated_; + LogMessageData* data_; + + friend class LogDestination; + + LogMessage(const LogMessage&); + void operator=(const LogMessage&); +}; + +// This class happens to be thread-hostile because all instances share +// a single data buffer, but since it can only be created just before +// the process dies, we don't worry so much. +class GOOGLE_GLOG_DLL_DECL LogMessageFatal : public LogMessage { + public: + LogMessageFatal(const char* file, int line); + LogMessageFatal(const char* file, int line, const CheckOpString& result); + __attribute__ ((noreturn)) ~LogMessageFatal(); +}; + +// A non-macro interface to the log facility; (useful +// when the logging level is not a compile-time constant). +inline void LogAtLevel(int const severity, std::string const &msg) { + LogMessage(__FILE__, __LINE__, severity).stream() << msg; +} + +// A macro alternative of LogAtLevel. New code may want to use this +// version since there are two advantages: 1. this version outputs the +// file name and the line number where this macro is put like other +// LOG macros, 2. this macro can be used as C++ stream. +#define LOG_AT_LEVEL(severity) google::LogMessage(__FILE__, __LINE__, severity).stream() + +// Check if it's compiled in C++11 mode. +// +// GXX_EXPERIMENTAL_CXX0X is defined by gcc and clang up to at least +// gcc-4.7 and clang-3.1 (2011-12-13). __cplusplus was defined to 1 +// in gcc before 4.7 (Crosstool 16) and clang before 3.1, but is +// defined according to the language version in effect thereafter. +// Microsoft Visual Studio 14 (2015) sets __cplusplus==199711 despite +// reasonably good C++11 support, so we set LANG_CXX for it and +// newer versions (_MSC_VER >= 1900). +#if (defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L || \ + (defined(_MSC_VER) && _MSC_VER >= 1900)) +// Helper for CHECK_NOTNULL(). +// +// In C++11, all cases can be handled by a single function. Since the value +// category of the argument is preserved (also for rvalue references), +// member initializer lists like the one below will compile correctly: +// +// Foo() +// : x_(CHECK_NOTNULL(MethodReturningUniquePtr())) {} +template +T CheckNotNull(const char* file, int line, const char* names, T&& t) { + if (t == nullptr) { + LogMessageFatal(file, line, new std::string(names)); + } + return std::forward(t); +} + +#else + +// A small helper for CHECK_NOTNULL(). +template +T* CheckNotNull(const char *file, int line, const char *names, T* t) { + if (t == NULL) { + LogMessageFatal(file, line, new std::string(names)); + } + return t; +} +#endif + +// Allow folks to put a counter in the LOG_EVERY_X()'ed messages. This +// only works if ostream is a LogStream. If the ostream is not a +// LogStream you'll get an assert saying as much at runtime. +GOOGLE_GLOG_DLL_DECL std::ostream& operator<<(std::ostream &os, + const PRIVATE_Counter&); + + +// Derived class for PLOG*() above. +class GOOGLE_GLOG_DLL_DECL ErrnoLogMessage : public LogMessage { + public: + + ErrnoLogMessage(const char* file, int line, LogSeverity severity, int ctr, + void (LogMessage::*send_method)()); + + // Postpends ": strerror(errno) [errno]". + ~ErrnoLogMessage(); + + private: + ErrnoLogMessage(const ErrnoLogMessage&); + void operator=(const ErrnoLogMessage&); +}; + + +// This class is used to explicitly ignore values in the conditional +// logging macros. This avoids compiler warnings like "value computed +// is not used" and "statement has no effect". + +class GOOGLE_GLOG_DLL_DECL LogMessageVoidify { + public: + LogMessageVoidify() { } + // This has to be an operator with a precedence lower than << but + // higher than ?: + void operator&(std::ostream&) { } +}; + + +// Flushes all log files that contains messages that are at least of +// the specified severity level. Thread-safe. +GOOGLE_GLOG_DLL_DECL void FlushLogFiles(LogSeverity min_severity); + +// Flushes all log files that contains messages that are at least of +// the specified severity level. Thread-hostile because it ignores +// locking -- used for catastrophic failures. +GOOGLE_GLOG_DLL_DECL void FlushLogFilesUnsafe(LogSeverity min_severity); + +// +// Set the destination to which a particular severity level of log +// messages is sent. If base_filename is "", it means "don't log this +// severity". Thread-safe. +// +GOOGLE_GLOG_DLL_DECL void SetLogDestination(LogSeverity severity, + const char* base_filename); + +// +// Set the basename of the symlink to the latest log file at a given +// severity. If symlink_basename is empty, do not make a symlink. If +// you don't call this function, the symlink basename is the +// invocation name of the program. Thread-safe. +// +GOOGLE_GLOG_DLL_DECL void SetLogSymlink(LogSeverity severity, + const char* symlink_basename); + +// +// Used to send logs to some other kind of destination +// Users should subclass LogSink and override send to do whatever they want. +// Implementations must be thread-safe because a shared instance will +// be called from whichever thread ran the LOG(XXX) line. +class GOOGLE_GLOG_DLL_DECL LogSink { + public: + virtual ~LogSink(); + + // Sink's logging logic (message_len is such as to exclude '\n' at the end). + // This method can't use LOG() or CHECK() as logging system mutex(s) are held + // during this call. + virtual void send(LogSeverity severity, const char* full_filename, + const char* base_filename, int line, + const struct ::tm* tm_time, + const char* message, size_t message_len) = 0; + + // Redefine this to implement waiting for + // the sink's logging logic to complete. + // It will be called after each send() returns, + // but before that LogMessage exits or crashes. + // By default this function does nothing. + // Using this function one can implement complex logic for send() + // that itself involves logging; and do all this w/o causing deadlocks and + // inconsistent rearrangement of log messages. + // E.g. if a LogSink has thread-specific actions, the send() method + // can simply add the message to a queue and wake up another thread that + // handles real logging while itself making some LOG() calls; + // WaitTillSent() can be implemented to wait for that logic to complete. + // See our unittest for an example. + virtual void WaitTillSent(); + + // Returns the normal text output of the log message. + // Can be useful to implement send(). + static std::string ToString(LogSeverity severity, const char* file, int line, + const struct ::tm* tm_time, + const char* message, size_t message_len); +}; + +// Add or remove a LogSink as a consumer of logging data. Thread-safe. +GOOGLE_GLOG_DLL_DECL void AddLogSink(LogSink *destination); +GOOGLE_GLOG_DLL_DECL void RemoveLogSink(LogSink *destination); + +// +// Specify an "extension" added to the filename specified via +// SetLogDestination. This applies to all severity levels. It's +// often used to append the port we're listening on to the logfile +// name. Thread-safe. +// +GOOGLE_GLOG_DLL_DECL void SetLogFilenameExtension( + const char* filename_extension); + +// +// Make it so that all log messages of at least a particular severity +// are logged to stderr (in addition to logging to the usual log +// file(s)). Thread-safe. +// +GOOGLE_GLOG_DLL_DECL void SetStderrLogging(LogSeverity min_severity); + +// +// Make it so that all log messages go only to stderr. Thread-safe. +// +GOOGLE_GLOG_DLL_DECL void LogToStderr(); + +// +// Make it so that all log messages of at least a particular severity are +// logged via email to a list of addresses (in addition to logging to the +// usual log file(s)). The list of addresses is just a string containing +// the email addresses to send to (separated by spaces, say). Thread-safe. +// +GOOGLE_GLOG_DLL_DECL void SetEmailLogging(LogSeverity min_severity, + const char* addresses); + +// A simple function that sends email. dest is a commma-separated +// list of addressess. Thread-safe. +GOOGLE_GLOG_DLL_DECL bool SendEmail(const char *dest, + const char *subject, const char *body); + +GOOGLE_GLOG_DLL_DECL const std::vector& GetLoggingDirectories(); + +// For tests only: Clear the internal [cached] list of logging directories to +// force a refresh the next time GetLoggingDirectories is called. +// Thread-hostile. +void TestOnly_ClearLoggingDirectoriesList(); + +// Returns a set of existing temporary directories, which will be a +// subset of the directories returned by GetLogginDirectories(). +// Thread-safe. +GOOGLE_GLOG_DLL_DECL void GetExistingTempDirectories( + std::vector* list); + +// Print any fatal message again -- useful to call from signal handler +// so that the last thing in the output is the fatal message. +// Thread-hostile, but a race is unlikely. +GOOGLE_GLOG_DLL_DECL void ReprintFatalMessage(); + +// Truncate a log file that may be the append-only output of multiple +// processes and hence can't simply be renamed/reopened (typically a +// stdout/stderr). If the file "path" is > "limit" bytes, copy the +// last "keep" bytes to offset 0 and truncate the rest. Since we could +// be racing with other writers, this approach has the potential to +// lose very small amounts of data. For security, only follow symlinks +// if the path is /proc/self/fd/* +GOOGLE_GLOG_DLL_DECL void TruncateLogFile(const char *path, + int64 limit, int64 keep); + +// Truncate stdout and stderr if they are over the value specified by +// --max_log_size; keep the final 1MB. This function has the same +// race condition as TruncateLogFile. +GOOGLE_GLOG_DLL_DECL void TruncateStdoutStderr(); + +// Return the string representation of the provided LogSeverity level. +// Thread-safe. +GOOGLE_GLOG_DLL_DECL const char* GetLogSeverityName(LogSeverity severity); + +// --------------------------------------------------------------------- +// Implementation details that are not useful to most clients +// --------------------------------------------------------------------- + +// A Logger is the interface used by logging modules to emit entries +// to a log. A typical implementation will dump formatted data to a +// sequence of files. We also provide interfaces that will forward +// the data to another thread so that the invoker never blocks. +// Implementations should be thread-safe since the logging system +// will write to them from multiple threads. + +namespace base { + +class GOOGLE_GLOG_DLL_DECL Logger { + public: + virtual ~Logger(); + + // Writes "message[0,message_len-1]" corresponding to an event that + // occurred at "timestamp". If "force_flush" is true, the log file + // is flushed immediately. + // + // The input message has already been formatted as deemed + // appropriate by the higher level logging facility. For example, + // textual log messages already contain timestamps, and the + // file:linenumber header. + virtual void Write(bool force_flush, + time_t timestamp, + const char* message, + int message_len) = 0; + + // Flush any buffered messages + virtual void Flush() = 0; + + // Get the current LOG file size. + // The returned value is approximate since some + // logged data may not have been flushed to disk yet. + virtual uint32 LogSize() = 0; +}; + +// Get the logger for the specified severity level. The logger +// remains the property of the logging module and should not be +// deleted by the caller. Thread-safe. +extern GOOGLE_GLOG_DLL_DECL Logger* GetLogger(LogSeverity level); + +// Set the logger for the specified severity level. The logger +// becomes the property of the logging module and should not +// be deleted by the caller. Thread-safe. +extern GOOGLE_GLOG_DLL_DECL void SetLogger(LogSeverity level, Logger* logger); + +} + +// glibc has traditionally implemented two incompatible versions of +// strerror_r(). There is a poorly defined convention for picking the +// version that we want, but it is not clear whether it even works with +// all versions of glibc. +// So, instead, we provide this wrapper that automatically detects the +// version that is in use, and then implements POSIX semantics. +// N.B. In addition to what POSIX says, we also guarantee that "buf" will +// be set to an empty string, if this function failed. This means, in most +// cases, you do not need to check the error code and you can directly +// use the value of "buf". It will never have an undefined value. +// DEPRECATED: Use StrError(int) instead. +GOOGLE_GLOG_DLL_DECL int posix_strerror_r(int err, char *buf, size_t len); + +// A thread-safe replacement for strerror(). Returns a string describing the +// given POSIX error code. +GOOGLE_GLOG_DLL_DECL std::string StrError(int err); + +// A class for which we define operator<<, which does nothing. +class GOOGLE_GLOG_DLL_DECL NullStream : public LogMessage::LogStream { + public: + // Initialize the LogStream so the messages can be written somewhere + // (they'll never be actually displayed). This will be needed if a + // NullStream& is implicitly converted to LogStream&, in which case + // the overloaded NullStream::operator<< will not be invoked. + NullStream() : LogMessage::LogStream(message_buffer_, 1, 0) { } + NullStream(const char* /*file*/, int /*line*/, + const CheckOpString& /*result*/) : + LogMessage::LogStream(message_buffer_, 1, 0) { } + NullStream &stream() { return *this; } + private: + // A very short buffer for messages (which we discard anyway). This + // will be needed if NullStream& converted to LogStream& (e.g. as a + // result of a conditional expression). + char message_buffer_[2]; +}; + +// Do nothing. This operator is inline, allowing the message to be +// compiled away. The message will not be compiled away if we do +// something like (flag ? LOG(INFO) : LOG(ERROR)) << message; when +// SKIP_LOG=WARNING. In those cases, NullStream will be implicitly +// converted to LogStream and the message will be computed and then +// quietly discarded. +template +inline NullStream& operator<<(NullStream &str, const T &) { return str; } + +// Similar to NullStream, but aborts the program (without stack +// trace), like LogMessageFatal. +class GOOGLE_GLOG_DLL_DECL NullStreamFatal : public NullStream { + public: + NullStreamFatal() { } + NullStreamFatal(const char* file, int line, const CheckOpString& result) : + NullStream(file, line, result) { } + __attribute__ ((noreturn)) ~NullStreamFatal() throw () { _exit(1); } +}; + +// Install a signal handler that will dump signal information and a stack +// trace when the program crashes on certain signals. We'll install the +// signal handler for the following signals. +// +// SIGSEGV, SIGILL, SIGFPE, SIGABRT, SIGBUS, and SIGTERM. +// +// By default, the signal handler will write the failure dump to the +// standard error. You can customize the destination by installing your +// own writer function by InstallFailureWriter() below. +// +// Note on threading: +// +// The function should be called before threads are created, if you want +// to use the failure signal handler for all threads. The stack trace +// will be shown only for the thread that receives the signal. In other +// words, stack traces of other threads won't be shown. +GOOGLE_GLOG_DLL_DECL void InstallFailureSignalHandler(); + +// Installs a function that is used for writing the failure dump. "data" +// is the pointer to the beginning of a message to be written, and "size" +// is the size of the message. You should not expect the data is +// terminated with '\0'. +GOOGLE_GLOG_DLL_DECL void InstallFailureWriter( + void (*writer)(const char* data, int size)); + +} + +#endif // _LOGGING_H_ diff --git a/Frameworks/glog.xcframework/ios-arm64/Headers/glog/raw_logging.h b/Frameworks/glog.xcframework/ios-arm64/Headers/glog/raw_logging.h new file mode 100644 index 0000000..65278f6 --- /dev/null +++ b/Frameworks/glog.xcframework/ios-arm64/Headers/glog/raw_logging.h @@ -0,0 +1,185 @@ +// Copyright (c) 2006, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: Maxim Lifantsev +// +// Thread-safe logging routines that do not allocate any memory or +// acquire any locks, and can therefore be used by low-level memory +// allocation and synchronization code. + +#ifndef BASE_RAW_LOGGING_H_ +#define BASE_RAW_LOGGING_H_ + +#include + +namespace google { + +#include "glog/log_severity.h" +#include "glog/vlog_is_on.h" + +// Annoying stuff for windows -- makes sure clients can import these functions +#ifndef GOOGLE_GLOG_DLL_DECL +# if defined(_WIN32) && !defined(__CYGWIN__) +# define GOOGLE_GLOG_DLL_DECL __declspec(dllimport) +# else +# define GOOGLE_GLOG_DLL_DECL +# endif +#endif + +// This is similar to LOG(severity) << format... and VLOG(level) << format.., +// but +// * it is to be used ONLY by low-level modules that can't use normal LOG() +// * it is desiged to be a low-level logger that does not allocate any +// memory and does not need any locks, hence: +// * it logs straight and ONLY to STDERR w/o buffering +// * it uses an explicit format and arguments list +// * it will silently chop off really long message strings +// Usage example: +// RAW_LOG(ERROR, "Failed foo with %i: %s", status, error); +// RAW_VLOG(3, "status is %i", status); +// These will print an almost standard log lines like this to stderr only: +// E0821 211317 file.cc:123] RAW: Failed foo with 22: bad_file +// I0821 211317 file.cc:142] RAW: status is 20 +#define RAW_LOG(severity, ...) \ + do { \ + switch (google::GLOG_ ## severity) { \ + case 0: \ + RAW_LOG_INFO(__VA_ARGS__); \ + break; \ + case 1: \ + RAW_LOG_WARNING(__VA_ARGS__); \ + break; \ + case 2: \ + RAW_LOG_ERROR(__VA_ARGS__); \ + break; \ + case 3: \ + RAW_LOG_FATAL(__VA_ARGS__); \ + break; \ + default: \ + break; \ + } \ + } while (0) + +// The following STRIP_LOG testing is performed in the header file so that it's +// possible to completely compile out the logging code and the log messages. +#if STRIP_LOG == 0 +#define RAW_VLOG(verboselevel, ...) \ + do { \ + if (VLOG_IS_ON(verboselevel)) { \ + RAW_LOG_INFO(__VA_ARGS__); \ + } \ + } while (0) +#else +#define RAW_VLOG(verboselevel, ...) RawLogStub__(0, __VA_ARGS__) +#endif // STRIP_LOG == 0 + +#if STRIP_LOG == 0 +#define RAW_LOG_INFO(...) google::RawLog__(google::GLOG_INFO, \ + __FILE__, __LINE__, __VA_ARGS__) +#else +#define RAW_LOG_INFO(...) google::RawLogStub__(0, __VA_ARGS__) +#endif // STRIP_LOG == 0 + +#if STRIP_LOG <= 1 +#define RAW_LOG_WARNING(...) google::RawLog__(google::GLOG_WARNING, \ + __FILE__, __LINE__, __VA_ARGS__) +#else +#define RAW_LOG_WARNING(...) google::RawLogStub__(0, __VA_ARGS__) +#endif // STRIP_LOG <= 1 + +#if STRIP_LOG <= 2 +#define RAW_LOG_ERROR(...) google::RawLog__(google::GLOG_ERROR, \ + __FILE__, __LINE__, __VA_ARGS__) +#else +#define RAW_LOG_ERROR(...) google::RawLogStub__(0, __VA_ARGS__) +#endif // STRIP_LOG <= 2 + +#if STRIP_LOG <= 3 +#define RAW_LOG_FATAL(...) google::RawLog__(google::GLOG_FATAL, \ + __FILE__, __LINE__, __VA_ARGS__) +#else +#define RAW_LOG_FATAL(...) \ + do { \ + google::RawLogStub__(0, __VA_ARGS__); \ + exit(1); \ + } while (0) +#endif // STRIP_LOG <= 3 + +// Similar to CHECK(condition) << message, +// but for low-level modules: we use only RAW_LOG that does not allocate memory. +// We do not want to provide args list here to encourage this usage: +// if (!cond) RAW_LOG(FATAL, "foo ...", hard_to_compute_args); +// so that the args are not computed when not needed. +#define RAW_CHECK(condition, message) \ + do { \ + if (!(condition)) { \ + RAW_LOG(FATAL, "Check %s failed: %s", #condition, message); \ + } \ + } while (0) + +// Debug versions of RAW_LOG and RAW_CHECK +#ifndef NDEBUG + +#define RAW_DLOG(severity, ...) RAW_LOG(severity, __VA_ARGS__) +#define RAW_DCHECK(condition, message) RAW_CHECK(condition, message) + +#else // NDEBUG + +#define RAW_DLOG(severity, ...) \ + while (false) \ + RAW_LOG(severity, __VA_ARGS__) +#define RAW_DCHECK(condition, message) \ + while (false) \ + RAW_CHECK(condition, message) + +#endif // NDEBUG + +// Stub log function used to work around for unused variable warnings when +// building with STRIP_LOG > 0. +static inline void RawLogStub__(int /* ignored */, ...) { +} + +// Helper function to implement RAW_LOG and RAW_VLOG +// Logs format... at "severity" level, reporting it +// as called from file:line. +// This does not allocate memory or acquire locks. +GOOGLE_GLOG_DLL_DECL void RawLog__(LogSeverity severity, + const char* file, + int line, + const char* format, ...) + __attribute__((__format__ (__printf__, 4, 5))); + +// Hack to propagate time information into this module so that +// this module does not have to directly call localtime_r(), +// which could allocate memory. +GOOGLE_GLOG_DLL_DECL void RawLog__SetLastTime(const struct tm& t, int usecs); + +} + +#endif // BASE_RAW_LOGGING_H_ diff --git a/Frameworks/glog.xcframework/ios-arm64/Headers/glog/stl_logging.h b/Frameworks/glog.xcframework/ios-arm64/Headers/glog/stl_logging.h new file mode 100644 index 0000000..40a15aa --- /dev/null +++ b/Frameworks/glog.xcframework/ios-arm64/Headers/glog/stl_logging.h @@ -0,0 +1,220 @@ +// Copyright (c) 2003, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Stream output operators for STL containers; to be used for logging *only*. +// Inclusion of this file lets you do: +// +// list x; +// LOG(INFO) << "data: " << x; +// vector v1, v2; +// CHECK_EQ(v1, v2); +// +// If you want to use this header file with hash maps or slist, you +// need to define macros before including this file: +// +// - GLOG_STL_LOGGING_FOR_UNORDERED - and +// - GLOG_STL_LOGGING_FOR_TR1_UNORDERED - +// - GLOG_STL_LOGGING_FOR_EXT_HASH - +// - GLOG_STL_LOGGING_FOR_EXT_SLIST - +// + +#ifndef UTIL_GTL_STL_LOGGING_INL_H_ +#define UTIL_GTL_STL_LOGGING_INL_H_ + +#if !1 +# error We do not support stl_logging for this compiler +#endif + +#include +#include +#include +#include +#include +#include +#include + +#ifdef GLOG_STL_LOGGING_FOR_UNORDERED +# include +# include +#endif + +#ifdef GLOG_STL_LOGGING_FOR_TR1_UNORDERED +# include +# include +#endif + +#ifdef GLOG_STL_LOGGING_FOR_EXT_HASH +# include +# include +#endif +#ifdef GLOG_STL_LOGGING_FOR_EXT_SLIST +# include +#endif + +// Forward declare these two, and define them after all the container streams +// operators so that we can recurse from pair -> container -> container -> pair +// properly. +template +std::ostream& operator<<(std::ostream& out, const std::pair& p); + +namespace google { + +template +void PrintSequence(std::ostream& out, Iter begin, Iter end); + +} + +#define OUTPUT_TWO_ARG_CONTAINER(Sequence) \ +template \ +inline std::ostream& operator<<(std::ostream& out, \ + const Sequence& seq) { \ + google::PrintSequence(out, seq.begin(), seq.end()); \ + return out; \ +} + +OUTPUT_TWO_ARG_CONTAINER(std::vector) +OUTPUT_TWO_ARG_CONTAINER(std::deque) +OUTPUT_TWO_ARG_CONTAINER(std::list) +#ifdef GLOG_STL_LOGGING_FOR_EXT_SLIST +OUTPUT_TWO_ARG_CONTAINER(__gnu_cxx::slist) +#endif + +#undef OUTPUT_TWO_ARG_CONTAINER + +#define OUTPUT_THREE_ARG_CONTAINER(Sequence) \ +template \ +inline std::ostream& operator<<(std::ostream& out, \ + const Sequence& seq) { \ + google::PrintSequence(out, seq.begin(), seq.end()); \ + return out; \ +} + +OUTPUT_THREE_ARG_CONTAINER(std::set) +OUTPUT_THREE_ARG_CONTAINER(std::multiset) + +#undef OUTPUT_THREE_ARG_CONTAINER + +#define OUTPUT_FOUR_ARG_CONTAINER(Sequence) \ +template \ +inline std::ostream& operator<<(std::ostream& out, \ + const Sequence& seq) { \ + google::PrintSequence(out, seq.begin(), seq.end()); \ + return out; \ +} + +OUTPUT_FOUR_ARG_CONTAINER(std::map) +OUTPUT_FOUR_ARG_CONTAINER(std::multimap) +#ifdef GLOG_STL_LOGGING_FOR_UNORDERED +OUTPUT_FOUR_ARG_CONTAINER(std::unordered_set) +OUTPUT_FOUR_ARG_CONTAINER(std::unordered_multiset) +#endif +#ifdef GLOG_STL_LOGGING_FOR_TR1_UNORDERED +OUTPUT_FOUR_ARG_CONTAINER(std::tr1::unordered_set) +OUTPUT_FOUR_ARG_CONTAINER(std::tr1::unordered_multiset) +#endif +#ifdef GLOG_STL_LOGGING_FOR_EXT_HASH +OUTPUT_FOUR_ARG_CONTAINER(__gnu_cxx::hash_set) +OUTPUT_FOUR_ARG_CONTAINER(__gnu_cxx::hash_multiset) +#endif + +#undef OUTPUT_FOUR_ARG_CONTAINER + +#define OUTPUT_FIVE_ARG_CONTAINER(Sequence) \ +template \ +inline std::ostream& operator<<(std::ostream& out, \ + const Sequence& seq) { \ + google::PrintSequence(out, seq.begin(), seq.end()); \ + return out; \ +} + +#ifdef GLOG_STL_LOGGING_FOR_UNORDERED +OUTPUT_FIVE_ARG_CONTAINER(std::unordered_map) +OUTPUT_FIVE_ARG_CONTAINER(std::unordered_multimap) +#endif +#ifdef GLOG_STL_LOGGING_FOR_TR1_UNORDERED +OUTPUT_FIVE_ARG_CONTAINER(std::tr1::unordered_map) +OUTPUT_FIVE_ARG_CONTAINER(std::tr1::unordered_multimap) +#endif +#ifdef GLOG_STL_LOGGING_FOR_EXT_HASH +OUTPUT_FIVE_ARG_CONTAINER(__gnu_cxx::hash_map) +OUTPUT_FIVE_ARG_CONTAINER(__gnu_cxx::hash_multimap) +#endif + +#undef OUTPUT_FIVE_ARG_CONTAINER + +template +inline std::ostream& operator<<(std::ostream& out, + const std::pair& p) { + out << '(' << p.first << ", " << p.second << ')'; + return out; +} + +namespace google { + +template +inline void PrintSequence(std::ostream& out, Iter begin, Iter end) { + // Output at most 100 elements -- appropriate if used for logging. + for (int i = 0; begin != end && i < 100; ++i, ++begin) { + if (i > 0) out << ' '; + out << *begin; + } + if (begin != end) { + out << " ..."; + } +} + +} + +// Note that this is technically undefined behavior! We are adding things into +// the std namespace for a reason though -- we are providing new operations on +// types which are themselves defined with this namespace. Without this, these +// operator overloads cannot be found via ADL. If these definitions are not +// found via ADL, they must be #included before they're used, which requires +// this header to be included before apparently independent other headers. +// +// For example, base/logging.h defines various template functions to implement +// CHECK_EQ(x, y) and stream x and y into the log in the event the check fails. +// It does so via the function template MakeCheckOpValueString: +// template +// void MakeCheckOpValueString(strstream* ss, const T& v) { +// (*ss) << v; +// } +// Because 'glog/logging.h' is included before 'glog/stl_logging.h', +// subsequent CHECK_EQ(v1, v2) for vector<...> typed variable v1 and v2 can only +// find these operator definitions via ADL. +// +// Even this solution has problems -- it may pull unintended operators into the +// namespace as well, allowing them to also be found via ADL, and creating code +// that only works with a particular order of includes. Long term, we need to +// move all of the *definitions* into namespace std, bet we need to ensure no +// one references them first. This lets us take that step. We cannot define them +// in both because that would create ambiguous overloads when both are found. +namespace std { using ::operator<<; } + +#endif // UTIL_GTL_STL_LOGGING_INL_H_ diff --git a/Frameworks/glog.xcframework/ios-arm64/Headers/glog/vlog_is_on.h b/Frameworks/glog.xcframework/ios-arm64/Headers/glog/vlog_is_on.h new file mode 100644 index 0000000..02b0b86 --- /dev/null +++ b/Frameworks/glog.xcframework/ios-arm64/Headers/glog/vlog_is_on.h @@ -0,0 +1,129 @@ +// Copyright (c) 1999, 2007, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: Ray Sidney and many others +// +// Defines the VLOG_IS_ON macro that controls the variable-verbosity +// conditional logging. +// +// It's used by VLOG and VLOG_IF in logging.h +// and by RAW_VLOG in raw_logging.h to trigger the logging. +// +// It can also be used directly e.g. like this: +// if (VLOG_IS_ON(2)) { +// // do some logging preparation and logging +// // that can't be accomplished e.g. via just VLOG(2) << ...; +// } +// +// The truth value that VLOG_IS_ON(level) returns is determined by +// the three verbosity level flags: +// --v= Gives the default maximal active V-logging level; +// 0 is the default. +// Normally positive values are used for V-logging levels. +// --vmodule= Gives the per-module maximal V-logging levels to override +// the value given by --v. +// E.g. "my_module=2,foo*=3" would change the logging level +// for all code in source files "my_module.*" and "foo*.*" +// ("-inl" suffixes are also disregarded for this matching). +// +// SetVLOGLevel helper function is provided to do limited dynamic control over +// V-logging by overriding the per-module settings given via --vmodule flag. +// +// CAVEAT: --vmodule functionality is not available in non gcc compilers. +// + +#ifndef BASE_VLOG_IS_ON_H_ +#define BASE_VLOG_IS_ON_H_ + +#include "glog/log_severity.h" + +// Annoying stuff for windows -- makes sure clients can import these functions +#ifndef GOOGLE_GLOG_DLL_DECL +# if defined(_WIN32) && !defined(__CYGWIN__) +# define GOOGLE_GLOG_DLL_DECL __declspec(dllimport) +# else +# define GOOGLE_GLOG_DLL_DECL +# endif +#endif + +#if defined(__GNUC__) +// We emit an anonymous static int* variable at every VLOG_IS_ON(n) site. +// (Normally) the first time every VLOG_IS_ON(n) site is hit, +// we determine what variable will dynamically control logging at this site: +// it's either FLAGS_v or an appropriate internal variable +// matching the current source file that represents results of +// parsing of --vmodule flag and/or SetVLOGLevel calls. +#define VLOG_IS_ON(verboselevel) \ + __extension__ \ + ({ static google::int32* vlocal__ = &google::kLogSiteUninitialized; \ + google::int32 verbose_level__ = (verboselevel); \ + (*vlocal__ >= verbose_level__) && \ + ((vlocal__ != &google::kLogSiteUninitialized) || \ + (google::InitVLOG3__(&vlocal__, &FLAGS_v, \ + __FILE__, verbose_level__))); }) +#else +// GNU extensions not available, so we do not support --vmodule. +// Dynamic value of FLAGS_v always controls the logging level. +#define VLOG_IS_ON(verboselevel) (FLAGS_v >= (verboselevel)) +#endif + +// Set VLOG(_IS_ON) level for module_pattern to log_level. +// This lets us dynamically control what is normally set by the --vmodule flag. +// Returns the level that previously applied to module_pattern. +// NOTE: To change the log level for VLOG(_IS_ON) sites +// that have already executed after/during InitGoogleLogging, +// one needs to supply the exact --vmodule pattern that applied to them. +// (If no --vmodule pattern applied to them +// the value of FLAGS_v will continue to control them.) +extern GOOGLE_GLOG_DLL_DECL int SetVLOGLevel(const char* module_pattern, + int log_level); + +// Various declarations needed for VLOG_IS_ON above: ========================= + +// Special value used to indicate that a VLOG_IS_ON site has not been +// initialized. We make this a large value, so the common-case check +// of "*vlocal__ >= verbose_level__" in VLOG_IS_ON definition +// passes in such cases and InitVLOG3__ is then triggered. +extern google::int32 kLogSiteUninitialized; + +// Helper routine which determines the logging info for a particalur VLOG site. +// site_flag is the address of the site-local pointer to the controlling +// verbosity level +// site_default is the default to use for *site_flag +// fname is the current source file name +// verbose_level is the argument to VLOG_IS_ON +// We will return the return value for VLOG_IS_ON +// and if possible set *site_flag appropriately. +extern GOOGLE_GLOG_DLL_DECL bool InitVLOG3__( + google::int32** site_flag, + google::int32* site_default, + const char* fname, + google::int32 verbose_level); + +#endif // BASE_VLOG_IS_ON_H_ diff --git a/Frameworks/glog.xcframework/ios-arm64/libglog.a b/Frameworks/glog.xcframework/ios-arm64/libglog.a new file mode 100644 index 0000000..c71069d Binary files /dev/null and b/Frameworks/glog.xcframework/ios-arm64/libglog.a differ diff --git a/Frameworks/glog.xcframework/ios-arm64_x86_64-simulator/Headers/glog/log_severity.h b/Frameworks/glog.xcframework/ios-arm64_x86_64-simulator/Headers/glog/log_severity.h new file mode 100644 index 0000000..99945a4 --- /dev/null +++ b/Frameworks/glog.xcframework/ios-arm64_x86_64-simulator/Headers/glog/log_severity.h @@ -0,0 +1,92 @@ +// Copyright (c) 2007, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef BASE_LOG_SEVERITY_H__ +#define BASE_LOG_SEVERITY_H__ + +// Annoying stuff for windows -- makes sure clients can import these functions +#ifndef GOOGLE_GLOG_DLL_DECL +# if defined(_WIN32) && !defined(__CYGWIN__) +# define GOOGLE_GLOG_DLL_DECL __declspec(dllimport) +# else +# define GOOGLE_GLOG_DLL_DECL +# endif +#endif + +// Variables of type LogSeverity are widely taken to lie in the range +// [0, NUM_SEVERITIES-1]. Be careful to preserve this assumption if +// you ever need to change their values or add a new severity. +typedef int LogSeverity; + +const int GLOG_INFO = 0, GLOG_WARNING = 1, GLOG_ERROR = 2, GLOG_FATAL = 3, + NUM_SEVERITIES = 4; +#ifndef GLOG_NO_ABBREVIATED_SEVERITIES +# ifdef ERROR +# error ERROR macro is defined. Define GLOG_NO_ABBREVIATED_SEVERITIES before including logging.h. See the document for detail. +# endif +const int INFO = GLOG_INFO, WARNING = GLOG_WARNING, + ERROR = GLOG_ERROR, FATAL = GLOG_FATAL; +#endif + +// DFATAL is FATAL in debug mode, ERROR in normal mode +#ifdef NDEBUG +#define DFATAL_LEVEL ERROR +#else +#define DFATAL_LEVEL FATAL +#endif + +extern GOOGLE_GLOG_DLL_DECL const char* const LogSeverityNames[NUM_SEVERITIES]; + +// NDEBUG usage helpers related to (RAW_)DCHECK: +// +// DEBUG_MODE is for small !NDEBUG uses like +// if (DEBUG_MODE) foo.CheckThatFoo(); +// instead of substantially more verbose +// #ifndef NDEBUG +// foo.CheckThatFoo(); +// #endif +// +// IF_DEBUG_MODE is for small !NDEBUG uses like +// IF_DEBUG_MODE( string error; ) +// DCHECK(Foo(&error)) << error; +// instead of substantially more verbose +// #ifndef NDEBUG +// string error; +// DCHECK(Foo(&error)) << error; +// #endif +// +#ifdef NDEBUG +enum { DEBUG_MODE = 0 }; +#define IF_DEBUG_MODE(x) +#else +enum { DEBUG_MODE = 1 }; +#define IF_DEBUG_MODE(x) x +#endif + +#endif // BASE_LOG_SEVERITY_H__ diff --git a/Frameworks/glog.xcframework/ios-arm64_x86_64-simulator/Headers/glog/logging.h b/Frameworks/glog.xcframework/ios-arm64_x86_64-simulator/Headers/glog/logging.h new file mode 100644 index 0000000..5abdacd --- /dev/null +++ b/Frameworks/glog.xcframework/ios-arm64_x86_64-simulator/Headers/glog/logging.h @@ -0,0 +1,1661 @@ +// Copyright (c) 1999, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: Ray Sidney +// +// This file contains #include information about logging-related stuff. +// Pretty much everybody needs to #include this file so that they can +// log various happenings. +// +#ifndef _LOGGING_H_ +#define _LOGGING_H_ + +#include +#include +#include +#include +#include +#include +#include +#if 1 +# include +#endif +#include + +#if defined(_MSC_VER) +#define GLOG_MSVC_PUSH_DISABLE_WARNING(n) __pragma(warning(push)) \ + __pragma(warning(disable:n)) +#define GLOG_MSVC_POP_WARNING() __pragma(warning(pop)) +#else +#define GLOG_MSVC_PUSH_DISABLE_WARNING(n) +#define GLOG_MSVC_POP_WARNING() +#endif + +// Annoying stuff for windows -- makes sure clients can import these functions +#ifndef GOOGLE_GLOG_DLL_DECL +# if defined(_WIN32) && !defined(__CYGWIN__) +# define GOOGLE_GLOG_DLL_DECL __declspec(dllimport) +# else +# define GOOGLE_GLOG_DLL_DECL +# endif +#endif + +// We care a lot about number of bits things take up. Unfortunately, +// systems define their bit-specific ints in a lot of different ways. +// We use our own way, and have a typedef to get there. +// Note: these commands below may look like "#if 1" or "#if 0", but +// that's because they were constructed that way at ./configure time. +// Look at logging.h.in to see how they're calculated (based on your config). +#if 1 +#include // the normal place uint16_t is defined +#endif +#if 1 +#include // the normal place u_int16_t is defined +#endif +#if 1 +#include // a third place for uint16_t or u_int16_t +#endif + +#if 0 +#include +#endif + +namespace google { + +#if 1 // the C99 format +typedef int32_t int32; +typedef uint32_t uint32; +typedef int64_t int64; +typedef uint64_t uint64; +#elif 1 // the BSD format +typedef int32_t int32; +typedef u_int32_t uint32; +typedef int64_t int64; +typedef u_int64_t uint64; +#elif 0 // the windows (vc7) format +typedef __int32 int32; +typedef unsigned __int32 uint32; +typedef __int64 int64; +typedef unsigned __int64 uint64; +#else +#error Do not know how to define a 32-bit integer quantity on your system +#endif + +} + +// The global value of GOOGLE_STRIP_LOG. All the messages logged to +// LOG(XXX) with severity less than GOOGLE_STRIP_LOG will not be displayed. +// If it can be determined at compile time that the message will not be +// printed, the statement will be compiled out. +// +// Example: to strip out all INFO and WARNING messages, use the value +// of 2 below. To make an exception for WARNING messages from a single +// file, add "#define GOOGLE_STRIP_LOG 1" to that file _before_ including +// base/logging.h +#ifndef GOOGLE_STRIP_LOG +#define GOOGLE_STRIP_LOG 0 +#endif + +// GCC can be told that a certain branch is not likely to be taken (for +// instance, a CHECK failure), and use that information in static analysis. +// Giving it this information can help it optimize for the common case in +// the absence of better information (ie. -fprofile-arcs). +// +#ifndef GOOGLE_PREDICT_BRANCH_NOT_TAKEN +#if 1 +#define GOOGLE_PREDICT_BRANCH_NOT_TAKEN(x) (__builtin_expect(x, 0)) +#else +#define GOOGLE_PREDICT_BRANCH_NOT_TAKEN(x) x +#endif +#endif + +#ifndef GOOGLE_PREDICT_FALSE +#if 1 +#define GOOGLE_PREDICT_FALSE(x) (__builtin_expect(x, 0)) +#else +#define GOOGLE_PREDICT_FALSE(x) x +#endif +#endif + +#ifndef GOOGLE_PREDICT_TRUE +#if 1 +#define GOOGLE_PREDICT_TRUE(x) (__builtin_expect(!!(x), 1)) +#else +#define GOOGLE_PREDICT_TRUE(x) x +#endif +#endif + + +// Make a bunch of macros for logging. The way to log things is to stream +// things to LOG(). E.g., +// +// LOG(INFO) << "Found " << num_cookies << " cookies"; +// +// You can capture log messages in a string, rather than reporting them +// immediately: +// +// vector errors; +// LOG_STRING(ERROR, &errors) << "Couldn't parse cookie #" << cookie_num; +// +// This pushes back the new error onto 'errors'; if given a NULL pointer, +// it reports the error via LOG(ERROR). +// +// You can also do conditional logging: +// +// LOG_IF(INFO, num_cookies > 10) << "Got lots of cookies"; +// +// You can also do occasional logging (log every n'th occurrence of an +// event): +// +// LOG_EVERY_N(INFO, 10) << "Got the " << google::COUNTER << "th cookie"; +// +// The above will cause log messages to be output on the 1st, 11th, 21st, ... +// times it is executed. Note that the special google::COUNTER value is used +// to identify which repetition is happening. +// +// You can also do occasional conditional logging (log every n'th +// occurrence of an event, when condition is satisfied): +// +// LOG_IF_EVERY_N(INFO, (size > 1024), 10) << "Got the " << google::COUNTER +// << "th big cookie"; +// +// You can log messages the first N times your code executes a line. E.g. +// +// LOG_FIRST_N(INFO, 20) << "Got the " << google::COUNTER << "th cookie"; +// +// Outputs log messages for the first 20 times it is executed. +// +// Analogous SYSLOG, SYSLOG_IF, and SYSLOG_EVERY_N macros are available. +// These log to syslog as well as to the normal logs. If you use these at +// all, you need to be aware that syslog can drastically reduce performance, +// especially if it is configured for remote logging! Don't use these +// unless you fully understand this and have a concrete need to use them. +// Even then, try to minimize your use of them. +// +// There are also "debug mode" logging macros like the ones above: +// +// DLOG(INFO) << "Found cookies"; +// +// DLOG_IF(INFO, num_cookies > 10) << "Got lots of cookies"; +// +// DLOG_EVERY_N(INFO, 10) << "Got the " << google::COUNTER << "th cookie"; +// +// All "debug mode" logging is compiled away to nothing for non-debug mode +// compiles. +// +// We also have +// +// LOG_ASSERT(assertion); +// DLOG_ASSERT(assertion); +// +// which is syntactic sugar for {,D}LOG_IF(FATAL, assert fails) << assertion; +// +// There are "verbose level" logging macros. They look like +// +// VLOG(1) << "I'm printed when you run the program with --v=1 or more"; +// VLOG(2) << "I'm printed when you run the program with --v=2 or more"; +// +// These always log at the INFO log level (when they log at all). +// The verbose logging can also be turned on module-by-module. For instance, +// --vmodule=mapreduce=2,file=1,gfs*=3 --v=0 +// will cause: +// a. VLOG(2) and lower messages to be printed from mapreduce.{h,cc} +// b. VLOG(1) and lower messages to be printed from file.{h,cc} +// c. VLOG(3) and lower messages to be printed from files prefixed with "gfs" +// d. VLOG(0) and lower messages to be printed from elsewhere +// +// The wildcarding functionality shown by (c) supports both '*' (match +// 0 or more characters) and '?' (match any single character) wildcards. +// +// There's also VLOG_IS_ON(n) "verbose level" condition macro. To be used as +// +// if (VLOG_IS_ON(2)) { +// // do some logging preparation and logging +// // that can't be accomplished with just VLOG(2) << ...; +// } +// +// There are also VLOG_IF, VLOG_EVERY_N and VLOG_IF_EVERY_N "verbose level" +// condition macros for sample cases, when some extra computation and +// preparation for logs is not needed. +// VLOG_IF(1, (size > 1024)) +// << "I'm printed when size is more than 1024 and when you run the " +// "program with --v=1 or more"; +// VLOG_EVERY_N(1, 10) +// << "I'm printed every 10th occurrence, and when you run the program " +// "with --v=1 or more. Present occurence is " << google::COUNTER; +// VLOG_IF_EVERY_N(1, (size > 1024), 10) +// << "I'm printed on every 10th occurence of case when size is more " +// " than 1024, when you run the program with --v=1 or more. "; +// "Present occurence is " << google::COUNTER; +// +// The supported severity levels for macros that allow you to specify one +// are (in increasing order of severity) INFO, WARNING, ERROR, and FATAL. +// Note that messages of a given severity are logged not only in the +// logfile for that severity, but also in all logfiles of lower severity. +// E.g., a message of severity FATAL will be logged to the logfiles of +// severity FATAL, ERROR, WARNING, and INFO. +// +// There is also the special severity of DFATAL, which logs FATAL in +// debug mode, ERROR in normal mode. +// +// Very important: logging a message at the FATAL severity level causes +// the program to terminate (after the message is logged). +// +// Unless otherwise specified, logs will be written to the filename +// "...log..", followed +// by the date, time, and pid (you can't prevent the date, time, and pid +// from being in the filename). +// +// The logging code takes two flags: +// --v=# set the verbose level +// --logtostderr log all the messages to stderr instead of to logfiles + +// LOG LINE PREFIX FORMAT +// +// Log lines have this form: +// +// Lmmdd hh:mm:ss.uuuuuu threadid file:line] msg... +// +// where the fields are defined as follows: +// +// L A single character, representing the log level +// (eg 'I' for INFO) +// mm The month (zero padded; ie May is '05') +// dd The day (zero padded) +// hh:mm:ss.uuuuuu Time in hours, minutes and fractional seconds +// threadid The space-padded thread ID as returned by GetTID() +// (this matches the PID on Linux) +// file The file name +// line The line number +// msg The user-supplied message +// +// Example: +// +// I1103 11:57:31.739339 24395 google.cc:2341] Command line: ./some_prog +// I1103 11:57:31.739403 24395 google.cc:2342] Process id 24395 +// +// NOTE: although the microseconds are useful for comparing events on +// a single machine, clocks on different machines may not be well +// synchronized. Hence, use caution when comparing the low bits of +// timestamps from different machines. + +#ifndef DECLARE_VARIABLE +#define MUST_UNDEF_GFLAGS_DECLARE_MACROS +#define DECLARE_VARIABLE(type, shorttype, name, tn) \ + namespace fL##shorttype { \ + extern GOOGLE_GLOG_DLL_DECL type FLAGS_##name; \ + } \ + using fL##shorttype::FLAGS_##name + +// bool specialization +#define DECLARE_bool(name) \ + DECLARE_VARIABLE(bool, B, name, bool) + +// int32 specialization +#define DECLARE_int32(name) \ + DECLARE_VARIABLE(google::int32, I, name, int32) + +// Special case for string, because we have to specify the namespace +// std::string, which doesn't play nicely with our FLAG__namespace hackery. +#define DECLARE_string(name) \ + namespace fLS { \ + extern GOOGLE_GLOG_DLL_DECL std::string& FLAGS_##name; \ + } \ + using fLS::FLAGS_##name +#endif + +// Set whether log messages go to stderr instead of logfiles +DECLARE_bool(logtostderr); + +// Set whether log messages go to stderr in addition to logfiles. +DECLARE_bool(alsologtostderr); + +// Set color messages logged to stderr (if supported by terminal). +DECLARE_bool(colorlogtostderr); + +// Log messages at a level >= this flag are automatically sent to +// stderr in addition to log files. +DECLARE_int32(stderrthreshold); + +// Set whether the log prefix should be prepended to each line of output. +DECLARE_bool(log_prefix); + +// Log messages at a level <= this flag are buffered. +// Log messages at a higher level are flushed immediately. +DECLARE_int32(logbuflevel); + +// Sets the maximum number of seconds which logs may be buffered for. +DECLARE_int32(logbufsecs); + +// Log suppression level: messages logged at a lower level than this +// are suppressed. +DECLARE_int32(minloglevel); + +// If specified, logfiles are written into this directory instead of the +// default logging directory. +DECLARE_string(log_dir); + +// Set the log file mode. +DECLARE_int32(logfile_mode); + +// Sets the path of the directory into which to put additional links +// to the log files. +DECLARE_string(log_link); + +DECLARE_int32(v); // in vlog_is_on.cc + +// Sets the maximum log file size (in MB). +DECLARE_int32(max_log_size); + +// Sets whether to avoid logging to the disk if the disk is full. +DECLARE_bool(stop_logging_if_full_disk); + +#ifdef MUST_UNDEF_GFLAGS_DECLARE_MACROS +#undef MUST_UNDEF_GFLAGS_DECLARE_MACROS +#undef DECLARE_VARIABLE +#undef DECLARE_bool +#undef DECLARE_int32 +#undef DECLARE_string +#endif + +// Log messages below the GOOGLE_STRIP_LOG level will be compiled away for +// security reasons. See LOG(severtiy) below. + +// A few definitions of macros that don't generate much code. Since +// LOG(INFO) and its ilk are used all over our code, it's +// better to have compact code for these operations. + +#if GOOGLE_STRIP_LOG == 0 +#define COMPACT_GOOGLE_LOG_INFO google::LogMessage( \ + __FILE__, __LINE__) +#define LOG_TO_STRING_INFO(message) google::LogMessage( \ + __FILE__, __LINE__, google::GLOG_INFO, message) +#else +#define COMPACT_GOOGLE_LOG_INFO google::NullStream() +#define LOG_TO_STRING_INFO(message) google::NullStream() +#endif + +#if GOOGLE_STRIP_LOG <= 1 +#define COMPACT_GOOGLE_LOG_WARNING google::LogMessage( \ + __FILE__, __LINE__, google::GLOG_WARNING) +#define LOG_TO_STRING_WARNING(message) google::LogMessage( \ + __FILE__, __LINE__, google::GLOG_WARNING, message) +#else +#define COMPACT_GOOGLE_LOG_WARNING google::NullStream() +#define LOG_TO_STRING_WARNING(message) google::NullStream() +#endif + +#if GOOGLE_STRIP_LOG <= 2 +#define COMPACT_GOOGLE_LOG_ERROR google::LogMessage( \ + __FILE__, __LINE__, google::GLOG_ERROR) +#define LOG_TO_STRING_ERROR(message) google::LogMessage( \ + __FILE__, __LINE__, google::GLOG_ERROR, message) +#else +#define COMPACT_GOOGLE_LOG_ERROR google::NullStream() +#define LOG_TO_STRING_ERROR(message) google::NullStream() +#endif + +#if GOOGLE_STRIP_LOG <= 3 +#define COMPACT_GOOGLE_LOG_FATAL google::LogMessageFatal( \ + __FILE__, __LINE__) +#define LOG_TO_STRING_FATAL(message) google::LogMessage( \ + __FILE__, __LINE__, google::GLOG_FATAL, message) +#else +#define COMPACT_GOOGLE_LOG_FATAL google::NullStreamFatal() +#define LOG_TO_STRING_FATAL(message) google::NullStreamFatal() +#endif + +#if defined(NDEBUG) && !defined(DCHECK_ALWAYS_ON) +#define DCHECK_IS_ON() 0 +#else +#define DCHECK_IS_ON() 1 +#endif + +// For DFATAL, we want to use LogMessage (as opposed to +// LogMessageFatal), to be consistent with the original behavior. +#if !DCHECK_IS_ON() +#define COMPACT_GOOGLE_LOG_DFATAL COMPACT_GOOGLE_LOG_ERROR +#elif GOOGLE_STRIP_LOG <= 3 +#define COMPACT_GOOGLE_LOG_DFATAL google::LogMessage( \ + __FILE__, __LINE__, google::GLOG_FATAL) +#else +#define COMPACT_GOOGLE_LOG_DFATAL google::NullStreamFatal() +#endif + +#define GOOGLE_LOG_INFO(counter) google::LogMessage(__FILE__, __LINE__, google::GLOG_INFO, counter, &google::LogMessage::SendToLog) +#define SYSLOG_INFO(counter) \ + google::LogMessage(__FILE__, __LINE__, google::GLOG_INFO, counter, \ + &google::LogMessage::SendToSyslogAndLog) +#define GOOGLE_LOG_WARNING(counter) \ + google::LogMessage(__FILE__, __LINE__, google::GLOG_WARNING, counter, \ + &google::LogMessage::SendToLog) +#define SYSLOG_WARNING(counter) \ + google::LogMessage(__FILE__, __LINE__, google::GLOG_WARNING, counter, \ + &google::LogMessage::SendToSyslogAndLog) +#define GOOGLE_LOG_ERROR(counter) \ + google::LogMessage(__FILE__, __LINE__, google::GLOG_ERROR, counter, \ + &google::LogMessage::SendToLog) +#define SYSLOG_ERROR(counter) \ + google::LogMessage(__FILE__, __LINE__, google::GLOG_ERROR, counter, \ + &google::LogMessage::SendToSyslogAndLog) +#define GOOGLE_LOG_FATAL(counter) \ + google::LogMessage(__FILE__, __LINE__, google::GLOG_FATAL, counter, \ + &google::LogMessage::SendToLog) +#define SYSLOG_FATAL(counter) \ + google::LogMessage(__FILE__, __LINE__, google::GLOG_FATAL, counter, \ + &google::LogMessage::SendToSyslogAndLog) +#define GOOGLE_LOG_DFATAL(counter) \ + google::LogMessage(__FILE__, __LINE__, google::DFATAL_LEVEL, counter, \ + &google::LogMessage::SendToLog) +#define SYSLOG_DFATAL(counter) \ + google::LogMessage(__FILE__, __LINE__, google::DFATAL_LEVEL, counter, \ + &google::LogMessage::SendToSyslogAndLog) + +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) || defined(__CYGWIN32__) +// A very useful logging macro to log windows errors: +#define LOG_SYSRESULT(result) \ + if (FAILED(HRESULT_FROM_WIN32(result))) { \ + LPSTR message = NULL; \ + LPSTR msg = reinterpret_cast(&message); \ + DWORD message_length = FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | \ + FORMAT_MESSAGE_FROM_SYSTEM, \ + 0, result, 0, msg, 100, NULL); \ + if (message_length > 0) { \ + google::LogMessage(__FILE__, __LINE__, google::GLOG_ERROR, 0, \ + &google::LogMessage::SendToLog).stream() \ + << reinterpret_cast(message); \ + LocalFree(message); \ + } \ + } +#endif + +// We use the preprocessor's merging operator, "##", so that, e.g., +// LOG(INFO) becomes the token GOOGLE_LOG_INFO. There's some funny +// subtle difference between ostream member streaming functions (e.g., +// ostream::operator<<(int) and ostream non-member streaming functions +// (e.g., ::operator<<(ostream&, string&): it turns out that it's +// impossible to stream something like a string directly to an unnamed +// ostream. We employ a neat hack by calling the stream() member +// function of LogMessage which seems to avoid the problem. +#define LOG(severity) COMPACT_GOOGLE_LOG_ ## severity.stream() +#define SYSLOG(severity) SYSLOG_ ## severity(0).stream() + +namespace google { + +// They need the definitions of integer types. +#include "glog/log_severity.h" +#include "glog/vlog_is_on.h" + +// Initialize google's logging library. You will see the program name +// specified by argv0 in log outputs. +GOOGLE_GLOG_DLL_DECL void InitGoogleLogging(const char* argv0); + +// Shutdown google's logging library. +GOOGLE_GLOG_DLL_DECL void ShutdownGoogleLogging(); + +// Install a function which will be called after LOG(FATAL). +GOOGLE_GLOG_DLL_DECL void InstallFailureFunction(void (*fail_func)()); + +class LogSink; // defined below + +// If a non-NULL sink pointer is given, we push this message to that sink. +// For LOG_TO_SINK we then do normal LOG(severity) logging as well. +// This is useful for capturing messages and passing/storing them +// somewhere more specific than the global log of the process. +// Argument types: +// LogSink* sink; +// LogSeverity severity; +// The cast is to disambiguate NULL arguments. +#define LOG_TO_SINK(sink, severity) \ + google::LogMessage( \ + __FILE__, __LINE__, \ + google::GLOG_ ## severity, \ + static_cast(sink), true).stream() +#define LOG_TO_SINK_BUT_NOT_TO_LOGFILE(sink, severity) \ + google::LogMessage( \ + __FILE__, __LINE__, \ + google::GLOG_ ## severity, \ + static_cast(sink), false).stream() + +// If a non-NULL string pointer is given, we write this message to that string. +// We then do normal LOG(severity) logging as well. +// This is useful for capturing messages and storing them somewhere more +// specific than the global log of the process. +// Argument types: +// string* message; +// LogSeverity severity; +// The cast is to disambiguate NULL arguments. +// NOTE: LOG(severity) expands to LogMessage().stream() for the specified +// severity. +#define LOG_TO_STRING(severity, message) \ + LOG_TO_STRING_##severity(static_cast(message)).stream() + +// If a non-NULL pointer is given, we push the message onto the end +// of a vector of strings; otherwise, we report it with LOG(severity). +// This is handy for capturing messages and perhaps passing them back +// to the caller, rather than reporting them immediately. +// Argument types: +// LogSeverity severity; +// vector *outvec; +// The cast is to disambiguate NULL arguments. +#define LOG_STRING(severity, outvec) \ + LOG_TO_STRING_##severity(static_cast*>(outvec)).stream() + +#define LOG_IF(severity, condition) \ + !(condition) ? (void) 0 : google::LogMessageVoidify() & LOG(severity) +#define SYSLOG_IF(severity, condition) \ + !(condition) ? (void) 0 : google::LogMessageVoidify() & SYSLOG(severity) + +#define LOG_ASSERT(condition) \ + LOG_IF(FATAL, !(condition)) << "Assert failed: " #condition +#define SYSLOG_ASSERT(condition) \ + SYSLOG_IF(FATAL, !(condition)) << "Assert failed: " #condition + +// CHECK dies with a fatal error if condition is not true. It is *not* +// controlled by DCHECK_IS_ON(), so the check will be executed regardless of +// compilation mode. Therefore, it is safe to do things like: +// CHECK(fp->Write(x) == 4) +#define CHECK(condition) \ + LOG_IF(FATAL, GOOGLE_PREDICT_BRANCH_NOT_TAKEN(!(condition))) \ + << "Check failed: " #condition " " + +// A container for a string pointer which can be evaluated to a bool - +// true iff the pointer is NULL. +struct CheckOpString { + CheckOpString(std::string* str) : str_(str) { } + // No destructor: if str_ is non-NULL, we're about to LOG(FATAL), + // so there's no point in cleaning up str_. + operator bool() const { + return GOOGLE_PREDICT_BRANCH_NOT_TAKEN(str_ != NULL); + } + std::string* str_; +}; + +// Function is overloaded for integral types to allow static const +// integrals declared in classes and not defined to be used as arguments to +// CHECK* macros. It's not encouraged though. +template +inline const T& GetReferenceableValue(const T& t) { return t; } +inline char GetReferenceableValue(char t) { return t; } +inline unsigned char GetReferenceableValue(unsigned char t) { return t; } +inline signed char GetReferenceableValue(signed char t) { return t; } +inline short GetReferenceableValue(short t) { return t; } +inline unsigned short GetReferenceableValue(unsigned short t) { return t; } +inline int GetReferenceableValue(int t) { return t; } +inline unsigned int GetReferenceableValue(unsigned int t) { return t; } +inline long GetReferenceableValue(long t) { return t; } +inline unsigned long GetReferenceableValue(unsigned long t) { return t; } +inline long long GetReferenceableValue(long long t) { return t; } +inline unsigned long long GetReferenceableValue(unsigned long long t) { + return t; +} + +// This is a dummy class to define the following operator. +struct DummyClassToDefineOperator {}; + +} + +// Define global operator<< to declare using ::operator<<. +// This declaration will allow use to use CHECK macros for user +// defined classes which have operator<< (e.g., stl_logging.h). +inline std::ostream& operator<<( + std::ostream& out, const google::DummyClassToDefineOperator&) { + return out; +} + +namespace google { + +// This formats a value for a failing CHECK_XX statement. Ordinarily, +// it uses the definition for operator<<, with a few special cases below. +template +inline void MakeCheckOpValueString(std::ostream* os, const T& v) { + (*os) << v; +} + +// Overrides for char types provide readable values for unprintable +// characters. +template <> GOOGLE_GLOG_DLL_DECL +void MakeCheckOpValueString(std::ostream* os, const char& v); +template <> GOOGLE_GLOG_DLL_DECL +void MakeCheckOpValueString(std::ostream* os, const signed char& v); +template <> GOOGLE_GLOG_DLL_DECL +void MakeCheckOpValueString(std::ostream* os, const unsigned char& v); + +// Build the error message string. Specify no inlining for code size. +template +std::string* MakeCheckOpString(const T1& v1, const T2& v2, const char* exprtext) + __attribute__ ((noinline)); + +namespace base { +namespace internal { + +// If "s" is less than base_logging::INFO, returns base_logging::INFO. +// If "s" is greater than base_logging::FATAL, returns +// base_logging::ERROR. Otherwise, returns "s". +LogSeverity NormalizeSeverity(LogSeverity s); + +} // namespace internal + +// A helper class for formatting "expr (V1 vs. V2)" in a CHECK_XX +// statement. See MakeCheckOpString for sample usage. Other +// approaches were considered: use of a template method (e.g., +// base::BuildCheckOpString(exprtext, base::Print, &v1, +// base::Print, &v2), however this approach has complications +// related to volatile arguments and function-pointer arguments). +class GOOGLE_GLOG_DLL_DECL CheckOpMessageBuilder { + public: + // Inserts "exprtext" and " (" to the stream. + explicit CheckOpMessageBuilder(const char *exprtext); + // Deletes "stream_". + ~CheckOpMessageBuilder(); + // For inserting the first variable. + std::ostream* ForVar1() { return stream_; } + // For inserting the second variable (adds an intermediate " vs. "). + std::ostream* ForVar2(); + // Get the result (inserts the closing ")"). + std::string* NewString(); + + private: + std::ostringstream *stream_; +}; + +} // namespace base + +template +std::string* MakeCheckOpString(const T1& v1, const T2& v2, const char* exprtext) { + base::CheckOpMessageBuilder comb(exprtext); + MakeCheckOpValueString(comb.ForVar1(), v1); + MakeCheckOpValueString(comb.ForVar2(), v2); + return comb.NewString(); +} + +// Helper functions for CHECK_OP macro. +// The (int, int) specialization works around the issue that the compiler +// will not instantiate the template version of the function on values of +// unnamed enum type - see comment below. +#define DEFINE_CHECK_OP_IMPL(name, op) \ + template \ + inline std::string* name##Impl(const T1& v1, const T2& v2, \ + const char* exprtext) { \ + if (GOOGLE_PREDICT_TRUE(v1 op v2)) return NULL; \ + else return MakeCheckOpString(v1, v2, exprtext); \ + } \ + inline std::string* name##Impl(int v1, int v2, const char* exprtext) { \ + return name##Impl(v1, v2, exprtext); \ + } + +// We use the full name Check_EQ, Check_NE, etc. in case the file including +// base/logging.h provides its own #defines for the simpler names EQ, NE, etc. +// This happens if, for example, those are used as token names in a +// yacc grammar. +DEFINE_CHECK_OP_IMPL(Check_EQ, ==) // Compilation error with CHECK_EQ(NULL, x)? +DEFINE_CHECK_OP_IMPL(Check_NE, !=) // Use CHECK(x == NULL) instead. +DEFINE_CHECK_OP_IMPL(Check_LE, <=) +DEFINE_CHECK_OP_IMPL(Check_LT, < ) +DEFINE_CHECK_OP_IMPL(Check_GE, >=) +DEFINE_CHECK_OP_IMPL(Check_GT, > ) +#undef DEFINE_CHECK_OP_IMPL + +// Helper macro for binary operators. +// Don't use this macro directly in your code, use CHECK_EQ et al below. + +#if defined(STATIC_ANALYSIS) +// Only for static analysis tool to know that it is equivalent to assert +#define CHECK_OP_LOG(name, op, val1, val2, log) CHECK((val1) op (val2)) +#elif DCHECK_IS_ON() +// In debug mode, avoid constructing CheckOpStrings if possible, +// to reduce the overhead of CHECK statments by 2x. +// Real DCHECK-heavy tests have seen 1.5x speedups. + +// The meaning of "string" might be different between now and +// when this macro gets invoked (e.g., if someone is experimenting +// with other string implementations that get defined after this +// file is included). Save the current meaning now and use it +// in the macro. +typedef std::string _Check_string; +#define CHECK_OP_LOG(name, op, val1, val2, log) \ + while (google::_Check_string* _result = \ + google::Check##name##Impl( \ + google::GetReferenceableValue(val1), \ + google::GetReferenceableValue(val2), \ + #val1 " " #op " " #val2)) \ + log(__FILE__, __LINE__, \ + google::CheckOpString(_result)).stream() +#else +// In optimized mode, use CheckOpString to hint to compiler that +// the while condition is unlikely. +#define CHECK_OP_LOG(name, op, val1, val2, log) \ + while (google::CheckOpString _result = \ + google::Check##name##Impl( \ + google::GetReferenceableValue(val1), \ + google::GetReferenceableValue(val2), \ + #val1 " " #op " " #val2)) \ + log(__FILE__, __LINE__, _result).stream() +#endif // STATIC_ANALYSIS, DCHECK_IS_ON() + +#if GOOGLE_STRIP_LOG <= 3 +#define CHECK_OP(name, op, val1, val2) \ + CHECK_OP_LOG(name, op, val1, val2, google::LogMessageFatal) +#else +#define CHECK_OP(name, op, val1, val2) \ + CHECK_OP_LOG(name, op, val1, val2, google::NullStreamFatal) +#endif // STRIP_LOG <= 3 + +// Equality/Inequality checks - compare two values, and log a FATAL message +// including the two values when the result is not as expected. The values +// must have operator<<(ostream, ...) defined. +// +// You may append to the error message like so: +// CHECK_NE(1, 2) << ": The world must be ending!"; +// +// We are very careful to ensure that each argument is evaluated exactly +// once, and that anything which is legal to pass as a function argument is +// legal here. In particular, the arguments may be temporary expressions +// which will end up being destroyed at the end of the apparent statement, +// for example: +// CHECK_EQ(string("abc")[1], 'b'); +// +// WARNING: These don't compile correctly if one of the arguments is a pointer +// and the other is NULL. To work around this, simply static_cast NULL to the +// type of the desired pointer. + +#define CHECK_EQ(val1, val2) CHECK_OP(_EQ, ==, val1, val2) +#define CHECK_NE(val1, val2) CHECK_OP(_NE, !=, val1, val2) +#define CHECK_LE(val1, val2) CHECK_OP(_LE, <=, val1, val2) +#define CHECK_LT(val1, val2) CHECK_OP(_LT, < , val1, val2) +#define CHECK_GE(val1, val2) CHECK_OP(_GE, >=, val1, val2) +#define CHECK_GT(val1, val2) CHECK_OP(_GT, > , val1, val2) + +// Check that the input is non NULL. This very useful in constructor +// initializer lists. + +#define CHECK_NOTNULL(val) \ + google::CheckNotNull(__FILE__, __LINE__, "'" #val "' Must be non NULL", (val)) + +// Helper functions for string comparisons. +// To avoid bloat, the definitions are in logging.cc. +#define DECLARE_CHECK_STROP_IMPL(func, expected) \ + GOOGLE_GLOG_DLL_DECL std::string* Check##func##expected##Impl( \ + const char* s1, const char* s2, const char* names); +DECLARE_CHECK_STROP_IMPL(strcmp, true) +DECLARE_CHECK_STROP_IMPL(strcmp, false) +DECLARE_CHECK_STROP_IMPL(strcasecmp, true) +DECLARE_CHECK_STROP_IMPL(strcasecmp, false) +#undef DECLARE_CHECK_STROP_IMPL + +// Helper macro for string comparisons. +// Don't use this macro directly in your code, use CHECK_STREQ et al below. +#define CHECK_STROP(func, op, expected, s1, s2) \ + while (google::CheckOpString _result = \ + google::Check##func##expected##Impl((s1), (s2), \ + #s1 " " #op " " #s2)) \ + LOG(FATAL) << *_result.str_ + + +// String (char*) equality/inequality checks. +// CASE versions are case-insensitive. +// +// Note that "s1" and "s2" may be temporary strings which are destroyed +// by the compiler at the end of the current "full expression" +// (e.g. CHECK_STREQ(Foo().c_str(), Bar().c_str())). + +#define CHECK_STREQ(s1, s2) CHECK_STROP(strcmp, ==, true, s1, s2) +#define CHECK_STRNE(s1, s2) CHECK_STROP(strcmp, !=, false, s1, s2) +#define CHECK_STRCASEEQ(s1, s2) CHECK_STROP(strcasecmp, ==, true, s1, s2) +#define CHECK_STRCASENE(s1, s2) CHECK_STROP(strcasecmp, !=, false, s1, s2) + +#define CHECK_INDEX(I,A) CHECK(I < (sizeof(A)/sizeof(A[0]))) +#define CHECK_BOUND(B,A) CHECK(B <= (sizeof(A)/sizeof(A[0]))) + +#define CHECK_DOUBLE_EQ(val1, val2) \ + do { \ + CHECK_LE((val1), (val2)+0.000000000000001L); \ + CHECK_GE((val1), (val2)-0.000000000000001L); \ + } while (0) + +#define CHECK_NEAR(val1, val2, margin) \ + do { \ + CHECK_LE((val1), (val2)+(margin)); \ + CHECK_GE((val1), (val2)-(margin)); \ + } while (0) + +// perror()..googly style! +// +// PLOG() and PLOG_IF() and PCHECK() behave exactly like their LOG* and +// CHECK equivalents with the addition that they postpend a description +// of the current state of errno to their output lines. + +#define PLOG(severity) GOOGLE_PLOG(severity, 0).stream() + +#define GOOGLE_PLOG(severity, counter) \ + google::ErrnoLogMessage( \ + __FILE__, __LINE__, google::GLOG_ ## severity, counter, \ + &google::LogMessage::SendToLog) + +#define PLOG_IF(severity, condition) \ + !(condition) ? (void) 0 : google::LogMessageVoidify() & PLOG(severity) + +// A CHECK() macro that postpends errno if the condition is false. E.g. +// +// if (poll(fds, nfds, timeout) == -1) { PCHECK(errno == EINTR); ... } +#define PCHECK(condition) \ + PLOG_IF(FATAL, GOOGLE_PREDICT_BRANCH_NOT_TAKEN(!(condition))) \ + << "Check failed: " #condition " " + +// A CHECK() macro that lets you assert the success of a function that +// returns -1 and sets errno in case of an error. E.g. +// +// CHECK_ERR(mkdir(path, 0700)); +// +// or +// +// int fd = open(filename, flags); CHECK_ERR(fd) << ": open " << filename; +#define CHECK_ERR(invocation) \ +PLOG_IF(FATAL, GOOGLE_PREDICT_BRANCH_NOT_TAKEN((invocation) == -1)) \ + << #invocation + +// Use macro expansion to create, for each use of LOG_EVERY_N(), static +// variables with the __LINE__ expansion as part of the variable name. +#define LOG_EVERY_N_VARNAME(base, line) LOG_EVERY_N_VARNAME_CONCAT(base, line) +#define LOG_EVERY_N_VARNAME_CONCAT(base, line) base ## line + +#define LOG_OCCURRENCES LOG_EVERY_N_VARNAME(occurrences_, __LINE__) +#define LOG_OCCURRENCES_MOD_N LOG_EVERY_N_VARNAME(occurrences_mod_n_, __LINE__) + +#define SOME_KIND_OF_LOG_EVERY_N(severity, n, what_to_do) \ + static int LOG_OCCURRENCES = 0, LOG_OCCURRENCES_MOD_N = 0; \ + ++LOG_OCCURRENCES; \ + if (++LOG_OCCURRENCES_MOD_N > n) LOG_OCCURRENCES_MOD_N -= n; \ + if (LOG_OCCURRENCES_MOD_N == 1) \ + google::LogMessage( \ + __FILE__, __LINE__, google::GLOG_ ## severity, LOG_OCCURRENCES, \ + &what_to_do).stream() + +#define SOME_KIND_OF_LOG_IF_EVERY_N(severity, condition, n, what_to_do) \ + static int LOG_OCCURRENCES = 0, LOG_OCCURRENCES_MOD_N = 0; \ + ++LOG_OCCURRENCES; \ + if (condition && \ + ((LOG_OCCURRENCES_MOD_N=(LOG_OCCURRENCES_MOD_N + 1) % n) == (1 % n))) \ + google::LogMessage( \ + __FILE__, __LINE__, google::GLOG_ ## severity, LOG_OCCURRENCES, \ + &what_to_do).stream() + +#define SOME_KIND_OF_PLOG_EVERY_N(severity, n, what_to_do) \ + static int LOG_OCCURRENCES = 0, LOG_OCCURRENCES_MOD_N = 0; \ + ++LOG_OCCURRENCES; \ + if (++LOG_OCCURRENCES_MOD_N > n) LOG_OCCURRENCES_MOD_N -= n; \ + if (LOG_OCCURRENCES_MOD_N == 1) \ + google::ErrnoLogMessage( \ + __FILE__, __LINE__, google::GLOG_ ## severity, LOG_OCCURRENCES, \ + &what_to_do).stream() + +#define SOME_KIND_OF_LOG_FIRST_N(severity, n, what_to_do) \ + static int LOG_OCCURRENCES = 0; \ + if (LOG_OCCURRENCES <= n) \ + ++LOG_OCCURRENCES; \ + if (LOG_OCCURRENCES <= n) \ + google::LogMessage( \ + __FILE__, __LINE__, google::GLOG_ ## severity, LOG_OCCURRENCES, \ + &what_to_do).stream() + +namespace glog_internal_namespace_ { +template +struct CompileAssert { +}; +struct CrashReason; + +// Returns true if FailureSignalHandler is installed. +bool IsFailureSignalHandlerInstalled(); +} // namespace glog_internal_namespace_ + +#define GOOGLE_GLOG_COMPILE_ASSERT(expr, msg) \ + typedef google::glog_internal_namespace_::CompileAssert<(bool(expr))> msg[bool(expr) ? 1 : -1] + +#define LOG_EVERY_N(severity, n) \ + GOOGLE_GLOG_COMPILE_ASSERT(google::GLOG_ ## severity < \ + google::NUM_SEVERITIES, \ + INVALID_REQUESTED_LOG_SEVERITY); \ + SOME_KIND_OF_LOG_EVERY_N(severity, (n), google::LogMessage::SendToLog) + +#define SYSLOG_EVERY_N(severity, n) \ + SOME_KIND_OF_LOG_EVERY_N(severity, (n), google::LogMessage::SendToSyslogAndLog) + +#define PLOG_EVERY_N(severity, n) \ + SOME_KIND_OF_PLOG_EVERY_N(severity, (n), google::LogMessage::SendToLog) + +#define LOG_FIRST_N(severity, n) \ + SOME_KIND_OF_LOG_FIRST_N(severity, (n), google::LogMessage::SendToLog) + +#define LOG_IF_EVERY_N(severity, condition, n) \ + SOME_KIND_OF_LOG_IF_EVERY_N(severity, (condition), (n), google::LogMessage::SendToLog) + +// We want the special COUNTER value available for LOG_EVERY_X()'ed messages +enum PRIVATE_Counter {COUNTER}; + +#ifdef GLOG_NO_ABBREVIATED_SEVERITIES +// wingdi.h defines ERROR to be 0. When we call LOG(ERROR), it gets +// substituted with 0, and it expands to COMPACT_GOOGLE_LOG_0. To allow us +// to keep using this syntax, we define this macro to do the same thing +// as COMPACT_GOOGLE_LOG_ERROR. +#define COMPACT_GOOGLE_LOG_0 COMPACT_GOOGLE_LOG_ERROR +#define SYSLOG_0 SYSLOG_ERROR +#define LOG_TO_STRING_0 LOG_TO_STRING_ERROR +// Needed for LOG_IS_ON(ERROR). +const LogSeverity GLOG_0 = GLOG_ERROR; +#else +// Users may include windows.h after logging.h without +// GLOG_NO_ABBREVIATED_SEVERITIES nor WIN32_LEAN_AND_MEAN. +// For this case, we cannot detect if ERROR is defined before users +// actually use ERROR. Let's make an undefined symbol to warn users. +# define GLOG_ERROR_MSG ERROR_macro_is_defined_Define_GLOG_NO_ABBREVIATED_SEVERITIES_before_including_logging_h_See_the_document_for_detail +# define COMPACT_GOOGLE_LOG_0 GLOG_ERROR_MSG +# define SYSLOG_0 GLOG_ERROR_MSG +# define LOG_TO_STRING_0 GLOG_ERROR_MSG +# define GLOG_0 GLOG_ERROR_MSG +#endif + +// Plus some debug-logging macros that get compiled to nothing for production + +#if DCHECK_IS_ON() + +#define DLOG(severity) LOG(severity) +#define DVLOG(verboselevel) VLOG(verboselevel) +#define DLOG_IF(severity, condition) LOG_IF(severity, condition) +#define DLOG_EVERY_N(severity, n) LOG_EVERY_N(severity, n) +#define DLOG_IF_EVERY_N(severity, condition, n) \ + LOG_IF_EVERY_N(severity, condition, n) +#define DLOG_ASSERT(condition) LOG_ASSERT(condition) + +// debug-only checking. executed if DCHECK_IS_ON(). +#define DCHECK(condition) CHECK(condition) +#define DCHECK_EQ(val1, val2) CHECK_EQ(val1, val2) +#define DCHECK_NE(val1, val2) CHECK_NE(val1, val2) +#define DCHECK_LE(val1, val2) CHECK_LE(val1, val2) +#define DCHECK_LT(val1, val2) CHECK_LT(val1, val2) +#define DCHECK_GE(val1, val2) CHECK_GE(val1, val2) +#define DCHECK_GT(val1, val2) CHECK_GT(val1, val2) +#define DCHECK_NOTNULL(val) CHECK_NOTNULL(val) +#define DCHECK_STREQ(str1, str2) CHECK_STREQ(str1, str2) +#define DCHECK_STRCASEEQ(str1, str2) CHECK_STRCASEEQ(str1, str2) +#define DCHECK_STRNE(str1, str2) CHECK_STRNE(str1, str2) +#define DCHECK_STRCASENE(str1, str2) CHECK_STRCASENE(str1, str2) + +#else // !DCHECK_IS_ON() + +#define DLOG(severity) \ + true ? (void) 0 : google::LogMessageVoidify() & LOG(severity) + +#define DVLOG(verboselevel) \ + (true || !VLOG_IS_ON(verboselevel)) ?\ + (void) 0 : google::LogMessageVoidify() & LOG(INFO) + +#define DLOG_IF(severity, condition) \ + (true || !(condition)) ? (void) 0 : google::LogMessageVoidify() & LOG(severity) + +#define DLOG_EVERY_N(severity, n) \ + true ? (void) 0 : google::LogMessageVoidify() & LOG(severity) + +#define DLOG_IF_EVERY_N(severity, condition, n) \ + (true || !(condition))? (void) 0 : google::LogMessageVoidify() & LOG(severity) + +#define DLOG_ASSERT(condition) \ + true ? (void) 0 : LOG_ASSERT(condition) + +// MSVC warning C4127: conditional expression is constant +#define DCHECK(condition) \ + GLOG_MSVC_PUSH_DISABLE_WARNING(4127) \ + while (false) \ + GLOG_MSVC_POP_WARNING() CHECK(condition) + +#define DCHECK_EQ(val1, val2) \ + GLOG_MSVC_PUSH_DISABLE_WARNING(4127) \ + while (false) \ + GLOG_MSVC_POP_WARNING() CHECK_EQ(val1, val2) + +#define DCHECK_NE(val1, val2) \ + GLOG_MSVC_PUSH_DISABLE_WARNING(4127) \ + while (false) \ + GLOG_MSVC_POP_WARNING() CHECK_NE(val1, val2) + +#define DCHECK_LE(val1, val2) \ + GLOG_MSVC_PUSH_DISABLE_WARNING(4127) \ + while (false) \ + GLOG_MSVC_POP_WARNING() CHECK_LE(val1, val2) + +#define DCHECK_LT(val1, val2) \ + GLOG_MSVC_PUSH_DISABLE_WARNING(4127) \ + while (false) \ + GLOG_MSVC_POP_WARNING() CHECK_LT(val1, val2) + +#define DCHECK_GE(val1, val2) \ + GLOG_MSVC_PUSH_DISABLE_WARNING(4127) \ + while (false) \ + GLOG_MSVC_POP_WARNING() CHECK_GE(val1, val2) + +#define DCHECK_GT(val1, val2) \ + GLOG_MSVC_PUSH_DISABLE_WARNING(4127) \ + while (false) \ + GLOG_MSVC_POP_WARNING() CHECK_GT(val1, val2) + +// You may see warnings in release mode if you don't use the return +// value of DCHECK_NOTNULL. Please just use DCHECK for such cases. +#define DCHECK_NOTNULL(val) (val) + +#define DCHECK_STREQ(str1, str2) \ + GLOG_MSVC_PUSH_DISABLE_WARNING(4127) \ + while (false) \ + GLOG_MSVC_POP_WARNING() CHECK_STREQ(str1, str2) + +#define DCHECK_STRCASEEQ(str1, str2) \ + GLOG_MSVC_PUSH_DISABLE_WARNING(4127) \ + while (false) \ + GLOG_MSVC_POP_WARNING() CHECK_STRCASEEQ(str1, str2) + +#define DCHECK_STRNE(str1, str2) \ + GLOG_MSVC_PUSH_DISABLE_WARNING(4127) \ + while (false) \ + GLOG_MSVC_POP_WARNING() CHECK_STRNE(str1, str2) + +#define DCHECK_STRCASENE(str1, str2) \ + GLOG_MSVC_PUSH_DISABLE_WARNING(4127) \ + while (false) \ + GLOG_MSVC_POP_WARNING() CHECK_STRCASENE(str1, str2) + +#endif // DCHECK_IS_ON() + +// Log only in verbose mode. + +#define VLOG(verboselevel) LOG_IF(INFO, VLOG_IS_ON(verboselevel)) + +#define VLOG_IF(verboselevel, condition) \ + LOG_IF(INFO, (condition) && VLOG_IS_ON(verboselevel)) + +#define VLOG_EVERY_N(verboselevel, n) \ + LOG_IF_EVERY_N(INFO, VLOG_IS_ON(verboselevel), n) + +#define VLOG_IF_EVERY_N(verboselevel, condition, n) \ + LOG_IF_EVERY_N(INFO, (condition) && VLOG_IS_ON(verboselevel), n) + +namespace base_logging { + +// LogMessage::LogStream is a std::ostream backed by this streambuf. +// This class ignores overflow and leaves two bytes at the end of the +// buffer to allow for a '\n' and '\0'. +class GOOGLE_GLOG_DLL_DECL LogStreamBuf : public std::streambuf { + public: + // REQUIREMENTS: "len" must be >= 2 to account for the '\n' and '\n'. + LogStreamBuf(char *buf, int len) { + setp(buf, buf + len - 2); + } + // This effectively ignores overflow. + virtual int_type overflow(int_type ch) { + return ch; + } + + // Legacy public ostrstream method. + size_t pcount() const { return pptr() - pbase(); } + char* pbase() const { return std::streambuf::pbase(); } +}; + +} // namespace base_logging + +// +// This class more or less represents a particular log message. You +// create an instance of LogMessage and then stream stuff to it. +// When you finish streaming to it, ~LogMessage is called and the +// full message gets streamed to the appropriate destination. +// +// You shouldn't actually use LogMessage's constructor to log things, +// though. You should use the LOG() macro (and variants thereof) +// above. +class GOOGLE_GLOG_DLL_DECL LogMessage { +public: + enum { + // Passing kNoLogPrefix for the line number disables the + // log-message prefix. Useful for using the LogMessage + // infrastructure as a printing utility. See also the --log_prefix + // flag for controlling the log-message prefix on an + // application-wide basis. + kNoLogPrefix = -1 + }; + + // LogStream inherit from non-DLL-exported class (std::ostrstream) + // and VC++ produces a warning for this situation. + // However, MSDN says "C4275 can be ignored in Microsoft Visual C++ + // 2005 if you are deriving from a type in the Standard C++ Library" + // http://msdn.microsoft.com/en-us/library/3tdb471s(VS.80).aspx + // Let's just ignore the warning. +#ifdef _MSC_VER +# pragma warning(disable: 4275) +#endif + class GOOGLE_GLOG_DLL_DECL LogStream : public std::ostream { +#ifdef _MSC_VER +# pragma warning(default: 4275) +#endif + public: + LogStream(char *buf, int len, int ctr) + : std::ostream(NULL), + streambuf_(buf, len), + ctr_(ctr), + self_(this) { + rdbuf(&streambuf_); + } + + int ctr() const { return ctr_; } + void set_ctr(int ctr) { ctr_ = ctr; } + LogStream* self() const { return self_; } + + // Legacy std::streambuf methods. + size_t pcount() const { return streambuf_.pcount(); } + char* pbase() const { return streambuf_.pbase(); } + char* str() const { return pbase(); } + + private: + LogStream(const LogStream&); + LogStream& operator=(const LogStream&); + base_logging::LogStreamBuf streambuf_; + int ctr_; // Counter hack (for the LOG_EVERY_X() macro) + LogStream *self_; // Consistency check hack + }; + +public: + // icc 8 requires this typedef to avoid an internal compiler error. + typedef void (LogMessage::*SendMethod)(); + + LogMessage(const char* file, int line, LogSeverity severity, int ctr, + SendMethod send_method); + + // Two special constructors that generate reduced amounts of code at + // LOG call sites for common cases. + + // Used for LOG(INFO): Implied are: + // severity = INFO, ctr = 0, send_method = &LogMessage::SendToLog. + // + // Using this constructor instead of the more complex constructor above + // saves 19 bytes per call site. + LogMessage(const char* file, int line); + + // Used for LOG(severity) where severity != INFO. Implied + // are: ctr = 0, send_method = &LogMessage::SendToLog + // + // Using this constructor instead of the more complex constructor above + // saves 17 bytes per call site. + LogMessage(const char* file, int line, LogSeverity severity); + + // Constructor to log this message to a specified sink (if not NULL). + // Implied are: ctr = 0, send_method = &LogMessage::SendToSinkAndLog if + // also_send_to_log is true, send_method = &LogMessage::SendToSink otherwise. + LogMessage(const char* file, int line, LogSeverity severity, LogSink* sink, + bool also_send_to_log); + + // Constructor where we also give a vector pointer + // for storing the messages (if the pointer is not NULL). + // Implied are: ctr = 0, send_method = &LogMessage::SaveOrSendToLog. + LogMessage(const char* file, int line, LogSeverity severity, + std::vector* outvec); + + // Constructor where we also give a string pointer for storing the + // message (if the pointer is not NULL). Implied are: ctr = 0, + // send_method = &LogMessage::WriteToStringAndLog. + LogMessage(const char* file, int line, LogSeverity severity, + std::string* message); + + // A special constructor used for check failures + LogMessage(const char* file, int line, const CheckOpString& result); + + ~LogMessage(); + + // Flush a buffered message to the sink set in the constructor. Always + // called by the destructor, it may also be called from elsewhere if + // needed. Only the first call is actioned; any later ones are ignored. + void Flush(); + + // An arbitrary limit on the length of a single log message. This + // is so that streaming can be done more efficiently. + static const size_t kMaxLogMessageLen; + + // Theses should not be called directly outside of logging.*, + // only passed as SendMethod arguments to other LogMessage methods: + void SendToLog(); // Actually dispatch to the logs + void SendToSyslogAndLog(); // Actually dispatch to syslog and the logs + + // Call abort() or similar to perform LOG(FATAL) crash. + static void __attribute__ ((noreturn)) Fail(); + + std::ostream& stream(); + + int preserved_errno() const; + + // Must be called without the log_mutex held. (L < log_mutex) + static int64 num_messages(int severity); + + struct LogMessageData; + +private: + // Fully internal SendMethod cases: + void SendToSinkAndLog(); // Send to sink if provided and dispatch to the logs + void SendToSink(); // Send to sink if provided, do nothing otherwise. + + // Write to string if provided and dispatch to the logs. + void WriteToStringAndLog(); + + void SaveOrSendToLog(); // Save to stringvec if provided, else to logs + + void Init(const char* file, int line, LogSeverity severity, + void (LogMessage::*send_method)()); + + // Used to fill in crash information during LOG(FATAL) failures. + void RecordCrashReason(glog_internal_namespace_::CrashReason* reason); + + // Counts of messages sent at each priority: + static int64 num_messages_[NUM_SEVERITIES]; // under log_mutex + + // We keep the data in a separate struct so that each instance of + // LogMessage uses less stack space. + LogMessageData* allocated_; + LogMessageData* data_; + + friend class LogDestination; + + LogMessage(const LogMessage&); + void operator=(const LogMessage&); +}; + +// This class happens to be thread-hostile because all instances share +// a single data buffer, but since it can only be created just before +// the process dies, we don't worry so much. +class GOOGLE_GLOG_DLL_DECL LogMessageFatal : public LogMessage { + public: + LogMessageFatal(const char* file, int line); + LogMessageFatal(const char* file, int line, const CheckOpString& result); + __attribute__ ((noreturn)) ~LogMessageFatal(); +}; + +// A non-macro interface to the log facility; (useful +// when the logging level is not a compile-time constant). +inline void LogAtLevel(int const severity, std::string const &msg) { + LogMessage(__FILE__, __LINE__, severity).stream() << msg; +} + +// A macro alternative of LogAtLevel. New code may want to use this +// version since there are two advantages: 1. this version outputs the +// file name and the line number where this macro is put like other +// LOG macros, 2. this macro can be used as C++ stream. +#define LOG_AT_LEVEL(severity) google::LogMessage(__FILE__, __LINE__, severity).stream() + +// Check if it's compiled in C++11 mode. +// +// GXX_EXPERIMENTAL_CXX0X is defined by gcc and clang up to at least +// gcc-4.7 and clang-3.1 (2011-12-13). __cplusplus was defined to 1 +// in gcc before 4.7 (Crosstool 16) and clang before 3.1, but is +// defined according to the language version in effect thereafter. +// Microsoft Visual Studio 14 (2015) sets __cplusplus==199711 despite +// reasonably good C++11 support, so we set LANG_CXX for it and +// newer versions (_MSC_VER >= 1900). +#if (defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L || \ + (defined(_MSC_VER) && _MSC_VER >= 1900)) +// Helper for CHECK_NOTNULL(). +// +// In C++11, all cases can be handled by a single function. Since the value +// category of the argument is preserved (also for rvalue references), +// member initializer lists like the one below will compile correctly: +// +// Foo() +// : x_(CHECK_NOTNULL(MethodReturningUniquePtr())) {} +template +T CheckNotNull(const char* file, int line, const char* names, T&& t) { + if (t == nullptr) { + LogMessageFatal(file, line, new std::string(names)); + } + return std::forward(t); +} + +#else + +// A small helper for CHECK_NOTNULL(). +template +T* CheckNotNull(const char *file, int line, const char *names, T* t) { + if (t == NULL) { + LogMessageFatal(file, line, new std::string(names)); + } + return t; +} +#endif + +// Allow folks to put a counter in the LOG_EVERY_X()'ed messages. This +// only works if ostream is a LogStream. If the ostream is not a +// LogStream you'll get an assert saying as much at runtime. +GOOGLE_GLOG_DLL_DECL std::ostream& operator<<(std::ostream &os, + const PRIVATE_Counter&); + + +// Derived class for PLOG*() above. +class GOOGLE_GLOG_DLL_DECL ErrnoLogMessage : public LogMessage { + public: + + ErrnoLogMessage(const char* file, int line, LogSeverity severity, int ctr, + void (LogMessage::*send_method)()); + + // Postpends ": strerror(errno) [errno]". + ~ErrnoLogMessage(); + + private: + ErrnoLogMessage(const ErrnoLogMessage&); + void operator=(const ErrnoLogMessage&); +}; + + +// This class is used to explicitly ignore values in the conditional +// logging macros. This avoids compiler warnings like "value computed +// is not used" and "statement has no effect". + +class GOOGLE_GLOG_DLL_DECL LogMessageVoidify { + public: + LogMessageVoidify() { } + // This has to be an operator with a precedence lower than << but + // higher than ?: + void operator&(std::ostream&) { } +}; + + +// Flushes all log files that contains messages that are at least of +// the specified severity level. Thread-safe. +GOOGLE_GLOG_DLL_DECL void FlushLogFiles(LogSeverity min_severity); + +// Flushes all log files that contains messages that are at least of +// the specified severity level. Thread-hostile because it ignores +// locking -- used for catastrophic failures. +GOOGLE_GLOG_DLL_DECL void FlushLogFilesUnsafe(LogSeverity min_severity); + +// +// Set the destination to which a particular severity level of log +// messages is sent. If base_filename is "", it means "don't log this +// severity". Thread-safe. +// +GOOGLE_GLOG_DLL_DECL void SetLogDestination(LogSeverity severity, + const char* base_filename); + +// +// Set the basename of the symlink to the latest log file at a given +// severity. If symlink_basename is empty, do not make a symlink. If +// you don't call this function, the symlink basename is the +// invocation name of the program. Thread-safe. +// +GOOGLE_GLOG_DLL_DECL void SetLogSymlink(LogSeverity severity, + const char* symlink_basename); + +// +// Used to send logs to some other kind of destination +// Users should subclass LogSink and override send to do whatever they want. +// Implementations must be thread-safe because a shared instance will +// be called from whichever thread ran the LOG(XXX) line. +class GOOGLE_GLOG_DLL_DECL LogSink { + public: + virtual ~LogSink(); + + // Sink's logging logic (message_len is such as to exclude '\n' at the end). + // This method can't use LOG() or CHECK() as logging system mutex(s) are held + // during this call. + virtual void send(LogSeverity severity, const char* full_filename, + const char* base_filename, int line, + const struct ::tm* tm_time, + const char* message, size_t message_len) = 0; + + // Redefine this to implement waiting for + // the sink's logging logic to complete. + // It will be called after each send() returns, + // but before that LogMessage exits or crashes. + // By default this function does nothing. + // Using this function one can implement complex logic for send() + // that itself involves logging; and do all this w/o causing deadlocks and + // inconsistent rearrangement of log messages. + // E.g. if a LogSink has thread-specific actions, the send() method + // can simply add the message to a queue and wake up another thread that + // handles real logging while itself making some LOG() calls; + // WaitTillSent() can be implemented to wait for that logic to complete. + // See our unittest for an example. + virtual void WaitTillSent(); + + // Returns the normal text output of the log message. + // Can be useful to implement send(). + static std::string ToString(LogSeverity severity, const char* file, int line, + const struct ::tm* tm_time, + const char* message, size_t message_len); +}; + +// Add or remove a LogSink as a consumer of logging data. Thread-safe. +GOOGLE_GLOG_DLL_DECL void AddLogSink(LogSink *destination); +GOOGLE_GLOG_DLL_DECL void RemoveLogSink(LogSink *destination); + +// +// Specify an "extension" added to the filename specified via +// SetLogDestination. This applies to all severity levels. It's +// often used to append the port we're listening on to the logfile +// name. Thread-safe. +// +GOOGLE_GLOG_DLL_DECL void SetLogFilenameExtension( + const char* filename_extension); + +// +// Make it so that all log messages of at least a particular severity +// are logged to stderr (in addition to logging to the usual log +// file(s)). Thread-safe. +// +GOOGLE_GLOG_DLL_DECL void SetStderrLogging(LogSeverity min_severity); + +// +// Make it so that all log messages go only to stderr. Thread-safe. +// +GOOGLE_GLOG_DLL_DECL void LogToStderr(); + +// +// Make it so that all log messages of at least a particular severity are +// logged via email to a list of addresses (in addition to logging to the +// usual log file(s)). The list of addresses is just a string containing +// the email addresses to send to (separated by spaces, say). Thread-safe. +// +GOOGLE_GLOG_DLL_DECL void SetEmailLogging(LogSeverity min_severity, + const char* addresses); + +// A simple function that sends email. dest is a commma-separated +// list of addressess. Thread-safe. +GOOGLE_GLOG_DLL_DECL bool SendEmail(const char *dest, + const char *subject, const char *body); + +GOOGLE_GLOG_DLL_DECL const std::vector& GetLoggingDirectories(); + +// For tests only: Clear the internal [cached] list of logging directories to +// force a refresh the next time GetLoggingDirectories is called. +// Thread-hostile. +void TestOnly_ClearLoggingDirectoriesList(); + +// Returns a set of existing temporary directories, which will be a +// subset of the directories returned by GetLogginDirectories(). +// Thread-safe. +GOOGLE_GLOG_DLL_DECL void GetExistingTempDirectories( + std::vector* list); + +// Print any fatal message again -- useful to call from signal handler +// so that the last thing in the output is the fatal message. +// Thread-hostile, but a race is unlikely. +GOOGLE_GLOG_DLL_DECL void ReprintFatalMessage(); + +// Truncate a log file that may be the append-only output of multiple +// processes and hence can't simply be renamed/reopened (typically a +// stdout/stderr). If the file "path" is > "limit" bytes, copy the +// last "keep" bytes to offset 0 and truncate the rest. Since we could +// be racing with other writers, this approach has the potential to +// lose very small amounts of data. For security, only follow symlinks +// if the path is /proc/self/fd/* +GOOGLE_GLOG_DLL_DECL void TruncateLogFile(const char *path, + int64 limit, int64 keep); + +// Truncate stdout and stderr if they are over the value specified by +// --max_log_size; keep the final 1MB. This function has the same +// race condition as TruncateLogFile. +GOOGLE_GLOG_DLL_DECL void TruncateStdoutStderr(); + +// Return the string representation of the provided LogSeverity level. +// Thread-safe. +GOOGLE_GLOG_DLL_DECL const char* GetLogSeverityName(LogSeverity severity); + +// --------------------------------------------------------------------- +// Implementation details that are not useful to most clients +// --------------------------------------------------------------------- + +// A Logger is the interface used by logging modules to emit entries +// to a log. A typical implementation will dump formatted data to a +// sequence of files. We also provide interfaces that will forward +// the data to another thread so that the invoker never blocks. +// Implementations should be thread-safe since the logging system +// will write to them from multiple threads. + +namespace base { + +class GOOGLE_GLOG_DLL_DECL Logger { + public: + virtual ~Logger(); + + // Writes "message[0,message_len-1]" corresponding to an event that + // occurred at "timestamp". If "force_flush" is true, the log file + // is flushed immediately. + // + // The input message has already been formatted as deemed + // appropriate by the higher level logging facility. For example, + // textual log messages already contain timestamps, and the + // file:linenumber header. + virtual void Write(bool force_flush, + time_t timestamp, + const char* message, + int message_len) = 0; + + // Flush any buffered messages + virtual void Flush() = 0; + + // Get the current LOG file size. + // The returned value is approximate since some + // logged data may not have been flushed to disk yet. + virtual uint32 LogSize() = 0; +}; + +// Get the logger for the specified severity level. The logger +// remains the property of the logging module and should not be +// deleted by the caller. Thread-safe. +extern GOOGLE_GLOG_DLL_DECL Logger* GetLogger(LogSeverity level); + +// Set the logger for the specified severity level. The logger +// becomes the property of the logging module and should not +// be deleted by the caller. Thread-safe. +extern GOOGLE_GLOG_DLL_DECL void SetLogger(LogSeverity level, Logger* logger); + +} + +// glibc has traditionally implemented two incompatible versions of +// strerror_r(). There is a poorly defined convention for picking the +// version that we want, but it is not clear whether it even works with +// all versions of glibc. +// So, instead, we provide this wrapper that automatically detects the +// version that is in use, and then implements POSIX semantics. +// N.B. In addition to what POSIX says, we also guarantee that "buf" will +// be set to an empty string, if this function failed. This means, in most +// cases, you do not need to check the error code and you can directly +// use the value of "buf". It will never have an undefined value. +// DEPRECATED: Use StrError(int) instead. +GOOGLE_GLOG_DLL_DECL int posix_strerror_r(int err, char *buf, size_t len); + +// A thread-safe replacement for strerror(). Returns a string describing the +// given POSIX error code. +GOOGLE_GLOG_DLL_DECL std::string StrError(int err); + +// A class for which we define operator<<, which does nothing. +class GOOGLE_GLOG_DLL_DECL NullStream : public LogMessage::LogStream { + public: + // Initialize the LogStream so the messages can be written somewhere + // (they'll never be actually displayed). This will be needed if a + // NullStream& is implicitly converted to LogStream&, in which case + // the overloaded NullStream::operator<< will not be invoked. + NullStream() : LogMessage::LogStream(message_buffer_, 1, 0) { } + NullStream(const char* /*file*/, int /*line*/, + const CheckOpString& /*result*/) : + LogMessage::LogStream(message_buffer_, 1, 0) { } + NullStream &stream() { return *this; } + private: + // A very short buffer for messages (which we discard anyway). This + // will be needed if NullStream& converted to LogStream& (e.g. as a + // result of a conditional expression). + char message_buffer_[2]; +}; + +// Do nothing. This operator is inline, allowing the message to be +// compiled away. The message will not be compiled away if we do +// something like (flag ? LOG(INFO) : LOG(ERROR)) << message; when +// SKIP_LOG=WARNING. In those cases, NullStream will be implicitly +// converted to LogStream and the message will be computed and then +// quietly discarded. +template +inline NullStream& operator<<(NullStream &str, const T &) { return str; } + +// Similar to NullStream, but aborts the program (without stack +// trace), like LogMessageFatal. +class GOOGLE_GLOG_DLL_DECL NullStreamFatal : public NullStream { + public: + NullStreamFatal() { } + NullStreamFatal(const char* file, int line, const CheckOpString& result) : + NullStream(file, line, result) { } + __attribute__ ((noreturn)) ~NullStreamFatal() throw () { _exit(1); } +}; + +// Install a signal handler that will dump signal information and a stack +// trace when the program crashes on certain signals. We'll install the +// signal handler for the following signals. +// +// SIGSEGV, SIGILL, SIGFPE, SIGABRT, SIGBUS, and SIGTERM. +// +// By default, the signal handler will write the failure dump to the +// standard error. You can customize the destination by installing your +// own writer function by InstallFailureWriter() below. +// +// Note on threading: +// +// The function should be called before threads are created, if you want +// to use the failure signal handler for all threads. The stack trace +// will be shown only for the thread that receives the signal. In other +// words, stack traces of other threads won't be shown. +GOOGLE_GLOG_DLL_DECL void InstallFailureSignalHandler(); + +// Installs a function that is used for writing the failure dump. "data" +// is the pointer to the beginning of a message to be written, and "size" +// is the size of the message. You should not expect the data is +// terminated with '\0'. +GOOGLE_GLOG_DLL_DECL void InstallFailureWriter( + void (*writer)(const char* data, int size)); + +} + +#endif // _LOGGING_H_ diff --git a/Frameworks/glog.xcframework/ios-arm64_x86_64-simulator/Headers/glog/raw_logging.h b/Frameworks/glog.xcframework/ios-arm64_x86_64-simulator/Headers/glog/raw_logging.h new file mode 100644 index 0000000..65278f6 --- /dev/null +++ b/Frameworks/glog.xcframework/ios-arm64_x86_64-simulator/Headers/glog/raw_logging.h @@ -0,0 +1,185 @@ +// Copyright (c) 2006, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: Maxim Lifantsev +// +// Thread-safe logging routines that do not allocate any memory or +// acquire any locks, and can therefore be used by low-level memory +// allocation and synchronization code. + +#ifndef BASE_RAW_LOGGING_H_ +#define BASE_RAW_LOGGING_H_ + +#include + +namespace google { + +#include "glog/log_severity.h" +#include "glog/vlog_is_on.h" + +// Annoying stuff for windows -- makes sure clients can import these functions +#ifndef GOOGLE_GLOG_DLL_DECL +# if defined(_WIN32) && !defined(__CYGWIN__) +# define GOOGLE_GLOG_DLL_DECL __declspec(dllimport) +# else +# define GOOGLE_GLOG_DLL_DECL +# endif +#endif + +// This is similar to LOG(severity) << format... and VLOG(level) << format.., +// but +// * it is to be used ONLY by low-level modules that can't use normal LOG() +// * it is desiged to be a low-level logger that does not allocate any +// memory and does not need any locks, hence: +// * it logs straight and ONLY to STDERR w/o buffering +// * it uses an explicit format and arguments list +// * it will silently chop off really long message strings +// Usage example: +// RAW_LOG(ERROR, "Failed foo with %i: %s", status, error); +// RAW_VLOG(3, "status is %i", status); +// These will print an almost standard log lines like this to stderr only: +// E0821 211317 file.cc:123] RAW: Failed foo with 22: bad_file +// I0821 211317 file.cc:142] RAW: status is 20 +#define RAW_LOG(severity, ...) \ + do { \ + switch (google::GLOG_ ## severity) { \ + case 0: \ + RAW_LOG_INFO(__VA_ARGS__); \ + break; \ + case 1: \ + RAW_LOG_WARNING(__VA_ARGS__); \ + break; \ + case 2: \ + RAW_LOG_ERROR(__VA_ARGS__); \ + break; \ + case 3: \ + RAW_LOG_FATAL(__VA_ARGS__); \ + break; \ + default: \ + break; \ + } \ + } while (0) + +// The following STRIP_LOG testing is performed in the header file so that it's +// possible to completely compile out the logging code and the log messages. +#if STRIP_LOG == 0 +#define RAW_VLOG(verboselevel, ...) \ + do { \ + if (VLOG_IS_ON(verboselevel)) { \ + RAW_LOG_INFO(__VA_ARGS__); \ + } \ + } while (0) +#else +#define RAW_VLOG(verboselevel, ...) RawLogStub__(0, __VA_ARGS__) +#endif // STRIP_LOG == 0 + +#if STRIP_LOG == 0 +#define RAW_LOG_INFO(...) google::RawLog__(google::GLOG_INFO, \ + __FILE__, __LINE__, __VA_ARGS__) +#else +#define RAW_LOG_INFO(...) google::RawLogStub__(0, __VA_ARGS__) +#endif // STRIP_LOG == 0 + +#if STRIP_LOG <= 1 +#define RAW_LOG_WARNING(...) google::RawLog__(google::GLOG_WARNING, \ + __FILE__, __LINE__, __VA_ARGS__) +#else +#define RAW_LOG_WARNING(...) google::RawLogStub__(0, __VA_ARGS__) +#endif // STRIP_LOG <= 1 + +#if STRIP_LOG <= 2 +#define RAW_LOG_ERROR(...) google::RawLog__(google::GLOG_ERROR, \ + __FILE__, __LINE__, __VA_ARGS__) +#else +#define RAW_LOG_ERROR(...) google::RawLogStub__(0, __VA_ARGS__) +#endif // STRIP_LOG <= 2 + +#if STRIP_LOG <= 3 +#define RAW_LOG_FATAL(...) google::RawLog__(google::GLOG_FATAL, \ + __FILE__, __LINE__, __VA_ARGS__) +#else +#define RAW_LOG_FATAL(...) \ + do { \ + google::RawLogStub__(0, __VA_ARGS__); \ + exit(1); \ + } while (0) +#endif // STRIP_LOG <= 3 + +// Similar to CHECK(condition) << message, +// but for low-level modules: we use only RAW_LOG that does not allocate memory. +// We do not want to provide args list here to encourage this usage: +// if (!cond) RAW_LOG(FATAL, "foo ...", hard_to_compute_args); +// so that the args are not computed when not needed. +#define RAW_CHECK(condition, message) \ + do { \ + if (!(condition)) { \ + RAW_LOG(FATAL, "Check %s failed: %s", #condition, message); \ + } \ + } while (0) + +// Debug versions of RAW_LOG and RAW_CHECK +#ifndef NDEBUG + +#define RAW_DLOG(severity, ...) RAW_LOG(severity, __VA_ARGS__) +#define RAW_DCHECK(condition, message) RAW_CHECK(condition, message) + +#else // NDEBUG + +#define RAW_DLOG(severity, ...) \ + while (false) \ + RAW_LOG(severity, __VA_ARGS__) +#define RAW_DCHECK(condition, message) \ + while (false) \ + RAW_CHECK(condition, message) + +#endif // NDEBUG + +// Stub log function used to work around for unused variable warnings when +// building with STRIP_LOG > 0. +static inline void RawLogStub__(int /* ignored */, ...) { +} + +// Helper function to implement RAW_LOG and RAW_VLOG +// Logs format... at "severity" level, reporting it +// as called from file:line. +// This does not allocate memory or acquire locks. +GOOGLE_GLOG_DLL_DECL void RawLog__(LogSeverity severity, + const char* file, + int line, + const char* format, ...) + __attribute__((__format__ (__printf__, 4, 5))); + +// Hack to propagate time information into this module so that +// this module does not have to directly call localtime_r(), +// which could allocate memory. +GOOGLE_GLOG_DLL_DECL void RawLog__SetLastTime(const struct tm& t, int usecs); + +} + +#endif // BASE_RAW_LOGGING_H_ diff --git a/Frameworks/glog.xcframework/ios-arm64_x86_64-simulator/Headers/glog/stl_logging.h b/Frameworks/glog.xcframework/ios-arm64_x86_64-simulator/Headers/glog/stl_logging.h new file mode 100644 index 0000000..40a15aa --- /dev/null +++ b/Frameworks/glog.xcframework/ios-arm64_x86_64-simulator/Headers/glog/stl_logging.h @@ -0,0 +1,220 @@ +// Copyright (c) 2003, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Stream output operators for STL containers; to be used for logging *only*. +// Inclusion of this file lets you do: +// +// list x; +// LOG(INFO) << "data: " << x; +// vector v1, v2; +// CHECK_EQ(v1, v2); +// +// If you want to use this header file with hash maps or slist, you +// need to define macros before including this file: +// +// - GLOG_STL_LOGGING_FOR_UNORDERED - and +// - GLOG_STL_LOGGING_FOR_TR1_UNORDERED - +// - GLOG_STL_LOGGING_FOR_EXT_HASH - +// - GLOG_STL_LOGGING_FOR_EXT_SLIST - +// + +#ifndef UTIL_GTL_STL_LOGGING_INL_H_ +#define UTIL_GTL_STL_LOGGING_INL_H_ + +#if !1 +# error We do not support stl_logging for this compiler +#endif + +#include +#include +#include +#include +#include +#include +#include + +#ifdef GLOG_STL_LOGGING_FOR_UNORDERED +# include +# include +#endif + +#ifdef GLOG_STL_LOGGING_FOR_TR1_UNORDERED +# include +# include +#endif + +#ifdef GLOG_STL_LOGGING_FOR_EXT_HASH +# include +# include +#endif +#ifdef GLOG_STL_LOGGING_FOR_EXT_SLIST +# include +#endif + +// Forward declare these two, and define them after all the container streams +// operators so that we can recurse from pair -> container -> container -> pair +// properly. +template +std::ostream& operator<<(std::ostream& out, const std::pair& p); + +namespace google { + +template +void PrintSequence(std::ostream& out, Iter begin, Iter end); + +} + +#define OUTPUT_TWO_ARG_CONTAINER(Sequence) \ +template \ +inline std::ostream& operator<<(std::ostream& out, \ + const Sequence& seq) { \ + google::PrintSequence(out, seq.begin(), seq.end()); \ + return out; \ +} + +OUTPUT_TWO_ARG_CONTAINER(std::vector) +OUTPUT_TWO_ARG_CONTAINER(std::deque) +OUTPUT_TWO_ARG_CONTAINER(std::list) +#ifdef GLOG_STL_LOGGING_FOR_EXT_SLIST +OUTPUT_TWO_ARG_CONTAINER(__gnu_cxx::slist) +#endif + +#undef OUTPUT_TWO_ARG_CONTAINER + +#define OUTPUT_THREE_ARG_CONTAINER(Sequence) \ +template \ +inline std::ostream& operator<<(std::ostream& out, \ + const Sequence& seq) { \ + google::PrintSequence(out, seq.begin(), seq.end()); \ + return out; \ +} + +OUTPUT_THREE_ARG_CONTAINER(std::set) +OUTPUT_THREE_ARG_CONTAINER(std::multiset) + +#undef OUTPUT_THREE_ARG_CONTAINER + +#define OUTPUT_FOUR_ARG_CONTAINER(Sequence) \ +template \ +inline std::ostream& operator<<(std::ostream& out, \ + const Sequence& seq) { \ + google::PrintSequence(out, seq.begin(), seq.end()); \ + return out; \ +} + +OUTPUT_FOUR_ARG_CONTAINER(std::map) +OUTPUT_FOUR_ARG_CONTAINER(std::multimap) +#ifdef GLOG_STL_LOGGING_FOR_UNORDERED +OUTPUT_FOUR_ARG_CONTAINER(std::unordered_set) +OUTPUT_FOUR_ARG_CONTAINER(std::unordered_multiset) +#endif +#ifdef GLOG_STL_LOGGING_FOR_TR1_UNORDERED +OUTPUT_FOUR_ARG_CONTAINER(std::tr1::unordered_set) +OUTPUT_FOUR_ARG_CONTAINER(std::tr1::unordered_multiset) +#endif +#ifdef GLOG_STL_LOGGING_FOR_EXT_HASH +OUTPUT_FOUR_ARG_CONTAINER(__gnu_cxx::hash_set) +OUTPUT_FOUR_ARG_CONTAINER(__gnu_cxx::hash_multiset) +#endif + +#undef OUTPUT_FOUR_ARG_CONTAINER + +#define OUTPUT_FIVE_ARG_CONTAINER(Sequence) \ +template \ +inline std::ostream& operator<<(std::ostream& out, \ + const Sequence& seq) { \ + google::PrintSequence(out, seq.begin(), seq.end()); \ + return out; \ +} + +#ifdef GLOG_STL_LOGGING_FOR_UNORDERED +OUTPUT_FIVE_ARG_CONTAINER(std::unordered_map) +OUTPUT_FIVE_ARG_CONTAINER(std::unordered_multimap) +#endif +#ifdef GLOG_STL_LOGGING_FOR_TR1_UNORDERED +OUTPUT_FIVE_ARG_CONTAINER(std::tr1::unordered_map) +OUTPUT_FIVE_ARG_CONTAINER(std::tr1::unordered_multimap) +#endif +#ifdef GLOG_STL_LOGGING_FOR_EXT_HASH +OUTPUT_FIVE_ARG_CONTAINER(__gnu_cxx::hash_map) +OUTPUT_FIVE_ARG_CONTAINER(__gnu_cxx::hash_multimap) +#endif + +#undef OUTPUT_FIVE_ARG_CONTAINER + +template +inline std::ostream& operator<<(std::ostream& out, + const std::pair& p) { + out << '(' << p.first << ", " << p.second << ')'; + return out; +} + +namespace google { + +template +inline void PrintSequence(std::ostream& out, Iter begin, Iter end) { + // Output at most 100 elements -- appropriate if used for logging. + for (int i = 0; begin != end && i < 100; ++i, ++begin) { + if (i > 0) out << ' '; + out << *begin; + } + if (begin != end) { + out << " ..."; + } +} + +} + +// Note that this is technically undefined behavior! We are adding things into +// the std namespace for a reason though -- we are providing new operations on +// types which are themselves defined with this namespace. Without this, these +// operator overloads cannot be found via ADL. If these definitions are not +// found via ADL, they must be #included before they're used, which requires +// this header to be included before apparently independent other headers. +// +// For example, base/logging.h defines various template functions to implement +// CHECK_EQ(x, y) and stream x and y into the log in the event the check fails. +// It does so via the function template MakeCheckOpValueString: +// template +// void MakeCheckOpValueString(strstream* ss, const T& v) { +// (*ss) << v; +// } +// Because 'glog/logging.h' is included before 'glog/stl_logging.h', +// subsequent CHECK_EQ(v1, v2) for vector<...> typed variable v1 and v2 can only +// find these operator definitions via ADL. +// +// Even this solution has problems -- it may pull unintended operators into the +// namespace as well, allowing them to also be found via ADL, and creating code +// that only works with a particular order of includes. Long term, we need to +// move all of the *definitions* into namespace std, bet we need to ensure no +// one references them first. This lets us take that step. We cannot define them +// in both because that would create ambiguous overloads when both are found. +namespace std { using ::operator<<; } + +#endif // UTIL_GTL_STL_LOGGING_INL_H_ diff --git a/Frameworks/glog.xcframework/ios-arm64_x86_64-simulator/Headers/glog/vlog_is_on.h b/Frameworks/glog.xcframework/ios-arm64_x86_64-simulator/Headers/glog/vlog_is_on.h new file mode 100644 index 0000000..02b0b86 --- /dev/null +++ b/Frameworks/glog.xcframework/ios-arm64_x86_64-simulator/Headers/glog/vlog_is_on.h @@ -0,0 +1,129 @@ +// Copyright (c) 1999, 2007, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: Ray Sidney and many others +// +// Defines the VLOG_IS_ON macro that controls the variable-verbosity +// conditional logging. +// +// It's used by VLOG and VLOG_IF in logging.h +// and by RAW_VLOG in raw_logging.h to trigger the logging. +// +// It can also be used directly e.g. like this: +// if (VLOG_IS_ON(2)) { +// // do some logging preparation and logging +// // that can't be accomplished e.g. via just VLOG(2) << ...; +// } +// +// The truth value that VLOG_IS_ON(level) returns is determined by +// the three verbosity level flags: +// --v= Gives the default maximal active V-logging level; +// 0 is the default. +// Normally positive values are used for V-logging levels. +// --vmodule= Gives the per-module maximal V-logging levels to override +// the value given by --v. +// E.g. "my_module=2,foo*=3" would change the logging level +// for all code in source files "my_module.*" and "foo*.*" +// ("-inl" suffixes are also disregarded for this matching). +// +// SetVLOGLevel helper function is provided to do limited dynamic control over +// V-logging by overriding the per-module settings given via --vmodule flag. +// +// CAVEAT: --vmodule functionality is not available in non gcc compilers. +// + +#ifndef BASE_VLOG_IS_ON_H_ +#define BASE_VLOG_IS_ON_H_ + +#include "glog/log_severity.h" + +// Annoying stuff for windows -- makes sure clients can import these functions +#ifndef GOOGLE_GLOG_DLL_DECL +# if defined(_WIN32) && !defined(__CYGWIN__) +# define GOOGLE_GLOG_DLL_DECL __declspec(dllimport) +# else +# define GOOGLE_GLOG_DLL_DECL +# endif +#endif + +#if defined(__GNUC__) +// We emit an anonymous static int* variable at every VLOG_IS_ON(n) site. +// (Normally) the first time every VLOG_IS_ON(n) site is hit, +// we determine what variable will dynamically control logging at this site: +// it's either FLAGS_v or an appropriate internal variable +// matching the current source file that represents results of +// parsing of --vmodule flag and/or SetVLOGLevel calls. +#define VLOG_IS_ON(verboselevel) \ + __extension__ \ + ({ static google::int32* vlocal__ = &google::kLogSiteUninitialized; \ + google::int32 verbose_level__ = (verboselevel); \ + (*vlocal__ >= verbose_level__) && \ + ((vlocal__ != &google::kLogSiteUninitialized) || \ + (google::InitVLOG3__(&vlocal__, &FLAGS_v, \ + __FILE__, verbose_level__))); }) +#else +// GNU extensions not available, so we do not support --vmodule. +// Dynamic value of FLAGS_v always controls the logging level. +#define VLOG_IS_ON(verboselevel) (FLAGS_v >= (verboselevel)) +#endif + +// Set VLOG(_IS_ON) level for module_pattern to log_level. +// This lets us dynamically control what is normally set by the --vmodule flag. +// Returns the level that previously applied to module_pattern. +// NOTE: To change the log level for VLOG(_IS_ON) sites +// that have already executed after/during InitGoogleLogging, +// one needs to supply the exact --vmodule pattern that applied to them. +// (If no --vmodule pattern applied to them +// the value of FLAGS_v will continue to control them.) +extern GOOGLE_GLOG_DLL_DECL int SetVLOGLevel(const char* module_pattern, + int log_level); + +// Various declarations needed for VLOG_IS_ON above: ========================= + +// Special value used to indicate that a VLOG_IS_ON site has not been +// initialized. We make this a large value, so the common-case check +// of "*vlocal__ >= verbose_level__" in VLOG_IS_ON definition +// passes in such cases and InitVLOG3__ is then triggered. +extern google::int32 kLogSiteUninitialized; + +// Helper routine which determines the logging info for a particalur VLOG site. +// site_flag is the address of the site-local pointer to the controlling +// verbosity level +// site_default is the default to use for *site_flag +// fname is the current source file name +// verbose_level is the argument to VLOG_IS_ON +// We will return the return value for VLOG_IS_ON +// and if possible set *site_flag appropriately. +extern GOOGLE_GLOG_DLL_DECL bool InitVLOG3__( + google::int32** site_flag, + google::int32* site_default, + const char* fname, + google::int32 verbose_level); + +#endif // BASE_VLOG_IS_ON_H_ diff --git a/Frameworks/glog.xcframework/ios-arm64_x86_64-simulator/libglog.a b/Frameworks/glog.xcframework/ios-arm64_x86_64-simulator/libglog.a new file mode 100644 index 0000000..dea774f Binary files /dev/null and b/Frameworks/glog.xcframework/ios-arm64_x86_64-simulator/libglog.a differ diff --git a/Frameworks/react-native-bridge.xcframework/Info.plist b/Frameworks/react-native-bridge.xcframework/Info.plist new file mode 100644 index 0000000..f0ea6a2 --- /dev/null +++ b/Frameworks/react-native-bridge.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libreact-native-bridge.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libreact-native-bridge.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libreact-native-bridge.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libreact-native-bridge.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/react-native-bridge.xcframework/ios-arm64/Headers/ActivityStarter.h b/Frameworks/react-native-bridge.xcframework/ios-arm64/Headers/ActivityStarter.h new file mode 100644 index 0000000..e8740a5 --- /dev/null +++ b/Frameworks/react-native-bridge.xcframework/ios-arm64/Headers/ActivityStarter.h @@ -0,0 +1,14 @@ +// +// ActivityStarter.h +// TecnaviaApplication +// +// Created by iPad Developer on 10.01.19. +// Copyright © 2019 Facebook. All rights reserved. +// + +#import +#import + +@interface ActivityStarter : NSObject + +@end diff --git a/Frameworks/react-native-bridge.xcframework/ios-arm64/Headers/BridgeEmitter.h b/Frameworks/react-native-bridge.xcframework/ios-arm64/Headers/BridgeEmitter.h new file mode 100644 index 0000000..53d01d6 --- /dev/null +++ b/Frameworks/react-native-bridge.xcframework/ios-arm64/Headers/BridgeEmitter.h @@ -0,0 +1,23 @@ +// +// BridgeEmitter.h +// TecnaviaApplication +// +// Created by iPad Developer on 12.02.19. +// Copyright © 2019 Facebook. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface BridgeEmitter : RCTEventEmitter + +- (void)sendKeyDown:(NSDictionary *)event; +- (void)sendKeyUp:(NSDictionary *)event; +- (void)sendEvent:(NSString *)event; +- (void)sendEvent:(NSString *)event withBody:(NSDictionary *)body; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-bridge.xcframework/ios-arm64/Headers/ReactBridgeManager.h b/Frameworks/react-native-bridge.xcframework/ios-arm64/Headers/ReactBridgeManager.h new file mode 100644 index 0000000..b2c633e --- /dev/null +++ b/Frameworks/react-native-bridge.xcframework/ios-arm64/Headers/ReactBridgeManager.h @@ -0,0 +1,20 @@ +// +// ReactBridgeManager.h +// TecnaviaApplication +// +// Created by iPad Developer on 18.01.21. +// Copyright © 2021 Facebook. All rights reserved. +// + +#import +#import + +@interface ReactBridgeManager : NSObject +@property (nonatomic, strong, readonly) RCTBridge *bridge; + ++ (id) sharedManager; + +- (void) initBridgeWithLaunchOptions:(NSDictionary *)launchOptions; +- (void) reload; + +@end diff --git a/Frameworks/react-native-bridge.xcframework/ios-arm64/Headers/ReactViewController.h b/Frameworks/react-native-bridge.xcframework/ios-arm64/Headers/ReactViewController.h new file mode 100644 index 0000000..f809e63 --- /dev/null +++ b/Frameworks/react-native-bridge.xcframework/ios-arm64/Headers/ReactViewController.h @@ -0,0 +1,45 @@ +// +// ReactViewController.h +// TecnaviaApplication +// +// Created by iPad Developer on 18.01.21. +// Copyright © 2021 Facebook. All rights reserved. +// +#import +#import +#import "ReactBridgeManager.h" + +extern NSString *const TAPSetupPropKey; +extern NSString *const TAServerPropKey; +extern NSString *const TALocalePropKey; +extern NSString *const TASplashBackgroundColorPropKey; +extern NSString *const TALoadingColorPropKey; +extern NSString *const TAAppNamePropKey; +extern NSString *const TAAppVersionNamePropKey; +extern NSString *const TAAppVersionCodePropKey; +extern NSString *const TAIAPSharedSecretPropKey; +extern NSString *const TAPushServicePropKey; +extern NSString *const TAPushChannelPropKey; +extern NSString *const TAPushChannelSilentPropKey; +extern NSString *const TAOneSignalAppIdPropKey; +extern NSString *const TAMasAppIdPropKey; +extern NSString *const TAFacebookAppIdPropKey; +extern NSString *const TADebugModePropKey; +extern NSString *const TAAndroidAppIdPropKey; +extern NSString *const TAAmazonIapDeveloperSecretPropKey; +extern NSString *const TAInitialOrientationPropKey; +extern NSString *const TADeveloperNamePropKey; +extern NSString *const TAExternalLinkAccountURLPropKey; +extern NSString *const TAIsAddonPropKey; +extern NSString *const TAAddonNeedsCloseButtonPropKey; +extern NSString *const TAAddonNeedsSafeAreaPropKey; +extern NSString *const TATokenPropKey; +extern NSString *const TAAPIKeyPropKey; +extern NSString *const TALockedOrientationPropKey; +extern NSString *const TALockedOrientationDevicePropKey; + +@interface ReactViewController : UIViewController + +- (instancetype)initWithBridge:(RCTBridge *)bridge moduleName:(NSString*)moduleName initialProps:(NSDictionary*)initialProps; +- (instancetype)initBridgeWithLaunchOptions:(NSDictionary *)launchOptions moduleName:(NSString*)moduleName initialProps:(NSDictionary*)initialProps; +@end diff --git a/Frameworks/react-native-bridge.xcframework/ios-arm64/libreact-native-bridge.a b/Frameworks/react-native-bridge.xcframework/ios-arm64/libreact-native-bridge.a new file mode 100644 index 0000000..87275c7 Binary files /dev/null and b/Frameworks/react-native-bridge.xcframework/ios-arm64/libreact-native-bridge.a differ diff --git a/Frameworks/react-native-bridge.xcframework/ios-arm64_x86_64-simulator/Headers/ActivityStarter.h b/Frameworks/react-native-bridge.xcframework/ios-arm64_x86_64-simulator/Headers/ActivityStarter.h new file mode 100644 index 0000000..e8740a5 --- /dev/null +++ b/Frameworks/react-native-bridge.xcframework/ios-arm64_x86_64-simulator/Headers/ActivityStarter.h @@ -0,0 +1,14 @@ +// +// ActivityStarter.h +// TecnaviaApplication +// +// Created by iPad Developer on 10.01.19. +// Copyright © 2019 Facebook. All rights reserved. +// + +#import +#import + +@interface ActivityStarter : NSObject + +@end diff --git a/Frameworks/react-native-bridge.xcframework/ios-arm64_x86_64-simulator/Headers/BridgeEmitter.h b/Frameworks/react-native-bridge.xcframework/ios-arm64_x86_64-simulator/Headers/BridgeEmitter.h new file mode 100644 index 0000000..53d01d6 --- /dev/null +++ b/Frameworks/react-native-bridge.xcframework/ios-arm64_x86_64-simulator/Headers/BridgeEmitter.h @@ -0,0 +1,23 @@ +// +// BridgeEmitter.h +// TecnaviaApplication +// +// Created by iPad Developer on 12.02.19. +// Copyright © 2019 Facebook. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface BridgeEmitter : RCTEventEmitter + +- (void)sendKeyDown:(NSDictionary *)event; +- (void)sendKeyUp:(NSDictionary *)event; +- (void)sendEvent:(NSString *)event; +- (void)sendEvent:(NSString *)event withBody:(NSDictionary *)body; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-bridge.xcframework/ios-arm64_x86_64-simulator/Headers/ReactBridgeManager.h b/Frameworks/react-native-bridge.xcframework/ios-arm64_x86_64-simulator/Headers/ReactBridgeManager.h new file mode 100644 index 0000000..b2c633e --- /dev/null +++ b/Frameworks/react-native-bridge.xcframework/ios-arm64_x86_64-simulator/Headers/ReactBridgeManager.h @@ -0,0 +1,20 @@ +// +// ReactBridgeManager.h +// TecnaviaApplication +// +// Created by iPad Developer on 18.01.21. +// Copyright © 2021 Facebook. All rights reserved. +// + +#import +#import + +@interface ReactBridgeManager : NSObject +@property (nonatomic, strong, readonly) RCTBridge *bridge; + ++ (id) sharedManager; + +- (void) initBridgeWithLaunchOptions:(NSDictionary *)launchOptions; +- (void) reload; + +@end diff --git a/Frameworks/react-native-bridge.xcframework/ios-arm64_x86_64-simulator/Headers/ReactViewController.h b/Frameworks/react-native-bridge.xcframework/ios-arm64_x86_64-simulator/Headers/ReactViewController.h new file mode 100644 index 0000000..f809e63 --- /dev/null +++ b/Frameworks/react-native-bridge.xcframework/ios-arm64_x86_64-simulator/Headers/ReactViewController.h @@ -0,0 +1,45 @@ +// +// ReactViewController.h +// TecnaviaApplication +// +// Created by iPad Developer on 18.01.21. +// Copyright © 2021 Facebook. All rights reserved. +// +#import +#import +#import "ReactBridgeManager.h" + +extern NSString *const TAPSetupPropKey; +extern NSString *const TAServerPropKey; +extern NSString *const TALocalePropKey; +extern NSString *const TASplashBackgroundColorPropKey; +extern NSString *const TALoadingColorPropKey; +extern NSString *const TAAppNamePropKey; +extern NSString *const TAAppVersionNamePropKey; +extern NSString *const TAAppVersionCodePropKey; +extern NSString *const TAIAPSharedSecretPropKey; +extern NSString *const TAPushServicePropKey; +extern NSString *const TAPushChannelPropKey; +extern NSString *const TAPushChannelSilentPropKey; +extern NSString *const TAOneSignalAppIdPropKey; +extern NSString *const TAMasAppIdPropKey; +extern NSString *const TAFacebookAppIdPropKey; +extern NSString *const TADebugModePropKey; +extern NSString *const TAAndroidAppIdPropKey; +extern NSString *const TAAmazonIapDeveloperSecretPropKey; +extern NSString *const TAInitialOrientationPropKey; +extern NSString *const TADeveloperNamePropKey; +extern NSString *const TAExternalLinkAccountURLPropKey; +extern NSString *const TAIsAddonPropKey; +extern NSString *const TAAddonNeedsCloseButtonPropKey; +extern NSString *const TAAddonNeedsSafeAreaPropKey; +extern NSString *const TATokenPropKey; +extern NSString *const TAAPIKeyPropKey; +extern NSString *const TALockedOrientationPropKey; +extern NSString *const TALockedOrientationDevicePropKey; + +@interface ReactViewController : UIViewController + +- (instancetype)initWithBridge:(RCTBridge *)bridge moduleName:(NSString*)moduleName initialProps:(NSDictionary*)initialProps; +- (instancetype)initBridgeWithLaunchOptions:(NSDictionary *)launchOptions moduleName:(NSString*)moduleName initialProps:(NSDictionary*)initialProps; +@end diff --git a/Frameworks/react-native-bridge.xcframework/ios-arm64_x86_64-simulator/libreact-native-bridge.a b/Frameworks/react-native-bridge.xcframework/ios-arm64_x86_64-simulator/libreact-native-bridge.a new file mode 100644 index 0000000..2d759fb Binary files /dev/null and b/Frameworks/react-native-bridge.xcframework/ios-arm64_x86_64-simulator/libreact-native-bridge.a differ diff --git a/Frameworks/react-native-cookies.xcframework/Info.plist b/Frameworks/react-native-cookies.xcframework/Info.plist new file mode 100644 index 0000000..a32ac1b --- /dev/null +++ b/Frameworks/react-native-cookies.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libreact-native-cookies.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libreact-native-cookies.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libreact-native-cookies.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libreact-native-cookies.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/react-native-cookies.xcframework/ios-arm64/Headers/RNCookieManagerIOS.h b/Frameworks/react-native-cookies.xcframework/ios-arm64/Headers/RNCookieManagerIOS.h new file mode 100644 index 0000000..f780534 --- /dev/null +++ b/Frameworks/react-native-cookies.xcframework/ios-arm64/Headers/RNCookieManagerIOS.h @@ -0,0 +1,16 @@ +/** + * Copyright (c) Joseph P. Ferraro + * + * This source code is licensed under the MIT license found in the + * LICENSE file here: https://github.com/joeferraro/react-native-cookies/blob/master/LICENSE.md. + */ + +#import + +#import + +@interface RNCookieManagerIOS : NSObject + +@property (nonatomic, strong) NSDateFormatter *formatter; + +@end diff --git a/Frameworks/react-native-cookies.xcframework/ios-arm64/libreact-native-cookies.a b/Frameworks/react-native-cookies.xcframework/ios-arm64/libreact-native-cookies.a new file mode 100644 index 0000000..8e22f54 Binary files /dev/null and b/Frameworks/react-native-cookies.xcframework/ios-arm64/libreact-native-cookies.a differ diff --git a/Frameworks/react-native-cookies.xcframework/ios-arm64_x86_64-simulator/Headers/RNCookieManagerIOS.h b/Frameworks/react-native-cookies.xcframework/ios-arm64_x86_64-simulator/Headers/RNCookieManagerIOS.h new file mode 100644 index 0000000..f780534 --- /dev/null +++ b/Frameworks/react-native-cookies.xcframework/ios-arm64_x86_64-simulator/Headers/RNCookieManagerIOS.h @@ -0,0 +1,16 @@ +/** + * Copyright (c) Joseph P. Ferraro + * + * This source code is licensed under the MIT license found in the + * LICENSE file here: https://github.com/joeferraro/react-native-cookies/blob/master/LICENSE.md. + */ + +#import + +#import + +@interface RNCookieManagerIOS : NSObject + +@property (nonatomic, strong) NSDateFormatter *formatter; + +@end diff --git a/Frameworks/react-native-cookies.xcframework/ios-arm64_x86_64-simulator/libreact-native-cookies.a b/Frameworks/react-native-cookies.xcframework/ios-arm64_x86_64-simulator/libreact-native-cookies.a new file mode 100644 index 0000000..499361b Binary files /dev/null and b/Frameworks/react-native-cookies.xcframework/ios-arm64_x86_64-simulator/libreact-native-cookies.a differ diff --git a/Frameworks/react-native-dfp.xcframework/Info.plist b/Frameworks/react-native-dfp.xcframework/Info.plist new file mode 100644 index 0000000..522dbb3 --- /dev/null +++ b/Frameworks/react-native-dfp.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libreact-native-dfp.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libreact-native-dfp.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libreact-native-dfp.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libreact-native-dfp.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/react-native-dfp.xcframework/ios-arm64/Headers/RNDFPBannerManager.h b/Frameworks/react-native-dfp.xcframework/ios-arm64/Headers/RNDFPBannerManager.h new file mode 100644 index 0000000..c6aab08 --- /dev/null +++ b/Frameworks/react-native-dfp.xcframework/ios-arm64/Headers/RNDFPBannerManager.h @@ -0,0 +1,9 @@ +#if __has_include() +#import +#else +#import "RCTViewManager.h" +#endif + +@interface RNDFPBannerManager : RCTViewManager + +@end diff --git a/Frameworks/react-native-dfp.xcframework/ios-arm64/Headers/RNDFPBannerView.h b/Frameworks/react-native-dfp.xcframework/ios-arm64/Headers/RNDFPBannerView.h new file mode 100644 index 0000000..6cb3737 --- /dev/null +++ b/Frameworks/react-native-dfp.xcframework/ios-arm64/Headers/RNDFPBannerView.h @@ -0,0 +1,36 @@ +#if __has_include() +#import +#else +#import "RCTComponent.h" +#endif + +#import + +@import GoogleMobileAds; + +@class RCTEventDispatcher; + +@interface RNDFPBannerView : RCTView + +@property (nonatomic, copy) NSArray *adSizes; +@property (nonatomic, copy) NSDictionary *dimensions; +@property (nonatomic, copy) NSString *bannerSize; +@property (nonatomic, copy) NSString *adUnitID; +@property (nonatomic, copy) NSString *testDeviceID; +@property (nonatomic, copy) NSDictionary *targeting; + +@property (nonatomic, copy) RCTBubblingEventBlock onWillChangeAdSizeTo; + +@property (nonatomic, copy) RCTBubblingEventBlock onSizeChange; +@property (nonatomic, copy) RCTBubblingEventBlock onAdmobDispatchAppEvent; +@property (nonatomic, copy) RCTBubblingEventBlock onAdViewDidReceiveAd; +@property (nonatomic, copy) RCTBubblingEventBlock onDidFailToReceiveAdWithError; +@property (nonatomic, copy) RCTBubblingEventBlock onAdViewWillPresentScreen; +@property (nonatomic, copy) RCTBubblingEventBlock onAdViewWillDismissScreen; +@property (nonatomic, copy) RCTBubblingEventBlock onAdViewDidDismissScreen; + +- (instancetype)initWithEventDispatcher:(RCTEventDispatcher *)eventDispatcher NS_DESIGNATED_INITIALIZER; +- (GADAdSize)getAdSizeFromString:(NSString *)bannerSize; +- (void)loadBanner; + +@end diff --git a/Frameworks/react-native-dfp.xcframework/ios-arm64/Headers/RNDFPInterstitial.h b/Frameworks/react-native-dfp.xcframework/ios-arm64/Headers/RNDFPInterstitial.h new file mode 100644 index 0000000..9a93ea5 --- /dev/null +++ b/Frameworks/react-native-dfp.xcframework/ios-arm64/Headers/RNDFPInterstitial.h @@ -0,0 +1,17 @@ +#if __has_include() +#import +#import +#import +#else +#import "RCTBridgeModule.h" +#import "RCTEventDispatcher.h" +#import "RCTUtils.h" +#endif + +@import GoogleMobileAds; + +@interface RNDFPInterstitial : NSObject + +@property(nonatomic, strong) GAMInterstitialAd *interstitial; + +@end diff --git a/Frameworks/react-native-dfp.xcframework/ios-arm64/libreact-native-dfp.a b/Frameworks/react-native-dfp.xcframework/ios-arm64/libreact-native-dfp.a new file mode 100644 index 0000000..18efc6a Binary files /dev/null and b/Frameworks/react-native-dfp.xcframework/ios-arm64/libreact-native-dfp.a differ diff --git a/Frameworks/react-native-dfp.xcframework/ios-arm64_x86_64-simulator/Headers/RNDFPBannerManager.h b/Frameworks/react-native-dfp.xcframework/ios-arm64_x86_64-simulator/Headers/RNDFPBannerManager.h new file mode 100644 index 0000000..c6aab08 --- /dev/null +++ b/Frameworks/react-native-dfp.xcframework/ios-arm64_x86_64-simulator/Headers/RNDFPBannerManager.h @@ -0,0 +1,9 @@ +#if __has_include() +#import +#else +#import "RCTViewManager.h" +#endif + +@interface RNDFPBannerManager : RCTViewManager + +@end diff --git a/Frameworks/react-native-dfp.xcframework/ios-arm64_x86_64-simulator/Headers/RNDFPBannerView.h b/Frameworks/react-native-dfp.xcframework/ios-arm64_x86_64-simulator/Headers/RNDFPBannerView.h new file mode 100644 index 0000000..6cb3737 --- /dev/null +++ b/Frameworks/react-native-dfp.xcframework/ios-arm64_x86_64-simulator/Headers/RNDFPBannerView.h @@ -0,0 +1,36 @@ +#if __has_include() +#import +#else +#import "RCTComponent.h" +#endif + +#import + +@import GoogleMobileAds; + +@class RCTEventDispatcher; + +@interface RNDFPBannerView : RCTView + +@property (nonatomic, copy) NSArray *adSizes; +@property (nonatomic, copy) NSDictionary *dimensions; +@property (nonatomic, copy) NSString *bannerSize; +@property (nonatomic, copy) NSString *adUnitID; +@property (nonatomic, copy) NSString *testDeviceID; +@property (nonatomic, copy) NSDictionary *targeting; + +@property (nonatomic, copy) RCTBubblingEventBlock onWillChangeAdSizeTo; + +@property (nonatomic, copy) RCTBubblingEventBlock onSizeChange; +@property (nonatomic, copy) RCTBubblingEventBlock onAdmobDispatchAppEvent; +@property (nonatomic, copy) RCTBubblingEventBlock onAdViewDidReceiveAd; +@property (nonatomic, copy) RCTBubblingEventBlock onDidFailToReceiveAdWithError; +@property (nonatomic, copy) RCTBubblingEventBlock onAdViewWillPresentScreen; +@property (nonatomic, copy) RCTBubblingEventBlock onAdViewWillDismissScreen; +@property (nonatomic, copy) RCTBubblingEventBlock onAdViewDidDismissScreen; + +- (instancetype)initWithEventDispatcher:(RCTEventDispatcher *)eventDispatcher NS_DESIGNATED_INITIALIZER; +- (GADAdSize)getAdSizeFromString:(NSString *)bannerSize; +- (void)loadBanner; + +@end diff --git a/Frameworks/react-native-dfp.xcframework/ios-arm64_x86_64-simulator/Headers/RNDFPInterstitial.h b/Frameworks/react-native-dfp.xcframework/ios-arm64_x86_64-simulator/Headers/RNDFPInterstitial.h new file mode 100644 index 0000000..9a93ea5 --- /dev/null +++ b/Frameworks/react-native-dfp.xcframework/ios-arm64_x86_64-simulator/Headers/RNDFPInterstitial.h @@ -0,0 +1,17 @@ +#if __has_include() +#import +#import +#import +#else +#import "RCTBridgeModule.h" +#import "RCTEventDispatcher.h" +#import "RCTUtils.h" +#endif + +@import GoogleMobileAds; + +@interface RNDFPInterstitial : NSObject + +@property(nonatomic, strong) GAMInterstitialAd *interstitial; + +@end diff --git a/Frameworks/react-native-dfp.xcframework/ios-arm64_x86_64-simulator/libreact-native-dfp.a b/Frameworks/react-native-dfp.xcframework/ios-arm64_x86_64-simulator/libreact-native-dfp.a new file mode 100644 index 0000000..131a293 Binary files /dev/null and b/Frameworks/react-native-dfp.xcframework/ios-arm64_x86_64-simulator/libreact-native-dfp.a differ diff --git a/Frameworks/react-native-geolocation.xcframework/Info.plist b/Frameworks/react-native-geolocation.xcframework/Info.plist new file mode 100644 index 0000000..41f7a19 --- /dev/null +++ b/Frameworks/react-native-geolocation.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libreact-native-geolocation.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libreact-native-geolocation.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + libreact-native-geolocation.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libreact-native-geolocation.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/react-native-geolocation.xcframework/ios-arm64/Headers/RNCGeolocation.h b/Frameworks/react-native-geolocation.xcframework/ios-arm64/Headers/RNCGeolocation.h new file mode 100644 index 0000000..75bc64c --- /dev/null +++ b/Frameworks/react-native-geolocation.xcframework/ios-arm64/Headers/RNCGeolocation.h @@ -0,0 +1,12 @@ +/** + * 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 + +@interface RNCGeolocation : RCTEventEmitter + +@end diff --git a/Frameworks/react-native-geolocation.xcframework/ios-arm64/libreact-native-geolocation.a b/Frameworks/react-native-geolocation.xcframework/ios-arm64/libreact-native-geolocation.a new file mode 100644 index 0000000..188f73c Binary files /dev/null and b/Frameworks/react-native-geolocation.xcframework/ios-arm64/libreact-native-geolocation.a differ diff --git a/Frameworks/react-native-geolocation.xcframework/ios-arm64_x86_64-simulator/Headers/RNCGeolocation.h b/Frameworks/react-native-geolocation.xcframework/ios-arm64_x86_64-simulator/Headers/RNCGeolocation.h new file mode 100644 index 0000000..75bc64c --- /dev/null +++ b/Frameworks/react-native-geolocation.xcframework/ios-arm64_x86_64-simulator/Headers/RNCGeolocation.h @@ -0,0 +1,12 @@ +/** + * 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 + +@interface RNCGeolocation : RCTEventEmitter + +@end diff --git a/Frameworks/react-native-geolocation.xcframework/ios-arm64_x86_64-simulator/libreact-native-geolocation.a b/Frameworks/react-native-geolocation.xcframework/ios-arm64_x86_64-simulator/libreact-native-geolocation.a new file mode 100644 index 0000000..cfe32f3 Binary files /dev/null and b/Frameworks/react-native-geolocation.xcframework/ios-arm64_x86_64-simulator/libreact-native-geolocation.a differ diff --git a/Frameworks/react-native-html-to-pdf.xcframework/Info.plist b/Frameworks/react-native-html-to-pdf.xcframework/Info.plist new file mode 100644 index 0000000..be925ea --- /dev/null +++ b/Frameworks/react-native-html-to-pdf.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libreact-native-html-to-pdf.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libreact-native-html-to-pdf.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + libreact-native-html-to-pdf.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libreact-native-html-to-pdf.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/react-native-html-to-pdf.xcframework/ios-arm64/Headers/RNHTMLtoPDF.h b/Frameworks/react-native-html-to-pdf.xcframework/ios-arm64/Headers/RNHTMLtoPDF.h new file mode 100644 index 0000000..7e1810b --- /dev/null +++ b/Frameworks/react-native-html-to-pdf.xcframework/ios-arm64/Headers/RNHTMLtoPDF.h @@ -0,0 +1,9 @@ + +// Created by Christopher on 9/3/15. + +#import +#import +#import +@interface RNHTMLtoPDF : RCTView + +@end diff --git a/Frameworks/react-native-html-to-pdf.xcframework/ios-arm64/libreact-native-html-to-pdf.a b/Frameworks/react-native-html-to-pdf.xcframework/ios-arm64/libreact-native-html-to-pdf.a new file mode 100644 index 0000000..c9e4a56 Binary files /dev/null and b/Frameworks/react-native-html-to-pdf.xcframework/ios-arm64/libreact-native-html-to-pdf.a differ diff --git a/Frameworks/react-native-html-to-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/RNHTMLtoPDF.h b/Frameworks/react-native-html-to-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/RNHTMLtoPDF.h new file mode 100644 index 0000000..7e1810b --- /dev/null +++ b/Frameworks/react-native-html-to-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/RNHTMLtoPDF.h @@ -0,0 +1,9 @@ + +// Created by Christopher on 9/3/15. + +#import +#import +#import +@interface RNHTMLtoPDF : RCTView + +@end diff --git a/Frameworks/react-native-html-to-pdf.xcframework/ios-arm64_x86_64-simulator/libreact-native-html-to-pdf.a b/Frameworks/react-native-html-to-pdf.xcframework/ios-arm64_x86_64-simulator/libreact-native-html-to-pdf.a new file mode 100644 index 0000000..87dbf66 Binary files /dev/null and b/Frameworks/react-native-html-to-pdf.xcframework/ios-arm64_x86_64-simulator/libreact-native-html-to-pdf.a differ diff --git a/Frameworks/react-native-idle-timer.xcframework/Info.plist b/Frameworks/react-native-idle-timer.xcframework/Info.plist new file mode 100644 index 0000000..ed36ad9 --- /dev/null +++ b/Frameworks/react-native-idle-timer.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libreact-native-idle-timer.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libreact-native-idle-timer.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libreact-native-idle-timer.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libreact-native-idle-timer.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/react-native-idle-timer.xcframework/ios-arm64/Headers/IdleTimerManager.h b/Frameworks/react-native-idle-timer.xcframework/ios-arm64/Headers/IdleTimerManager.h new file mode 100644 index 0000000..54a32b9 --- /dev/null +++ b/Frameworks/react-native-idle-timer.xcframework/ios-arm64/Headers/IdleTimerManager.h @@ -0,0 +1,10 @@ +#import +#if __has_include("RCTBridgeModule.h") +#import "RCTBridgeModule.h" +#else +#import +#endif + +@interface IdleTimerManager : NSObject + +@end diff --git a/Frameworks/react-native-idle-timer.xcframework/ios-arm64/libreact-native-idle-timer.a b/Frameworks/react-native-idle-timer.xcframework/ios-arm64/libreact-native-idle-timer.a new file mode 100644 index 0000000..fb51d06 Binary files /dev/null and b/Frameworks/react-native-idle-timer.xcframework/ios-arm64/libreact-native-idle-timer.a differ diff --git a/Frameworks/react-native-idle-timer.xcframework/ios-arm64_x86_64-simulator/Headers/IdleTimerManager.h b/Frameworks/react-native-idle-timer.xcframework/ios-arm64_x86_64-simulator/Headers/IdleTimerManager.h new file mode 100644 index 0000000..54a32b9 --- /dev/null +++ b/Frameworks/react-native-idle-timer.xcframework/ios-arm64_x86_64-simulator/Headers/IdleTimerManager.h @@ -0,0 +1,10 @@ +#import +#if __has_include("RCTBridgeModule.h") +#import "RCTBridgeModule.h" +#else +#import +#endif + +@interface IdleTimerManager : NSObject + +@end diff --git a/Frameworks/react-native-idle-timer.xcframework/ios-arm64_x86_64-simulator/libreact-native-idle-timer.a b/Frameworks/react-native-idle-timer.xcframework/ios-arm64_x86_64-simulator/libreact-native-idle-timer.a new file mode 100644 index 0000000..fcac70a Binary files /dev/null and b/Frameworks/react-native-idle-timer.xcframework/ios-arm64_x86_64-simulator/libreact-native-idle-timer.a differ diff --git a/Frameworks/react-native-image-editor.xcframework/Info.plist b/Frameworks/react-native-image-editor.xcframework/Info.plist new file mode 100644 index 0000000..eac83c6 --- /dev/null +++ b/Frameworks/react-native-image-editor.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libreact-native-image-editor.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libreact-native-image-editor.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + libreact-native-image-editor.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libreact-native-image-editor.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/react-native-image-editor.xcframework/ios-arm64/Headers/RNCFileSystem.h b/Frameworks/react-native-image-editor.xcframework/ios-arm64/Headers/RNCFileSystem.h new file mode 100644 index 0000000..ab5a50e --- /dev/null +++ b/Frameworks/react-native-image-editor.xcframework/ios-arm64/Headers/RNCFileSystem.h @@ -0,0 +1,22 @@ +// +// RNFileSystem.h +// RNCImageEditor +// +// Created by Dawid Urbaniak on 30/05/2019. +// Copyright © 2019 Facebook. All rights reserved. +// + +#ifndef RNCFileSystem_h +#define RNCFileSystem_h + +#import + +@interface RNCFileSystem : NSObject + ++ (BOOL)ensureDirExistsWithPath:(NSString *)path; ++ (NSString *)generatePathInDirectory:(NSString *)directory withExtension:(NSString *)extension; ++ (NSString *)cacheDirectoryPath; + +@end + +#endif /* RNCFileSystem_h */ diff --git a/Frameworks/react-native-image-editor.xcframework/ios-arm64/Headers/RNCImageEditor.h b/Frameworks/react-native-image-editor.xcframework/ios-arm64/Headers/RNCImageEditor.h new file mode 100644 index 0000000..2fb37e8 --- /dev/null +++ b/Frameworks/react-native-image-editor.xcframework/ios-arm64/Headers/RNCImageEditor.h @@ -0,0 +1,12 @@ +/** + * 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 + +@interface RNCImageEditor : NSObject + +@end diff --git a/Frameworks/react-native-image-editor.xcframework/ios-arm64/Headers/RNCImageUtils.h b/Frameworks/react-native-image-editor.xcframework/ios-arm64/Headers/RNCImageUtils.h new file mode 100644 index 0000000..e771084 --- /dev/null +++ b/Frameworks/react-native-image-editor.xcframework/ios-arm64/Headers/RNCImageUtils.h @@ -0,0 +1,21 @@ +// +// RNCImageUtils.h +// RNCImageEditor +// +// Created by Dawid Urbaniak on 30/05/2019. +// Copyright © 2019 Facebook. All rights reserved. +// + +#ifndef RNCImageUtils_h +#define RNCImageUtils_h + +#import + +@interface RNCImageUtils : NSObject + ++ (NSString *)writeImage:(NSData *)image toPath:(NSString *)path error:(NSError **)error; + +@end + + +#endif /* RNCImageUtils_h */ diff --git a/Frameworks/react-native-image-editor.xcframework/ios-arm64/libreact-native-image-editor.a b/Frameworks/react-native-image-editor.xcframework/ios-arm64/libreact-native-image-editor.a new file mode 100644 index 0000000..3c6545f Binary files /dev/null and b/Frameworks/react-native-image-editor.xcframework/ios-arm64/libreact-native-image-editor.a differ diff --git a/Frameworks/react-native-image-editor.xcframework/ios-arm64_x86_64-simulator/Headers/RNCFileSystem.h b/Frameworks/react-native-image-editor.xcframework/ios-arm64_x86_64-simulator/Headers/RNCFileSystem.h new file mode 100644 index 0000000..ab5a50e --- /dev/null +++ b/Frameworks/react-native-image-editor.xcframework/ios-arm64_x86_64-simulator/Headers/RNCFileSystem.h @@ -0,0 +1,22 @@ +// +// RNFileSystem.h +// RNCImageEditor +// +// Created by Dawid Urbaniak on 30/05/2019. +// Copyright © 2019 Facebook. All rights reserved. +// + +#ifndef RNCFileSystem_h +#define RNCFileSystem_h + +#import + +@interface RNCFileSystem : NSObject + ++ (BOOL)ensureDirExistsWithPath:(NSString *)path; ++ (NSString *)generatePathInDirectory:(NSString *)directory withExtension:(NSString *)extension; ++ (NSString *)cacheDirectoryPath; + +@end + +#endif /* RNCFileSystem_h */ diff --git a/Frameworks/react-native-image-editor.xcframework/ios-arm64_x86_64-simulator/Headers/RNCImageEditor.h b/Frameworks/react-native-image-editor.xcframework/ios-arm64_x86_64-simulator/Headers/RNCImageEditor.h new file mode 100644 index 0000000..2fb37e8 --- /dev/null +++ b/Frameworks/react-native-image-editor.xcframework/ios-arm64_x86_64-simulator/Headers/RNCImageEditor.h @@ -0,0 +1,12 @@ +/** + * 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 + +@interface RNCImageEditor : NSObject + +@end diff --git a/Frameworks/react-native-image-editor.xcframework/ios-arm64_x86_64-simulator/Headers/RNCImageUtils.h b/Frameworks/react-native-image-editor.xcframework/ios-arm64_x86_64-simulator/Headers/RNCImageUtils.h new file mode 100644 index 0000000..e771084 --- /dev/null +++ b/Frameworks/react-native-image-editor.xcframework/ios-arm64_x86_64-simulator/Headers/RNCImageUtils.h @@ -0,0 +1,21 @@ +// +// RNCImageUtils.h +// RNCImageEditor +// +// Created by Dawid Urbaniak on 30/05/2019. +// Copyright © 2019 Facebook. All rights reserved. +// + +#ifndef RNCImageUtils_h +#define RNCImageUtils_h + +#import + +@interface RNCImageUtils : NSObject + ++ (NSString *)writeImage:(NSData *)image toPath:(NSString *)path error:(NSError **)error; + +@end + + +#endif /* RNCImageUtils_h */ diff --git a/Frameworks/react-native-image-editor.xcframework/ios-arm64_x86_64-simulator/libreact-native-image-editor.a b/Frameworks/react-native-image-editor.xcframework/ios-arm64_x86_64-simulator/libreact-native-image-editor.a new file mode 100644 index 0000000..1dbfb6b Binary files /dev/null and b/Frameworks/react-native-image-editor.xcframework/ios-arm64_x86_64-simulator/libreact-native-image-editor.a differ diff --git a/Frameworks/react-native-image-marker.xcframework/Info.plist b/Frameworks/react-native-image-marker.xcframework/Info.plist new file mode 100644 index 0000000..5a2bbb7 --- /dev/null +++ b/Frameworks/react-native-image-marker.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libreact-native-image-marker.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libreact-native-image-marker.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + libreact-native-image-marker.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libreact-native-image-marker.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/react-native-image-marker.xcframework/ios-arm64/Headers/MarkImageOptions.h b/Frameworks/react-native-image-marker.xcframework/ios-arm64/Headers/MarkImageOptions.h new file mode 100644 index 0000000..2ed8511 --- /dev/null +++ b/Frameworks/react-native-image-marker.xcframework/ios-arm64/Headers/MarkImageOptions.h @@ -0,0 +1,20 @@ +// +// Options+ImageMarkOptions.h +// react-native-image-marker +// +// Created by Jimmydaddy on 2023/6/22. +// + +#import "Options.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MarkImageOptions: Options + +@property (nonatomic, copy) NSDictionary * markerSrc; +@property (nonatomic, copy) NSString * markerImageUri; +@property (nonatomic, assign) CGFloat markerScale; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-image-marker.xcframework/ios-arm64/Headers/MarkTextOptions.h b/Frameworks/react-native-image-marker.xcframework/ios-arm64/Headers/MarkTextOptions.h new file mode 100644 index 0000000..b1d8f2e --- /dev/null +++ b/Frameworks/react-native-image-marker.xcframework/ios-arm64/Headers/MarkTextOptions.h @@ -0,0 +1,17 @@ +// +// Options+TextMarkOptions.h +// RCTImageMarker +// +// Created by Jimmydaddy on 2023/6/22. +// Copyright © 2023 Jimmy. All rights reserved. +// + +#import "Options.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MarkTextOptions: Options +@property (nonatomic, copy) NSString * text; +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-image-marker.xcframework/ios-arm64/Headers/Options.h b/Frameworks/react-native-image-marker.xcframework/ios-arm64/Headers/Options.h new file mode 100644 index 0000000..3d62d19 --- /dev/null +++ b/Frameworks/react-native-image-marker.xcframework/ios-arm64/Headers/Options.h @@ -0,0 +1,39 @@ +// +// NSObject+Options.h +// RCTImageMarker +// +// Created by Jimmydaddy on 2023/6/22. +// Copyright © 2023 Jimmy. All rights reserved. +// + +#import +#import +#import "TextBackground.h" +#import "RCTConvert+ImageMarker.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface Options: NSObject + +@property (nonatomic, copy) NSDictionary * src; +@property (nonatomic, copy) UIColor * color; +@property (nonatomic, copy) NSString * uri; +@property (nonatomic, copy) UIFont * font; +@property (nonatomic, copy) NSShadow * shadow; +@property (nonatomic, copy) TextBackground* textBackground; +@property (nonatomic, assign) CGFloat scale; +@property (nonatomic, assign) NSInteger quality; +@property (nonatomic, copy) NSString * filename; +@property (nonatomic, assign) NSInteger maxSize; +@property (nonatomic, assign) CGFloat X; +@property (nonatomic, assign) CGFloat Y; +@property (nonatomic, copy) NSString * saveFormat; +@property (nonatomic, assign) MarkerPosition position; + +-(id)initWithDicOpts: (NSDictionary *) opts; + ++(id)checkParams: (NSDictionary *) opts rejecter:(RCTPromiseRejectBlock)reject; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-image-marker.xcframework/ios-arm64/Headers/RCTConvert+ImageMarker.h b/Frameworks/react-native-image-marker.xcframework/ios-arm64/Headers/RCTConvert+ImageMarker.h new file mode 100644 index 0000000..7015dd6 --- /dev/null +++ b/Frameworks/react-native-image-marker.xcframework/ios-arm64/Headers/RCTConvert+ImageMarker.h @@ -0,0 +1,31 @@ +// +// RCTConvert+ImageMarker.h +// RCTImageMarker +// +// Created by Jimmy on 16/7/19. +// Copyright © 2016年 Jimmy. All rights reserved. +// + +#ifndef RCTConvert_ImageMarker_h +#define RCTConvert_ImageMarker_h +#import + +typedef enum{ + TopLeft = 0, + TopCenter = 1, + TopRight = 2, + BottomLeft = 3, + BottomCenter = 4, + BottomRight = 5, + Center = 6 +} MarkerPosition; + +@interface RCTConvert(ImageMarker) ++ (CGPoint)CGPoint:(id)json offset:(NSUInteger)offset; ++ (CGRect)CGRect:(id)json offset:(NSUInteger)offset; ++ (CGColorRef)CGColor:(id)json offset:(NSUInteger)offset; ++ (CGSize)CGSize:(id)json offset:(NSUInteger)offset; ++ (MarkerPosition)MarkerPosition: (id)value; +@end + +#endif /* RCTConvert_ImageMarker_h */ diff --git a/Frameworks/react-native-image-marker.xcframework/ios-arm64/Headers/RCTImageMarker.h b/Frameworks/react-native-image-marker.xcframework/ios-arm64/Headers/RCTImageMarker.h new file mode 100644 index 0000000..1dc1a00 --- /dev/null +++ b/Frameworks/react-native-image-marker.xcframework/ios-arm64/Headers/RCTImageMarker.h @@ -0,0 +1,15 @@ +// +// RCTImageMarker.h +// RCTImageMarker +// +// Created by Jimmy on 16/7/18. +// Copyright © 2016年 Jimmy. All rights reserved. +// + +#import +#import +#import + +@interface ImageMarker : NSObject + +@end diff --git a/Frameworks/react-native-image-marker.xcframework/ios-arm64/Headers/TextBackground.h b/Frameworks/react-native-image-marker.xcframework/ios-arm64/Headers/TextBackground.h new file mode 100644 index 0000000..579b798 --- /dev/null +++ b/Frameworks/react-native-image-marker.xcframework/ios-arm64/Headers/TextBackground.h @@ -0,0 +1,24 @@ +// +// NSObject+TextBackground.h +// RCTImageMarker +// +// Created by Jimmydaddy on 2023/6/22. +// Copyright © 2023 Jimmy. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface TextBackground : NSObject +@property (nonatomic, copy) UIColor * colorBg; +@property (nonatomic, copy) NSString * typeBg; +@property (nonatomic, assign) float paddingX; +@property (nonatomic, assign) float paddingY; + +-(id)initWithTextBackgroundStyle:(NSDictionary *) textBackground; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-image-marker.xcframework/ios-arm64/Headers/Utils.h b/Frameworks/react-native-image-marker.xcframework/ios-arm64/Headers/Utils.h new file mode 100644 index 0000000..003e58d --- /dev/null +++ b/Frameworks/react-native-image-marker.xcframework/ios-arm64/Headers/Utils.h @@ -0,0 +1,26 @@ +// +// NSObject+Utils.h +// RCTImageMarker +// +// Created by Jimmydaddy on 2023/6/22. +// Copyright © 2023 Jimmy. All rights reserved. +// + +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface Utils: NSObject + ++ (UIColor *)getColor:(NSString *)hexColor; ++ (int)stringToInt:(NSString *)string; ++(NSShadow*)getShadowStyle:(NSDictionary *) shadowStyle; ++ (bool)isPng: (NSString *)saveFormat; ++ (NSString*) getExt: (NSString*) saveFormat; ++ (bool)isNULL: (NSDictionary*) obj; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-image-marker.xcframework/ios-arm64/libreact-native-image-marker.a b/Frameworks/react-native-image-marker.xcframework/ios-arm64/libreact-native-image-marker.a new file mode 100644 index 0000000..a75931f Binary files /dev/null and b/Frameworks/react-native-image-marker.xcframework/ios-arm64/libreact-native-image-marker.a differ diff --git a/Frameworks/react-native-image-marker.xcframework/ios-arm64_x86_64-simulator/Headers/MarkImageOptions.h b/Frameworks/react-native-image-marker.xcframework/ios-arm64_x86_64-simulator/Headers/MarkImageOptions.h new file mode 100644 index 0000000..2ed8511 --- /dev/null +++ b/Frameworks/react-native-image-marker.xcframework/ios-arm64_x86_64-simulator/Headers/MarkImageOptions.h @@ -0,0 +1,20 @@ +// +// Options+ImageMarkOptions.h +// react-native-image-marker +// +// Created by Jimmydaddy on 2023/6/22. +// + +#import "Options.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MarkImageOptions: Options + +@property (nonatomic, copy) NSDictionary * markerSrc; +@property (nonatomic, copy) NSString * markerImageUri; +@property (nonatomic, assign) CGFloat markerScale; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-image-marker.xcframework/ios-arm64_x86_64-simulator/Headers/MarkTextOptions.h b/Frameworks/react-native-image-marker.xcframework/ios-arm64_x86_64-simulator/Headers/MarkTextOptions.h new file mode 100644 index 0000000..b1d8f2e --- /dev/null +++ b/Frameworks/react-native-image-marker.xcframework/ios-arm64_x86_64-simulator/Headers/MarkTextOptions.h @@ -0,0 +1,17 @@ +// +// Options+TextMarkOptions.h +// RCTImageMarker +// +// Created by Jimmydaddy on 2023/6/22. +// Copyright © 2023 Jimmy. All rights reserved. +// + +#import "Options.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MarkTextOptions: Options +@property (nonatomic, copy) NSString * text; +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-image-marker.xcframework/ios-arm64_x86_64-simulator/Headers/Options.h b/Frameworks/react-native-image-marker.xcframework/ios-arm64_x86_64-simulator/Headers/Options.h new file mode 100644 index 0000000..3d62d19 --- /dev/null +++ b/Frameworks/react-native-image-marker.xcframework/ios-arm64_x86_64-simulator/Headers/Options.h @@ -0,0 +1,39 @@ +// +// NSObject+Options.h +// RCTImageMarker +// +// Created by Jimmydaddy on 2023/6/22. +// Copyright © 2023 Jimmy. All rights reserved. +// + +#import +#import +#import "TextBackground.h" +#import "RCTConvert+ImageMarker.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface Options: NSObject + +@property (nonatomic, copy) NSDictionary * src; +@property (nonatomic, copy) UIColor * color; +@property (nonatomic, copy) NSString * uri; +@property (nonatomic, copy) UIFont * font; +@property (nonatomic, copy) NSShadow * shadow; +@property (nonatomic, copy) TextBackground* textBackground; +@property (nonatomic, assign) CGFloat scale; +@property (nonatomic, assign) NSInteger quality; +@property (nonatomic, copy) NSString * filename; +@property (nonatomic, assign) NSInteger maxSize; +@property (nonatomic, assign) CGFloat X; +@property (nonatomic, assign) CGFloat Y; +@property (nonatomic, copy) NSString * saveFormat; +@property (nonatomic, assign) MarkerPosition position; + +-(id)initWithDicOpts: (NSDictionary *) opts; + ++(id)checkParams: (NSDictionary *) opts rejecter:(RCTPromiseRejectBlock)reject; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-image-marker.xcframework/ios-arm64_x86_64-simulator/Headers/RCTConvert+ImageMarker.h b/Frameworks/react-native-image-marker.xcframework/ios-arm64_x86_64-simulator/Headers/RCTConvert+ImageMarker.h new file mode 100644 index 0000000..7015dd6 --- /dev/null +++ b/Frameworks/react-native-image-marker.xcframework/ios-arm64_x86_64-simulator/Headers/RCTConvert+ImageMarker.h @@ -0,0 +1,31 @@ +// +// RCTConvert+ImageMarker.h +// RCTImageMarker +// +// Created by Jimmy on 16/7/19. +// Copyright © 2016年 Jimmy. All rights reserved. +// + +#ifndef RCTConvert_ImageMarker_h +#define RCTConvert_ImageMarker_h +#import + +typedef enum{ + TopLeft = 0, + TopCenter = 1, + TopRight = 2, + BottomLeft = 3, + BottomCenter = 4, + BottomRight = 5, + Center = 6 +} MarkerPosition; + +@interface RCTConvert(ImageMarker) ++ (CGPoint)CGPoint:(id)json offset:(NSUInteger)offset; ++ (CGRect)CGRect:(id)json offset:(NSUInteger)offset; ++ (CGColorRef)CGColor:(id)json offset:(NSUInteger)offset; ++ (CGSize)CGSize:(id)json offset:(NSUInteger)offset; ++ (MarkerPosition)MarkerPosition: (id)value; +@end + +#endif /* RCTConvert_ImageMarker_h */ diff --git a/Frameworks/react-native-image-marker.xcframework/ios-arm64_x86_64-simulator/Headers/RCTImageMarker.h b/Frameworks/react-native-image-marker.xcframework/ios-arm64_x86_64-simulator/Headers/RCTImageMarker.h new file mode 100644 index 0000000..1dc1a00 --- /dev/null +++ b/Frameworks/react-native-image-marker.xcframework/ios-arm64_x86_64-simulator/Headers/RCTImageMarker.h @@ -0,0 +1,15 @@ +// +// RCTImageMarker.h +// RCTImageMarker +// +// Created by Jimmy on 16/7/18. +// Copyright © 2016年 Jimmy. All rights reserved. +// + +#import +#import +#import + +@interface ImageMarker : NSObject + +@end diff --git a/Frameworks/react-native-image-marker.xcframework/ios-arm64_x86_64-simulator/Headers/TextBackground.h b/Frameworks/react-native-image-marker.xcframework/ios-arm64_x86_64-simulator/Headers/TextBackground.h new file mode 100644 index 0000000..579b798 --- /dev/null +++ b/Frameworks/react-native-image-marker.xcframework/ios-arm64_x86_64-simulator/Headers/TextBackground.h @@ -0,0 +1,24 @@ +// +// NSObject+TextBackground.h +// RCTImageMarker +// +// Created by Jimmydaddy on 2023/6/22. +// Copyright © 2023 Jimmy. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface TextBackground : NSObject +@property (nonatomic, copy) UIColor * colorBg; +@property (nonatomic, copy) NSString * typeBg; +@property (nonatomic, assign) float paddingX; +@property (nonatomic, assign) float paddingY; + +-(id)initWithTextBackgroundStyle:(NSDictionary *) textBackground; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-image-marker.xcframework/ios-arm64_x86_64-simulator/Headers/Utils.h b/Frameworks/react-native-image-marker.xcframework/ios-arm64_x86_64-simulator/Headers/Utils.h new file mode 100644 index 0000000..003e58d --- /dev/null +++ b/Frameworks/react-native-image-marker.xcframework/ios-arm64_x86_64-simulator/Headers/Utils.h @@ -0,0 +1,26 @@ +// +// NSObject+Utils.h +// RCTImageMarker +// +// Created by Jimmydaddy on 2023/6/22. +// Copyright © 2023 Jimmy. All rights reserved. +// + +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface Utils: NSObject + ++ (UIColor *)getColor:(NSString *)hexColor; ++ (int)stringToInt:(NSString *)string; ++(NSShadow*)getShadowStyle:(NSDictionary *) shadowStyle; ++ (bool)isPng: (NSString *)saveFormat; ++ (NSString*) getExt: (NSString*) saveFormat; ++ (bool)isNULL: (NSDictionary*) obj; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-image-marker.xcframework/ios-arm64_x86_64-simulator/libreact-native-image-marker.a b/Frameworks/react-native-image-marker.xcframework/ios-arm64_x86_64-simulator/libreact-native-image-marker.a new file mode 100644 index 0000000..314c7bd Binary files /dev/null and b/Frameworks/react-native-image-marker.xcframework/ios-arm64_x86_64-simulator/libreact-native-image-marker.a differ diff --git a/Frameworks/react-native-mail.xcframework/Info.plist b/Frameworks/react-native-mail.xcframework/Info.plist new file mode 100644 index 0000000..d81e532 --- /dev/null +++ b/Frameworks/react-native-mail.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libreact-native-mail.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libreact-native-mail.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + libreact-native-mail.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libreact-native-mail.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/react-native-mail.xcframework/ios-arm64/Headers/RNMail.h b/Frameworks/react-native-mail.xcframework/ios-arm64/Headers/RNMail.h new file mode 100644 index 0000000..81bd83e --- /dev/null +++ b/Frameworks/react-native-mail.xcframework/ios-arm64/Headers/RNMail.h @@ -0,0 +1,6 @@ +#import +#import + +@interface RNMail : NSObject + +@end diff --git a/Frameworks/react-native-mail.xcframework/ios-arm64/libreact-native-mail.a b/Frameworks/react-native-mail.xcframework/ios-arm64/libreact-native-mail.a new file mode 100644 index 0000000..37f0ea5 Binary files /dev/null and b/Frameworks/react-native-mail.xcframework/ios-arm64/libreact-native-mail.a differ diff --git a/Frameworks/react-native-mail.xcframework/ios-arm64_x86_64-simulator/Headers/RNMail.h b/Frameworks/react-native-mail.xcframework/ios-arm64_x86_64-simulator/Headers/RNMail.h new file mode 100644 index 0000000..81bd83e --- /dev/null +++ b/Frameworks/react-native-mail.xcframework/ios-arm64_x86_64-simulator/Headers/RNMail.h @@ -0,0 +1,6 @@ +#import +#import + +@interface RNMail : NSObject + +@end diff --git a/Frameworks/react-native-mail.xcframework/ios-arm64_x86_64-simulator/libreact-native-mail.a b/Frameworks/react-native-mail.xcframework/ios-arm64_x86_64-simulator/libreact-native-mail.a new file mode 100644 index 0000000..cc0b444 Binary files /dev/null and b/Frameworks/react-native-mail.xcframework/ios-arm64_x86_64-simulator/libreact-native-mail.a differ diff --git a/Frameworks/react-native-netinfo.xcframework/Info.plist b/Frameworks/react-native-netinfo.xcframework/Info.plist new file mode 100644 index 0000000..dc9787e --- /dev/null +++ b/Frameworks/react-native-netinfo.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libreact-native-netinfo.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libreact-native-netinfo.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + libreact-native-netinfo.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libreact-native-netinfo.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/react-native-netinfo.xcframework/ios-arm64/Headers/RNCConnectionState.h b/Frameworks/react-native-netinfo.xcframework/ios-arm64/Headers/RNCConnectionState.h new file mode 100644 index 0000000..99d811d --- /dev/null +++ b/Frameworks/react-native-netinfo.xcframework/ios-arm64/Headers/RNCConnectionState.h @@ -0,0 +1,40 @@ +/** + * 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 +#import + +NS_ASSUME_NONNULL_BEGIN + +// Based on the ConnectionType enum described in the W3C Network Information API spec +// (https://wicg.github.io/netinfo/). +static NSString *const RNCConnectionTypeUnknown = @"unknown"; +static NSString *const RNCConnectionTypeNone = @"none"; +static NSString *const RNCConnectionTypeWifi = @"wifi"; +static NSString *const RNCConnectionTypeCellular = @"cellular"; +static NSString *const RNCConnectionTypeEthernet = @"ethernet"; + +// Based on the EffectiveConnectionType enum described in the W3C Network Information API spec +// (https://wicg.github.io/netinfo/). +static NSString *const RNCCellularGeneration2g = @"2g"; +static NSString *const RNCCellularGeneration3g = @"3g"; +static NSString *const RNCCellularGeneration4g = @"4g"; + +@interface RNCConnectionState : NSObject + +- (instancetype)init; +- (instancetype)initWithReachabilityFlags:(SCNetworkReachabilityFlags)flags; +- (BOOL)isEqualToConnectionState:(RNCConnectionState *)otherState; + +@property (nonatomic, strong, readonly) NSString *type; +@property (nullable, nonatomic, strong, readonly) NSString *cellularGeneration; +@property (nonatomic, readonly) BOOL connected; +@property (nonatomic, readonly) BOOL expensive; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-netinfo.xcframework/ios-arm64/Headers/RNCConnectionStateWatcher.h b/Frameworks/react-native-netinfo.xcframework/ios-arm64/Headers/RNCConnectionStateWatcher.h new file mode 100644 index 0000000..01dedaa --- /dev/null +++ b/Frameworks/react-native-netinfo.xcframework/ios-arm64/Headers/RNCConnectionStateWatcher.h @@ -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 +#import "RNCConnectionState.h" + +NS_ASSUME_NONNULL_BEGIN + +@class RNCConnectionStateWatcher; + + +@protocol RNCConnectionStateWatcherDelegate + +- (void)connectionStateWatcher:(RNCConnectionStateWatcher *)connectionStateWatcher didUpdateState:(RNCConnectionState *)state; + +@end + +@interface RNCConnectionStateWatcher : NSObject + +- (instancetype)initWithDelegate:(id)delegate; +- (RNCConnectionState *)currentState; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-netinfo.xcframework/ios-arm64/Headers/RNCNetInfo.h b/Frameworks/react-native-netinfo.xcframework/ios-arm64/Headers/RNCNetInfo.h new file mode 100644 index 0000000..1960893 --- /dev/null +++ b/Frameworks/react-native-netinfo.xcframework/ios-arm64/Headers/RNCNetInfo.h @@ -0,0 +1,12 @@ +/** + * 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 + +@interface RNCNetInfo : RCTEventEmitter + +@end diff --git a/Frameworks/react-native-netinfo.xcframework/ios-arm64/libreact-native-netinfo.a b/Frameworks/react-native-netinfo.xcframework/ios-arm64/libreact-native-netinfo.a new file mode 100644 index 0000000..f6fe50c Binary files /dev/null and b/Frameworks/react-native-netinfo.xcframework/ios-arm64/libreact-native-netinfo.a differ diff --git a/Frameworks/react-native-netinfo.xcframework/ios-arm64_x86_64-simulator/Headers/RNCConnectionState.h b/Frameworks/react-native-netinfo.xcframework/ios-arm64_x86_64-simulator/Headers/RNCConnectionState.h new file mode 100644 index 0000000..99d811d --- /dev/null +++ b/Frameworks/react-native-netinfo.xcframework/ios-arm64_x86_64-simulator/Headers/RNCConnectionState.h @@ -0,0 +1,40 @@ +/** + * 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 +#import + +NS_ASSUME_NONNULL_BEGIN + +// Based on the ConnectionType enum described in the W3C Network Information API spec +// (https://wicg.github.io/netinfo/). +static NSString *const RNCConnectionTypeUnknown = @"unknown"; +static NSString *const RNCConnectionTypeNone = @"none"; +static NSString *const RNCConnectionTypeWifi = @"wifi"; +static NSString *const RNCConnectionTypeCellular = @"cellular"; +static NSString *const RNCConnectionTypeEthernet = @"ethernet"; + +// Based on the EffectiveConnectionType enum described in the W3C Network Information API spec +// (https://wicg.github.io/netinfo/). +static NSString *const RNCCellularGeneration2g = @"2g"; +static NSString *const RNCCellularGeneration3g = @"3g"; +static NSString *const RNCCellularGeneration4g = @"4g"; + +@interface RNCConnectionState : NSObject + +- (instancetype)init; +- (instancetype)initWithReachabilityFlags:(SCNetworkReachabilityFlags)flags; +- (BOOL)isEqualToConnectionState:(RNCConnectionState *)otherState; + +@property (nonatomic, strong, readonly) NSString *type; +@property (nullable, nonatomic, strong, readonly) NSString *cellularGeneration; +@property (nonatomic, readonly) BOOL connected; +@property (nonatomic, readonly) BOOL expensive; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-netinfo.xcframework/ios-arm64_x86_64-simulator/Headers/RNCConnectionStateWatcher.h b/Frameworks/react-native-netinfo.xcframework/ios-arm64_x86_64-simulator/Headers/RNCConnectionStateWatcher.h new file mode 100644 index 0000000..01dedaa --- /dev/null +++ b/Frameworks/react-native-netinfo.xcframework/ios-arm64_x86_64-simulator/Headers/RNCConnectionStateWatcher.h @@ -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 +#import "RNCConnectionState.h" + +NS_ASSUME_NONNULL_BEGIN + +@class RNCConnectionStateWatcher; + + +@protocol RNCConnectionStateWatcherDelegate + +- (void)connectionStateWatcher:(RNCConnectionStateWatcher *)connectionStateWatcher didUpdateState:(RNCConnectionState *)state; + +@end + +@interface RNCConnectionStateWatcher : NSObject + +- (instancetype)initWithDelegate:(id)delegate; +- (RNCConnectionState *)currentState; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-netinfo.xcframework/ios-arm64_x86_64-simulator/Headers/RNCNetInfo.h b/Frameworks/react-native-netinfo.xcframework/ios-arm64_x86_64-simulator/Headers/RNCNetInfo.h new file mode 100644 index 0000000..1960893 --- /dev/null +++ b/Frameworks/react-native-netinfo.xcframework/ios-arm64_x86_64-simulator/Headers/RNCNetInfo.h @@ -0,0 +1,12 @@ +/** + * 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 + +@interface RNCNetInfo : RCTEventEmitter + +@end diff --git a/Frameworks/react-native-netinfo.xcframework/ios-arm64_x86_64-simulator/libreact-native-netinfo.a b/Frameworks/react-native-netinfo.xcframework/ios-arm64_x86_64-simulator/libreact-native-netinfo.a new file mode 100644 index 0000000..2769b85 Binary files /dev/null and b/Frameworks/react-native-netinfo.xcframework/ios-arm64_x86_64-simulator/libreact-native-netinfo.a differ diff --git a/Frameworks/react-native-pager-view.xcframework/Info.plist b/Frameworks/react-native-pager-view.xcframework/Info.plist new file mode 100644 index 0000000..fbf40e0 --- /dev/null +++ b/Frameworks/react-native-pager-view.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libreact-native-pager-view.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libreact-native-pager-view.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + libreact-native-pager-view.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libreact-native-pager-view.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/react-native-pager-view.xcframework/ios-arm64/Headers/RCTConvert+UIPageViewControllerNavigationOrientation.h b/Frameworks/react-native-pager-view.xcframework/ios-arm64/Headers/RCTConvert+UIPageViewControllerNavigationOrientation.h new file mode 100644 index 0000000..35d1cae --- /dev/null +++ b/Frameworks/react-native-pager-view.xcframework/ios-arm64/Headers/RCTConvert+UIPageViewControllerNavigationOrientation.h @@ -0,0 +1,11 @@ + +#import +#import +NS_ASSUME_NONNULL_BEGIN + +@interface RCTConvert (UIPageViewControllerNavigationOrientation) + +@end + + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-pager-view.xcframework/ios-arm64/Headers/RCTOnPageScrollEvent.h b/Frameworks/react-native-pager-view.xcframework/ios-arm64/Headers/RCTOnPageScrollEvent.h new file mode 100644 index 0000000..b0d7d95 --- /dev/null +++ b/Frameworks/react-native-pager-view.xcframework/ios-arm64/Headers/RCTOnPageScrollEvent.h @@ -0,0 +1,14 @@ +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTOnPageScrollEvent : NSObject + +- (instancetype) initWithReactTag:(NSNumber *)reactTag + position:(NSNumber *)position + offset:(NSNumber *)offset; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-pager-view.xcframework/ios-arm64/Headers/RCTOnPageScrollStateChanged.h b/Frameworks/react-native-pager-view.xcframework/ios-arm64/Headers/RCTOnPageScrollStateChanged.h new file mode 100644 index 0000000..55135ac --- /dev/null +++ b/Frameworks/react-native-pager-view.xcframework/ios-arm64/Headers/RCTOnPageScrollStateChanged.h @@ -0,0 +1,14 @@ +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTOnPageScrollStateChanged : NSObject + +- (instancetype) initWithReactTag:(NSNumber *)reactTag + state:(NSString *)state + coalescingKey:(uint16_t)coalescingKey; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-pager-view.xcframework/ios-arm64/Headers/RCTOnPageSelected.h b/Frameworks/react-native-pager-view.xcframework/ios-arm64/Headers/RCTOnPageSelected.h new file mode 100644 index 0000000..dd88dd9 --- /dev/null +++ b/Frameworks/react-native-pager-view.xcframework/ios-arm64/Headers/RCTOnPageSelected.h @@ -0,0 +1,14 @@ +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTOnPageSelected : NSObject + +- (instancetype) initWithReactTag:(NSNumber *)reactTag + position:(NSNumber *)position + coalescingKey:(uint16_t)coalescingKey; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-pager-view.xcframework/ios-arm64/Headers/RNCPagerViewComponentView.h b/Frameworks/react-native-pager-view.xcframework/ios-arm64/Headers/RNCPagerViewComponentView.h new file mode 100644 index 0000000..de276e0 --- /dev/null +++ b/Frameworks/react-native-pager-view.xcframework/ios-arm64/Headers/RNCPagerViewComponentView.h @@ -0,0 +1,27 @@ +#ifdef RCT_NEW_ARCH_ENABLED + +#import +#import +#import +#import "UIViewController+CreateExtension.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RNCPagerViewComponentView : RCTViewComponentView + +@property(strong, nonatomic, readonly) UIPageViewController *nativePageViewController; +@property(nonatomic, strong) NSMutableArray *nativeChildrenViewControllers; +@property(nonatomic) NSInteger initialPage; +@property(nonatomic) NSInteger currentIndex; +@property(nonatomic) NSInteger destinationIndex; +@property(nonatomic) NSString* layoutDirection; +@property(nonatomic) BOOL overdrag; + +- (void)setPage:(NSInteger)number; +- (void)setPageWithoutAnimation:(NSInteger)number; + +@end + +NS_ASSUME_NONNULL_END + +#endif diff --git a/Frameworks/react-native-pager-view.xcframework/ios-arm64/Headers/ReactNativePageView.h b/Frameworks/react-native-pager-view.xcframework/ios-arm64/Headers/ReactNativePageView.h new file mode 100644 index 0000000..8887fd2 --- /dev/null +++ b/Frameworks/react-native-pager-view.xcframework/ios-arm64/Headers/ReactNativePageView.h @@ -0,0 +1,33 @@ +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface ReactNativePageView: UIView + +- (instancetype)initWithEventDispatcher:(RCTEventDispatcher *)eventDispatcher; + +@property(nonatomic) NSInteger initialPage; +@property(nonatomic) NSInteger lastReportedIndex; +@property(nonatomic) NSInteger destinationIndex; +@property(nonatomic) NSInteger currentIndex; +@property(nonatomic) NSInteger pageMargin; +@property(nonatomic, readonly) BOOL scrollEnabled; +@property(nonatomic, readonly) UIScrollViewKeyboardDismissMode dismissKeyboard; +@property(nonatomic) UIPageViewControllerNavigationOrientation orientation; +@property(nonatomic, copy) RCTDirectEventBlock onPageSelected; +@property(nonatomic, copy) RCTDirectEventBlock onPageScroll; +@property(nonatomic, copy) RCTDirectEventBlock onPageScrollStateChanged; +@property(nonatomic) BOOL overdrag; +@property(nonatomic) NSString* layoutDirection; +@property(nonatomic, assign) BOOL animating; + +- (void)goTo:(NSInteger)index animated:(BOOL)animated; +- (void)shouldScroll:(BOOL)scrollEnabled; +- (void)shouldDismissKeyboard:(NSString *)dismissKeyboard; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-pager-view.xcframework/ios-arm64/Headers/ReactViewPagerManager.h b/Frameworks/react-native-pager-view.xcframework/ios-arm64/Headers/ReactViewPagerManager.h new file mode 100644 index 0000000..cc5de3e --- /dev/null +++ b/Frameworks/react-native-pager-view.xcframework/ios-arm64/Headers/ReactViewPagerManager.h @@ -0,0 +1,13 @@ + +#import +#import +#import +#import +#import "ReactNativePageView.h" +NS_ASSUME_NONNULL_BEGIN + +@interface ReactViewPagerManager : RCTViewManager + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-pager-view.xcframework/ios-arm64/Headers/UIViewController+CreateExtension.h b/Frameworks/react-native-pager-view.xcframework/ios-arm64/Headers/UIViewController+CreateExtension.h new file mode 100644 index 0000000..009e951 --- /dev/null +++ b/Frameworks/react-native-pager-view.xcframework/ios-arm64/Headers/UIViewController+CreateExtension.h @@ -0,0 +1,11 @@ +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface UIViewController (CreateExtension) + +- (instancetype)initWithView:(UIView *)view; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-pager-view.xcframework/ios-arm64/libreact-native-pager-view.a b/Frameworks/react-native-pager-view.xcframework/ios-arm64/libreact-native-pager-view.a new file mode 100644 index 0000000..f3b3928 Binary files /dev/null and b/Frameworks/react-native-pager-view.xcframework/ios-arm64/libreact-native-pager-view.a differ diff --git a/Frameworks/react-native-pager-view.xcframework/ios-arm64_x86_64-simulator/Headers/RCTConvert+UIPageViewControllerNavigationOrientation.h b/Frameworks/react-native-pager-view.xcframework/ios-arm64_x86_64-simulator/Headers/RCTConvert+UIPageViewControllerNavigationOrientation.h new file mode 100644 index 0000000..35d1cae --- /dev/null +++ b/Frameworks/react-native-pager-view.xcframework/ios-arm64_x86_64-simulator/Headers/RCTConvert+UIPageViewControllerNavigationOrientation.h @@ -0,0 +1,11 @@ + +#import +#import +NS_ASSUME_NONNULL_BEGIN + +@interface RCTConvert (UIPageViewControllerNavigationOrientation) + +@end + + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-pager-view.xcframework/ios-arm64_x86_64-simulator/Headers/RCTOnPageScrollEvent.h b/Frameworks/react-native-pager-view.xcframework/ios-arm64_x86_64-simulator/Headers/RCTOnPageScrollEvent.h new file mode 100644 index 0000000..b0d7d95 --- /dev/null +++ b/Frameworks/react-native-pager-view.xcframework/ios-arm64_x86_64-simulator/Headers/RCTOnPageScrollEvent.h @@ -0,0 +1,14 @@ +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTOnPageScrollEvent : NSObject + +- (instancetype) initWithReactTag:(NSNumber *)reactTag + position:(NSNumber *)position + offset:(NSNumber *)offset; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-pager-view.xcframework/ios-arm64_x86_64-simulator/Headers/RCTOnPageScrollStateChanged.h b/Frameworks/react-native-pager-view.xcframework/ios-arm64_x86_64-simulator/Headers/RCTOnPageScrollStateChanged.h new file mode 100644 index 0000000..55135ac --- /dev/null +++ b/Frameworks/react-native-pager-view.xcframework/ios-arm64_x86_64-simulator/Headers/RCTOnPageScrollStateChanged.h @@ -0,0 +1,14 @@ +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTOnPageScrollStateChanged : NSObject + +- (instancetype) initWithReactTag:(NSNumber *)reactTag + state:(NSString *)state + coalescingKey:(uint16_t)coalescingKey; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-pager-view.xcframework/ios-arm64_x86_64-simulator/Headers/RCTOnPageSelected.h b/Frameworks/react-native-pager-view.xcframework/ios-arm64_x86_64-simulator/Headers/RCTOnPageSelected.h new file mode 100644 index 0000000..dd88dd9 --- /dev/null +++ b/Frameworks/react-native-pager-view.xcframework/ios-arm64_x86_64-simulator/Headers/RCTOnPageSelected.h @@ -0,0 +1,14 @@ +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTOnPageSelected : NSObject + +- (instancetype) initWithReactTag:(NSNumber *)reactTag + position:(NSNumber *)position + coalescingKey:(uint16_t)coalescingKey; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-pager-view.xcframework/ios-arm64_x86_64-simulator/Headers/RNCPagerViewComponentView.h b/Frameworks/react-native-pager-view.xcframework/ios-arm64_x86_64-simulator/Headers/RNCPagerViewComponentView.h new file mode 100644 index 0000000..de276e0 --- /dev/null +++ b/Frameworks/react-native-pager-view.xcframework/ios-arm64_x86_64-simulator/Headers/RNCPagerViewComponentView.h @@ -0,0 +1,27 @@ +#ifdef RCT_NEW_ARCH_ENABLED + +#import +#import +#import +#import "UIViewController+CreateExtension.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RNCPagerViewComponentView : RCTViewComponentView + +@property(strong, nonatomic, readonly) UIPageViewController *nativePageViewController; +@property(nonatomic, strong) NSMutableArray *nativeChildrenViewControllers; +@property(nonatomic) NSInteger initialPage; +@property(nonatomic) NSInteger currentIndex; +@property(nonatomic) NSInteger destinationIndex; +@property(nonatomic) NSString* layoutDirection; +@property(nonatomic) BOOL overdrag; + +- (void)setPage:(NSInteger)number; +- (void)setPageWithoutAnimation:(NSInteger)number; + +@end + +NS_ASSUME_NONNULL_END + +#endif diff --git a/Frameworks/react-native-pager-view.xcframework/ios-arm64_x86_64-simulator/Headers/ReactNativePageView.h b/Frameworks/react-native-pager-view.xcframework/ios-arm64_x86_64-simulator/Headers/ReactNativePageView.h new file mode 100644 index 0000000..8887fd2 --- /dev/null +++ b/Frameworks/react-native-pager-view.xcframework/ios-arm64_x86_64-simulator/Headers/ReactNativePageView.h @@ -0,0 +1,33 @@ +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface ReactNativePageView: UIView + +- (instancetype)initWithEventDispatcher:(RCTEventDispatcher *)eventDispatcher; + +@property(nonatomic) NSInteger initialPage; +@property(nonatomic) NSInteger lastReportedIndex; +@property(nonatomic) NSInteger destinationIndex; +@property(nonatomic) NSInteger currentIndex; +@property(nonatomic) NSInteger pageMargin; +@property(nonatomic, readonly) BOOL scrollEnabled; +@property(nonatomic, readonly) UIScrollViewKeyboardDismissMode dismissKeyboard; +@property(nonatomic) UIPageViewControllerNavigationOrientation orientation; +@property(nonatomic, copy) RCTDirectEventBlock onPageSelected; +@property(nonatomic, copy) RCTDirectEventBlock onPageScroll; +@property(nonatomic, copy) RCTDirectEventBlock onPageScrollStateChanged; +@property(nonatomic) BOOL overdrag; +@property(nonatomic) NSString* layoutDirection; +@property(nonatomic, assign) BOOL animating; + +- (void)goTo:(NSInteger)index animated:(BOOL)animated; +- (void)shouldScroll:(BOOL)scrollEnabled; +- (void)shouldDismissKeyboard:(NSString *)dismissKeyboard; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-pager-view.xcframework/ios-arm64_x86_64-simulator/Headers/ReactViewPagerManager.h b/Frameworks/react-native-pager-view.xcframework/ios-arm64_x86_64-simulator/Headers/ReactViewPagerManager.h new file mode 100644 index 0000000..cc5de3e --- /dev/null +++ b/Frameworks/react-native-pager-view.xcframework/ios-arm64_x86_64-simulator/Headers/ReactViewPagerManager.h @@ -0,0 +1,13 @@ + +#import +#import +#import +#import +#import "ReactNativePageView.h" +NS_ASSUME_NONNULL_BEGIN + +@interface ReactViewPagerManager : RCTViewManager + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-pager-view.xcframework/ios-arm64_x86_64-simulator/Headers/UIViewController+CreateExtension.h b/Frameworks/react-native-pager-view.xcframework/ios-arm64_x86_64-simulator/Headers/UIViewController+CreateExtension.h new file mode 100644 index 0000000..009e951 --- /dev/null +++ b/Frameworks/react-native-pager-view.xcframework/ios-arm64_x86_64-simulator/Headers/UIViewController+CreateExtension.h @@ -0,0 +1,11 @@ +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface UIViewController (CreateExtension) + +- (instancetype)initWithView:(UIView *)view; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-pager-view.xcframework/ios-arm64_x86_64-simulator/libreact-native-pager-view.a b/Frameworks/react-native-pager-view.xcframework/ios-arm64_x86_64-simulator/libreact-native-pager-view.a new file mode 100644 index 0000000..e535ec8 Binary files /dev/null and b/Frameworks/react-native-pager-view.xcframework/ios-arm64_x86_64-simulator/libreact-native-pager-view.a differ diff --git a/Frameworks/react-native-pdf.xcframework/Info.plist b/Frameworks/react-native-pdf.xcframework/Info.plist new file mode 100644 index 0000000..e2e759d --- /dev/null +++ b/Frameworks/react-native-pdf.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libreact-native-pdf.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libreact-native-pdf.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libreact-native-pdf.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libreact-native-pdf.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/react-native-pdf.xcframework/ios-arm64/Headers/FastRCTiledLayer.h b/Frameworks/react-native-pdf.xcframework/ios-arm64/Headers/FastRCTiledLayer.h new file mode 100644 index 0000000..b6e6b05 --- /dev/null +++ b/Frameworks/react-native-pdf.xcframework/ios-arm64/Headers/FastRCTiledLayer.h @@ -0,0 +1,13 @@ +// +// FastCATiledLayer.h +// NewsMemory +// +// Created by TecnaviaAppsIOSdev on 10/02/14. +// +// + +#import + +@interface FastRCTiledLayer : CATiledLayer + +@end diff --git a/Frameworks/react-native-pdf.xcframework/ios-arm64/Headers/PdfManager.h b/Frameworks/react-native-pdf.xcframework/ios-arm64/Headers/PdfManager.h new file mode 100644 index 0000000..cb1f297 --- /dev/null +++ b/Frameworks/react-native-pdf.xcframework/ios-arm64/Headers/PdfManager.h @@ -0,0 +1,23 @@ +/** + * Copyright (c) 2017-present, Wonday (@wonday.org) + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import +#import + +#if __has_include() +#import +#else +#import "RCTBridgeModule.h" +#endif + + +@interface PdfManager : NSObject + ++ (CGPDFDocumentRef) getPdf:(NSUInteger) index; + +@end diff --git a/Frameworks/react-native-pdf.xcframework/ios-arm64/Headers/PdfUtility.h b/Frameworks/react-native-pdf.xcframework/ios-arm64/Headers/PdfUtility.h new file mode 100644 index 0000000..9dc2d58 --- /dev/null +++ b/Frameworks/react-native-pdf.xcframework/ios-arm64/Headers/PdfUtility.h @@ -0,0 +1,21 @@ +// +// PdfUtility.h +// RCTPdf +// +// Created by iPad Developer on 19.09.19. +// Copyright © 2019 wonday.org. All rights reserved. +// + +#ifndef PdfUtility_h +#define PdfUtility_h + +#import +#import + +@interface PdfUtility : NSObject { + NSOperationQueue *pngQueue; +} + +@end + +#endif /* PdfUtility_h */ diff --git a/Frameworks/react-native-pdf.xcframework/ios-arm64/Headers/RCTGraphBoxView.h b/Frameworks/react-native-pdf.xcframework/ios-arm64/Headers/RCTGraphBoxView.h new file mode 100644 index 0000000..df3ba88 --- /dev/null +++ b/Frameworks/react-native-pdf.xcframework/ios-arm64/Headers/RCTGraphBoxView.h @@ -0,0 +1,33 @@ +/** + * Copyright (c) 2017-present, Wonday (@wonday.org) + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#ifndef RCTGraphBoxView_h +#define RCTGraphBoxView_h + +#if __has_include() +#import +#import +#else +#import "RCTEventDispatcher.h" +#import "UIView+React.h" +#endif + +@class RCTEventDispatcher; + +@interface RCTGraphBoxView : UIImageView + +@property(nonatomic, strong) NSDictionary *coordinates; +@property(nonatomic, strong) NSString *path; +@property(nonatomic) int pageId; +@property(nonatomic) int artId; + +@property(nonatomic, copy) RCTBubblingEventBlock onBoxDrawn; + +@end + +#endif /* RCTGraphBoxView_h */ diff --git a/Frameworks/react-native-pdf.xcframework/ios-arm64/Headers/RCTGraphBoxViewManager.h b/Frameworks/react-native-pdf.xcframework/ios-arm64/Headers/RCTGraphBoxViewManager.h new file mode 100644 index 0000000..bd7c89a --- /dev/null +++ b/Frameworks/react-native-pdf.xcframework/ios-arm64/Headers/RCTGraphBoxViewManager.h @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2017-present, Wonday (@wonday.org) + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#if __has_include() +#import +#else +#import "RCTViewManager.h" +#endif + + +@interface RCTGraphBoxViewManager : RCTViewManager + +@end diff --git a/Frameworks/react-native-pdf.xcframework/ios-arm64/Headers/RCTPdfBoxView.h b/Frameworks/react-native-pdf.xcframework/ios-arm64/Headers/RCTPdfBoxView.h new file mode 100644 index 0000000..3da29db --- /dev/null +++ b/Frameworks/react-native-pdf.xcframework/ios-arm64/Headers/RCTPdfBoxView.h @@ -0,0 +1,41 @@ +/** + * Copyright (c) 2017-present, Wonday (@wonday.org) + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#ifndef RCTPdfBoxView_h +#define RCTPdfBoxView_h + +#if __has_include() +#import +#import +#else +#import "RCTEventDispatcher.h" +#import "UIView+React.h" +#endif + + +@class RCTEventDispatcher; + +@interface RCTPdfBoxView : UIImageView + +@property(nonatomic, strong) NSDictionary *coordinates; +@property(nonatomic, strong) NSDictionary *offset; +@property(nonatomic, strong) NSString *path; +@property(nonatomic) int pageId; +@property(nonatomic) int artId; +@property(nonatomic, strong) NSDictionary *pageSize; +@property(nonatomic) float scale; +@property(nonatomic) BOOL visible; + +@property(nonatomic, copy) RCTBubblingEventBlock onPdfError; +@property(nonatomic, copy) RCTBubblingEventBlock onBoxDrawn; +- (CGRect) getCoordinatesRect; +- (UIImage *) cropImageAtScale:(float)scale; + +@end + +#endif /* RCTPdfView_h */ diff --git a/Frameworks/react-native-pdf.xcframework/ios-arm64/Headers/RCTPdfBoxViewManager.h b/Frameworks/react-native-pdf.xcframework/ios-arm64/Headers/RCTPdfBoxViewManager.h new file mode 100644 index 0000000..7264168 --- /dev/null +++ b/Frameworks/react-native-pdf.xcframework/ios-arm64/Headers/RCTPdfBoxViewManager.h @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2017-present, Wonday (@wonday.org) + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#if __has_include() +#import +#else +#import "RCTViewManager.h" +#endif + + +@interface RCTPdfBoxViewManager : RCTViewManager + +@end diff --git a/Frameworks/react-native-pdf.xcframework/ios-arm64/Headers/RCTPdfPageView.h b/Frameworks/react-native-pdf.xcframework/ios-arm64/Headers/RCTPdfPageView.h new file mode 100644 index 0000000..09ff05b --- /dev/null +++ b/Frameworks/react-native-pdf.xcframework/ios-arm64/Headers/RCTPdfPageView.h @@ -0,0 +1,21 @@ +/** + * Copyright (c) 2017-present, Wonday (@wonday.org) + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#if __has_include() +#import +#else +#import "UIView+React.h" +#endif + + +@interface RCTPdfPageView : UIView + +@property(nonatomic) int fileNo; +@property(nonatomic) int page; + +@end diff --git a/Frameworks/react-native-pdf.xcframework/ios-arm64/Headers/RCTPdfPageViewManager.h b/Frameworks/react-native-pdf.xcframework/ios-arm64/Headers/RCTPdfPageViewManager.h new file mode 100644 index 0000000..eb27068 --- /dev/null +++ b/Frameworks/react-native-pdf.xcframework/ios-arm64/Headers/RCTPdfPageViewManager.h @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2017-present, Wonday (@wonday.org) + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#if __has_include() +#import +#else +#import "RCTViewManager.h" +#endif + + +@interface RCTPdfPageViewManager : RCTViewManager + +@end diff --git a/Frameworks/react-native-pdf.xcframework/ios-arm64/Headers/RCTPdfView.h b/Frameworks/react-native-pdf.xcframework/ios-arm64/Headers/RCTPdfView.h new file mode 100644 index 0000000..c41195c --- /dev/null +++ b/Frameworks/react-native-pdf.xcframework/ios-arm64/Headers/RCTPdfView.h @@ -0,0 +1,41 @@ +/** + * Copyright (c) 2017-present, Wonday (@wonday.org) + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#ifndef RCTPdfView_h +#define RCTPdfView_h + +#if __has_include() +#import +#import +#else +#import "RCTEventDispatcher.h" +#import "UIView+React.h" +#endif + +@class RCTEventDispatcher; + +@interface RCTPdfView : UIView + +@property(nonatomic, strong) NSString *path; +@property(nonatomic) int page; +@property(nonatomic) float scale; +@property(nonatomic) float offsetX; +@property(nonatomic) float offsetY; +@property(nonatomic) float minScale; +@property(nonatomic) float maxScale; +@property(nonatomic) BOOL isDoubleTruck; + +@property(nonatomic, copy) RCTBubblingEventBlock onPdfLoaded; +@property(nonatomic, copy) RCTBubblingEventBlock onPdfError; +@property(nonatomic, copy) RCTBubblingEventBlock onPdfDrawn; + +- (void)checkBoxes:(NSTimer *)timer; + +@end + +#endif /* RCTPdfView_h */ diff --git a/Frameworks/react-native-pdf.xcframework/ios-arm64/Headers/RCTPdfViewManager.h b/Frameworks/react-native-pdf.xcframework/ios-arm64/Headers/RCTPdfViewManager.h new file mode 100644 index 0000000..ba9e034 --- /dev/null +++ b/Frameworks/react-native-pdf.xcframework/ios-arm64/Headers/RCTPdfViewManager.h @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2017-present, Wonday (@wonday.org) + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#if __has_include() +#import +#else +#import "RCTViewManager.h" +#endif + + +@interface RCTPdfViewManager : RCTViewManager + +@end diff --git a/Frameworks/react-native-pdf.xcframework/ios-arm64/libreact-native-pdf.a b/Frameworks/react-native-pdf.xcframework/ios-arm64/libreact-native-pdf.a new file mode 100644 index 0000000..5caa48d Binary files /dev/null and b/Frameworks/react-native-pdf.xcframework/ios-arm64/libreact-native-pdf.a differ diff --git a/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/FastRCTiledLayer.h b/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/FastRCTiledLayer.h new file mode 100644 index 0000000..b6e6b05 --- /dev/null +++ b/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/FastRCTiledLayer.h @@ -0,0 +1,13 @@ +// +// FastCATiledLayer.h +// NewsMemory +// +// Created by TecnaviaAppsIOSdev on 10/02/14. +// +// + +#import + +@interface FastRCTiledLayer : CATiledLayer + +@end diff --git a/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/PdfManager.h b/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/PdfManager.h new file mode 100644 index 0000000..cb1f297 --- /dev/null +++ b/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/PdfManager.h @@ -0,0 +1,23 @@ +/** + * Copyright (c) 2017-present, Wonday (@wonday.org) + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import +#import + +#if __has_include() +#import +#else +#import "RCTBridgeModule.h" +#endif + + +@interface PdfManager : NSObject + ++ (CGPDFDocumentRef) getPdf:(NSUInteger) index; + +@end diff --git a/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/PdfUtility.h b/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/PdfUtility.h new file mode 100644 index 0000000..9dc2d58 --- /dev/null +++ b/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/PdfUtility.h @@ -0,0 +1,21 @@ +// +// PdfUtility.h +// RCTPdf +// +// Created by iPad Developer on 19.09.19. +// Copyright © 2019 wonday.org. All rights reserved. +// + +#ifndef PdfUtility_h +#define PdfUtility_h + +#import +#import + +@interface PdfUtility : NSObject { + NSOperationQueue *pngQueue; +} + +@end + +#endif /* PdfUtility_h */ diff --git a/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/RCTGraphBoxView.h b/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/RCTGraphBoxView.h new file mode 100644 index 0000000..df3ba88 --- /dev/null +++ b/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/RCTGraphBoxView.h @@ -0,0 +1,33 @@ +/** + * Copyright (c) 2017-present, Wonday (@wonday.org) + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#ifndef RCTGraphBoxView_h +#define RCTGraphBoxView_h + +#if __has_include() +#import +#import +#else +#import "RCTEventDispatcher.h" +#import "UIView+React.h" +#endif + +@class RCTEventDispatcher; + +@interface RCTGraphBoxView : UIImageView + +@property(nonatomic, strong) NSDictionary *coordinates; +@property(nonatomic, strong) NSString *path; +@property(nonatomic) int pageId; +@property(nonatomic) int artId; + +@property(nonatomic, copy) RCTBubblingEventBlock onBoxDrawn; + +@end + +#endif /* RCTGraphBoxView_h */ diff --git a/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/RCTGraphBoxViewManager.h b/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/RCTGraphBoxViewManager.h new file mode 100644 index 0000000..bd7c89a --- /dev/null +++ b/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/RCTGraphBoxViewManager.h @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2017-present, Wonday (@wonday.org) + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#if __has_include() +#import +#else +#import "RCTViewManager.h" +#endif + + +@interface RCTGraphBoxViewManager : RCTViewManager + +@end diff --git a/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/RCTPdfBoxView.h b/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/RCTPdfBoxView.h new file mode 100644 index 0000000..3da29db --- /dev/null +++ b/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/RCTPdfBoxView.h @@ -0,0 +1,41 @@ +/** + * Copyright (c) 2017-present, Wonday (@wonday.org) + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#ifndef RCTPdfBoxView_h +#define RCTPdfBoxView_h + +#if __has_include() +#import +#import +#else +#import "RCTEventDispatcher.h" +#import "UIView+React.h" +#endif + + +@class RCTEventDispatcher; + +@interface RCTPdfBoxView : UIImageView + +@property(nonatomic, strong) NSDictionary *coordinates; +@property(nonatomic, strong) NSDictionary *offset; +@property(nonatomic, strong) NSString *path; +@property(nonatomic) int pageId; +@property(nonatomic) int artId; +@property(nonatomic, strong) NSDictionary *pageSize; +@property(nonatomic) float scale; +@property(nonatomic) BOOL visible; + +@property(nonatomic, copy) RCTBubblingEventBlock onPdfError; +@property(nonatomic, copy) RCTBubblingEventBlock onBoxDrawn; +- (CGRect) getCoordinatesRect; +- (UIImage *) cropImageAtScale:(float)scale; + +@end + +#endif /* RCTPdfView_h */ diff --git a/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/RCTPdfBoxViewManager.h b/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/RCTPdfBoxViewManager.h new file mode 100644 index 0000000..7264168 --- /dev/null +++ b/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/RCTPdfBoxViewManager.h @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2017-present, Wonday (@wonday.org) + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#if __has_include() +#import +#else +#import "RCTViewManager.h" +#endif + + +@interface RCTPdfBoxViewManager : RCTViewManager + +@end diff --git a/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/RCTPdfPageView.h b/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/RCTPdfPageView.h new file mode 100644 index 0000000..09ff05b --- /dev/null +++ b/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/RCTPdfPageView.h @@ -0,0 +1,21 @@ +/** + * Copyright (c) 2017-present, Wonday (@wonday.org) + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#if __has_include() +#import +#else +#import "UIView+React.h" +#endif + + +@interface RCTPdfPageView : UIView + +@property(nonatomic) int fileNo; +@property(nonatomic) int page; + +@end diff --git a/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/RCTPdfPageViewManager.h b/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/RCTPdfPageViewManager.h new file mode 100644 index 0000000..eb27068 --- /dev/null +++ b/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/RCTPdfPageViewManager.h @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2017-present, Wonday (@wonday.org) + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#if __has_include() +#import +#else +#import "RCTViewManager.h" +#endif + + +@interface RCTPdfPageViewManager : RCTViewManager + +@end diff --git a/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/RCTPdfView.h b/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/RCTPdfView.h new file mode 100644 index 0000000..c41195c --- /dev/null +++ b/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/RCTPdfView.h @@ -0,0 +1,41 @@ +/** + * Copyright (c) 2017-present, Wonday (@wonday.org) + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#ifndef RCTPdfView_h +#define RCTPdfView_h + +#if __has_include() +#import +#import +#else +#import "RCTEventDispatcher.h" +#import "UIView+React.h" +#endif + +@class RCTEventDispatcher; + +@interface RCTPdfView : UIView + +@property(nonatomic, strong) NSString *path; +@property(nonatomic) int page; +@property(nonatomic) float scale; +@property(nonatomic) float offsetX; +@property(nonatomic) float offsetY; +@property(nonatomic) float minScale; +@property(nonatomic) float maxScale; +@property(nonatomic) BOOL isDoubleTruck; + +@property(nonatomic, copy) RCTBubblingEventBlock onPdfLoaded; +@property(nonatomic, copy) RCTBubblingEventBlock onPdfError; +@property(nonatomic, copy) RCTBubblingEventBlock onPdfDrawn; + +- (void)checkBoxes:(NSTimer *)timer; + +@end + +#endif /* RCTPdfView_h */ diff --git a/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/RCTPdfViewManager.h b/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/RCTPdfViewManager.h new file mode 100644 index 0000000..ba9e034 --- /dev/null +++ b/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/Headers/RCTPdfViewManager.h @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2017-present, Wonday (@wonday.org) + * All rights reserved. + * + * This source code is licensed under the MIT-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +#if __has_include() +#import +#else +#import "RCTViewManager.h" +#endif + + +@interface RCTPdfViewManager : RCTViewManager + +@end diff --git a/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/libreact-native-pdf.a b/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/libreact-native-pdf.a new file mode 100644 index 0000000..9a4995e Binary files /dev/null and b/Frameworks/react-native-pdf.xcframework/ios-arm64_x86_64-simulator/libreact-native-pdf.a differ diff --git a/Frameworks/react-native-photo-view-ex.xcframework/Info.plist b/Frameworks/react-native-photo-view-ex.xcframework/Info.plist new file mode 100644 index 0000000..1183925 --- /dev/null +++ b/Frameworks/react-native-photo-view-ex.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libreact-native-photo-view-ex.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libreact-native-photo-view-ex.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + libreact-native-photo-view-ex.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libreact-native-photo-view-ex.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/react-native-photo-view-ex.xcframework/ios-arm64/Headers/MWTapDetectingImageView.h b/Frameworks/react-native-photo-view-ex.xcframework/ios-arm64/Headers/MWTapDetectingImageView.h new file mode 100644 index 0000000..e6d0e73 --- /dev/null +++ b/Frameworks/react-native-photo-view-ex.xcframework/ios-arm64/Headers/MWTapDetectingImageView.h @@ -0,0 +1,28 @@ +// +// UIImageViewTap.h +// Momento +// +// Created by Michael Waterfall on 04/11/2009. +// Copyright 2009 d3i. All rights reserved. +// + +#import +#import + +@protocol MWTapDetectingImageViewDelegate; + +@interface MWTapDetectingImageView : UIImageView {} + +@property (nonatomic, weak) id tapDelegate; + +@end + +@protocol MWTapDetectingImageViewDelegate + +@optional + +- (void)imageView:(UIImageView *)imageView singleTapDetected:(UITouch *)touch; +- (void)imageView:(UIImageView *)imageView doubleTapDetected:(UITouch *)touch; +- (void)imageView:(UIImageView *)imageView tripleTapDetected:(UITouch *)touch; + +@end diff --git a/Frameworks/react-native-photo-view-ex.xcframework/ios-arm64/Headers/MWTapDetectingView.h b/Frameworks/react-native-photo-view-ex.xcframework/ios-arm64/Headers/MWTapDetectingView.h new file mode 100644 index 0000000..f727515 --- /dev/null +++ b/Frameworks/react-native-photo-view-ex.xcframework/ios-arm64/Headers/MWTapDetectingView.h @@ -0,0 +1,28 @@ +// +// UIViewTap.h +// Momento +// +// Created by Michael Waterfall on 04/11/2009. +// Copyright 2009 d3i. All rights reserved. +// + +#import +#import + +@protocol MWTapDetectingViewDelegate; + +@interface MWTapDetectingView : UIView {} + +@property (nonatomic, weak) id tapDelegate; + +@end + +@protocol MWTapDetectingViewDelegate + +@optional + +- (void)view:(UIView *)view singleTapDetected:(UITouch *)touch; +- (void)view:(UIView *)view doubleTapDetected:(UITouch *)touch; +- (void)view:(UIView *)view tripleTapDetected:(UITouch *)touch; + +@end diff --git a/Frameworks/react-native-photo-view-ex.xcframework/ios-arm64/Headers/RNPhotoView.h b/Frameworks/react-native-photo-view-ex.xcframework/ios-arm64/Headers/RNPhotoView.h new file mode 100644 index 0000000..1f21146 --- /dev/null +++ b/Frameworks/react-native-photo-view-ex.xcframework/ios-arm64/Headers/RNPhotoView.h @@ -0,0 +1,32 @@ +#import +#import +#import "MWTapDetectingImageView.h" +#import "MWTapDetectingView.h" + +@class RCTBridge; + +@interface RNPhotoView : UIScrollView + +#pragma mark - Data + +@property (nonatomic, strong) NSDictionary *source; +@property (nonatomic, strong) NSDictionary *src; +@property (nonatomic, strong) NSString *loadingIndicatorSrc; +@property (nonatomic, assign) NSInteger scale; +@property (nonatomic, assign) CGFloat minZoomScale; +@property (nonatomic, assign) CGFloat maxZoomScale; + +#pragma mark - Block + +@property (nonatomic, copy) RCTDirectEventBlock onPhotoViewerError; +@property (nonatomic, copy) RCTDirectEventBlock onPhotoViewerScale; +@property (nonatomic, copy) RCTBubblingEventBlock onPhotoViewerViewTap; +@property (nonatomic, copy) RCTBubblingEventBlock onPhotoViewerTap; +@property (nonatomic, copy) RCTDirectEventBlock onPhotoViewerLoadStart; +@property (nonatomic, copy) RCTDirectEventBlock onPhotoViewerLoad; +@property (nonatomic, copy) RCTDirectEventBlock onPhotoViewerLoadEnd; +@property (nonatomic, copy) RCTDirectEventBlock onPhotoViewerProgress; + +- (instancetype)initWithBridge:(RCTBridge *)bridge; + +@end diff --git a/Frameworks/react-native-photo-view-ex.xcframework/ios-arm64/Headers/RNPhotoViewManager.h b/Frameworks/react-native-photo-view-ex.xcframework/ios-arm64/Headers/RNPhotoViewManager.h new file mode 100644 index 0000000..756b3e1 --- /dev/null +++ b/Frameworks/react-native-photo-view-ex.xcframework/ios-arm64/Headers/RNPhotoViewManager.h @@ -0,0 +1,5 @@ +#import + +@interface RNPhotoViewManager : RCTViewManager + +@end diff --git a/Frameworks/react-native-photo-view-ex.xcframework/ios-arm64/libreact-native-photo-view-ex.a b/Frameworks/react-native-photo-view-ex.xcframework/ios-arm64/libreact-native-photo-view-ex.a new file mode 100644 index 0000000..225cce8 Binary files /dev/null and b/Frameworks/react-native-photo-view-ex.xcframework/ios-arm64/libreact-native-photo-view-ex.a differ diff --git a/Frameworks/react-native-photo-view-ex.xcframework/ios-arm64_x86_64-simulator/Headers/MWTapDetectingImageView.h b/Frameworks/react-native-photo-view-ex.xcframework/ios-arm64_x86_64-simulator/Headers/MWTapDetectingImageView.h new file mode 100644 index 0000000..e6d0e73 --- /dev/null +++ b/Frameworks/react-native-photo-view-ex.xcframework/ios-arm64_x86_64-simulator/Headers/MWTapDetectingImageView.h @@ -0,0 +1,28 @@ +// +// UIImageViewTap.h +// Momento +// +// Created by Michael Waterfall on 04/11/2009. +// Copyright 2009 d3i. All rights reserved. +// + +#import +#import + +@protocol MWTapDetectingImageViewDelegate; + +@interface MWTapDetectingImageView : UIImageView {} + +@property (nonatomic, weak) id tapDelegate; + +@end + +@protocol MWTapDetectingImageViewDelegate + +@optional + +- (void)imageView:(UIImageView *)imageView singleTapDetected:(UITouch *)touch; +- (void)imageView:(UIImageView *)imageView doubleTapDetected:(UITouch *)touch; +- (void)imageView:(UIImageView *)imageView tripleTapDetected:(UITouch *)touch; + +@end diff --git a/Frameworks/react-native-photo-view-ex.xcframework/ios-arm64_x86_64-simulator/Headers/MWTapDetectingView.h b/Frameworks/react-native-photo-view-ex.xcframework/ios-arm64_x86_64-simulator/Headers/MWTapDetectingView.h new file mode 100644 index 0000000..f727515 --- /dev/null +++ b/Frameworks/react-native-photo-view-ex.xcframework/ios-arm64_x86_64-simulator/Headers/MWTapDetectingView.h @@ -0,0 +1,28 @@ +// +// UIViewTap.h +// Momento +// +// Created by Michael Waterfall on 04/11/2009. +// Copyright 2009 d3i. All rights reserved. +// + +#import +#import + +@protocol MWTapDetectingViewDelegate; + +@interface MWTapDetectingView : UIView {} + +@property (nonatomic, weak) id tapDelegate; + +@end + +@protocol MWTapDetectingViewDelegate + +@optional + +- (void)view:(UIView *)view singleTapDetected:(UITouch *)touch; +- (void)view:(UIView *)view doubleTapDetected:(UITouch *)touch; +- (void)view:(UIView *)view tripleTapDetected:(UITouch *)touch; + +@end diff --git a/Frameworks/react-native-photo-view-ex.xcframework/ios-arm64_x86_64-simulator/Headers/RNPhotoView.h b/Frameworks/react-native-photo-view-ex.xcframework/ios-arm64_x86_64-simulator/Headers/RNPhotoView.h new file mode 100644 index 0000000..1f21146 --- /dev/null +++ b/Frameworks/react-native-photo-view-ex.xcframework/ios-arm64_x86_64-simulator/Headers/RNPhotoView.h @@ -0,0 +1,32 @@ +#import +#import +#import "MWTapDetectingImageView.h" +#import "MWTapDetectingView.h" + +@class RCTBridge; + +@interface RNPhotoView : UIScrollView + +#pragma mark - Data + +@property (nonatomic, strong) NSDictionary *source; +@property (nonatomic, strong) NSDictionary *src; +@property (nonatomic, strong) NSString *loadingIndicatorSrc; +@property (nonatomic, assign) NSInteger scale; +@property (nonatomic, assign) CGFloat minZoomScale; +@property (nonatomic, assign) CGFloat maxZoomScale; + +#pragma mark - Block + +@property (nonatomic, copy) RCTDirectEventBlock onPhotoViewerError; +@property (nonatomic, copy) RCTDirectEventBlock onPhotoViewerScale; +@property (nonatomic, copy) RCTBubblingEventBlock onPhotoViewerViewTap; +@property (nonatomic, copy) RCTBubblingEventBlock onPhotoViewerTap; +@property (nonatomic, copy) RCTDirectEventBlock onPhotoViewerLoadStart; +@property (nonatomic, copy) RCTDirectEventBlock onPhotoViewerLoad; +@property (nonatomic, copy) RCTDirectEventBlock onPhotoViewerLoadEnd; +@property (nonatomic, copy) RCTDirectEventBlock onPhotoViewerProgress; + +- (instancetype)initWithBridge:(RCTBridge *)bridge; + +@end diff --git a/Frameworks/react-native-photo-view-ex.xcframework/ios-arm64_x86_64-simulator/Headers/RNPhotoViewManager.h b/Frameworks/react-native-photo-view-ex.xcframework/ios-arm64_x86_64-simulator/Headers/RNPhotoViewManager.h new file mode 100644 index 0000000..756b3e1 --- /dev/null +++ b/Frameworks/react-native-photo-view-ex.xcframework/ios-arm64_x86_64-simulator/Headers/RNPhotoViewManager.h @@ -0,0 +1,5 @@ +#import + +@interface RNPhotoViewManager : RCTViewManager + +@end diff --git a/Frameworks/react-native-photo-view-ex.xcframework/ios-arm64_x86_64-simulator/libreact-native-photo-view-ex.a b/Frameworks/react-native-photo-view-ex.xcframework/ios-arm64_x86_64-simulator/libreact-native-photo-view-ex.a new file mode 100644 index 0000000..3474ff0 Binary files /dev/null and b/Frameworks/react-native-photo-view-ex.xcframework/ios-arm64_x86_64-simulator/libreact-native-photo-view-ex.a differ diff --git a/Frameworks/react-native-print.xcframework/Info.plist b/Frameworks/react-native-print.xcframework/Info.plist new file mode 100644 index 0000000..4e4d15c --- /dev/null +++ b/Frameworks/react-native-print.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libreact-native-print.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libreact-native-print.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libreact-native-print.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libreact-native-print.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/react-native-print.xcframework/ios-arm64/Headers/RNPrint.h b/Frameworks/react-native-print.xcframework/ios-arm64/Headers/RNPrint.h new file mode 100644 index 0000000..3e7a09c --- /dev/null +++ b/Frameworks/react-native-print.xcframework/ios-arm64/Headers/RNPrint.h @@ -0,0 +1,14 @@ + +// Created by Christopher on 9/4/15. + +#import +#import +#import + +@interface RNPrint : RCTView +@property UIPrinter *pickedPrinter; +@property NSString *filePath; +@property NSString *htmlString; +@property NSURL *printerURL; +@property (nonatomic, assign) BOOL isLandscape; +@end diff --git a/Frameworks/react-native-print.xcframework/ios-arm64/libreact-native-print.a b/Frameworks/react-native-print.xcframework/ios-arm64/libreact-native-print.a new file mode 100644 index 0000000..c741ada Binary files /dev/null and b/Frameworks/react-native-print.xcframework/ios-arm64/libreact-native-print.a differ diff --git a/Frameworks/react-native-print.xcframework/ios-arm64_x86_64-simulator/Headers/RNPrint.h b/Frameworks/react-native-print.xcframework/ios-arm64_x86_64-simulator/Headers/RNPrint.h new file mode 100644 index 0000000..3e7a09c --- /dev/null +++ b/Frameworks/react-native-print.xcframework/ios-arm64_x86_64-simulator/Headers/RNPrint.h @@ -0,0 +1,14 @@ + +// Created by Christopher on 9/4/15. + +#import +#import +#import + +@interface RNPrint : RCTView +@property UIPrinter *pickedPrinter; +@property NSString *filePath; +@property NSString *htmlString; +@property NSURL *printerURL; +@property (nonatomic, assign) BOOL isLandscape; +@end diff --git a/Frameworks/react-native-print.xcframework/ios-arm64_x86_64-simulator/libreact-native-print.a b/Frameworks/react-native-print.xcframework/ios-arm64_x86_64-simulator/libreact-native-print.a new file mode 100644 index 0000000..e2d1802 Binary files /dev/null and b/Frameworks/react-native-print.xcframework/ios-arm64_x86_64-simulator/libreact-native-print.a differ diff --git a/Frameworks/react-native-safe-area-context.xcframework/Info.plist b/Frameworks/react-native-safe-area-context.xcframework/Info.plist new file mode 100644 index 0000000..ff2d34f --- /dev/null +++ b/Frameworks/react-native-safe-area-context.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libreact-native-safe-area-context.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libreact-native-safe-area-context.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libreact-native-safe-area-context.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libreact-native-safe-area-context.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/react-native-safe-area-context.xcframework/ios-arm64/Headers/RCTView+SafeAreaCompat.h b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64/Headers/RCTView+SafeAreaCompat.h new file mode 100644 index 0000000..b9f3332 --- /dev/null +++ b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64/Headers/RCTView+SafeAreaCompat.h @@ -0,0 +1,16 @@ +#import +#import +#import + +RCT_EXTERN BOOL UIEdgeInsetsEqualToEdgeInsetsWithThreshold(UIEdgeInsets insets1, UIEdgeInsets insets2, CGFloat threshold); + +NS_ASSUME_NONNULL_BEGIN + +@interface UIView(SafeAreaCompat) + +- (BOOL)nativeSafeAreaSupport; +- (UIEdgeInsets)safeAreaInsetsOrEmulate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-safe-area-context.xcframework/ios-arm64/Headers/RNCSafeAreaProvider.h b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64/Headers/RNCSafeAreaProvider.h new file mode 100644 index 0000000..f31adb7 --- /dev/null +++ b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64/Headers/RNCSafeAreaProvider.h @@ -0,0 +1,13 @@ +#import + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RNCSafeAreaProvider : RCTView + +@property (nonatomic, copy) RCTBubblingEventBlock onInsetsChange; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-safe-area-context.xcframework/ios-arm64/Headers/RNCSafeAreaProviderManager.h b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64/Headers/RNCSafeAreaProviderManager.h new file mode 100644 index 0000000..d83c327 --- /dev/null +++ b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64/Headers/RNCSafeAreaProviderManager.h @@ -0,0 +1,9 @@ +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RNCSafeAreaProviderManager : RCTViewManager + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-safe-area-context.xcframework/ios-arm64/Headers/RNCSafeAreaShadowView.h b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64/Headers/RNCSafeAreaShadowView.h new file mode 100644 index 0000000..a3474cd --- /dev/null +++ b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64/Headers/RNCSafeAreaShadowView.h @@ -0,0 +1,9 @@ +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RNCSafeAreaShadowView : RCTShadowView + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-safe-area-context.xcframework/ios-arm64/Headers/RNCSafeAreaView.h b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64/Headers/RNCSafeAreaView.h new file mode 100644 index 0000000..d7d5320 --- /dev/null +++ b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64/Headers/RNCSafeAreaView.h @@ -0,0 +1,21 @@ +#import +#import +#import + +#import "RNCSafeAreaViewMode.h" +#import "RNCSafeAreaViewEdges.h" + +NS_ASSUME_NONNULL_BEGIN + +@class RNCSafeAreaView; + +@interface RNCSafeAreaView: RCTView + +- (instancetype)initWithBridge:(RCTBridge *)bridge; + +@property (nonatomic, assign) RNCSafeAreaViewMode mode; +@property (nonatomic, assign) RNCSafeAreaViewEdges edges; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-safe-area-context.xcframework/ios-arm64/Headers/RNCSafeAreaViewEdges.h b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64/Headers/RNCSafeAreaViewEdges.h new file mode 100644 index 0000000..e0ec095 --- /dev/null +++ b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64/Headers/RNCSafeAreaViewEdges.h @@ -0,0 +1,9 @@ +#import + +typedef NS_ENUM(NSInteger, RNCSafeAreaViewEdges) { + RNCSafeAreaViewEdgesTop = 0b1000, + RNCSafeAreaViewEdgesRight = 0b0100, + RNCSafeAreaViewEdgesBottom = 0b0010, + RNCSafeAreaViewEdgesLeft = 0b0001, + RNCSafeAreaViewEdgesAll = 0b1111, +}; diff --git a/Frameworks/react-native-safe-area-context.xcframework/ios-arm64/Headers/RNCSafeAreaViewLocalData.h b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64/Headers/RNCSafeAreaViewLocalData.h new file mode 100644 index 0000000..7945b3d --- /dev/null +++ b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64/Headers/RNCSafeAreaViewLocalData.h @@ -0,0 +1,18 @@ +#import + +#import "RNCSafeAreaViewMode.h" +#import "RNCSafeAreaViewEdges.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RNCSafeAreaViewLocalData : NSObject + +- (instancetype)initWithInsets:(UIEdgeInsets)insets mode:(RNCSafeAreaViewMode)mode edges:(RNCSafeAreaViewEdges)edges; + +@property (atomic, readonly) UIEdgeInsets insets; +@property (atomic, readonly) RNCSafeAreaViewMode mode; +@property (atomic, readonly) RNCSafeAreaViewEdges edges; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-safe-area-context.xcframework/ios-arm64/Headers/RNCSafeAreaViewManager.h b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64/Headers/RNCSafeAreaViewManager.h new file mode 100644 index 0000000..cf92d53 --- /dev/null +++ b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64/Headers/RNCSafeAreaViewManager.h @@ -0,0 +1,9 @@ +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RNCSafeAreaViewManager : RCTViewManager + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-safe-area-context.xcframework/ios-arm64/Headers/RNCSafeAreaViewMode.h b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64/Headers/RNCSafeAreaViewMode.h new file mode 100644 index 0000000..a43f382 --- /dev/null +++ b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64/Headers/RNCSafeAreaViewMode.h @@ -0,0 +1,7 @@ +#import + +typedef NS_ENUM(NSInteger, RNCSafeAreaViewMode) { + RNCSafeAreaViewModePadding, + RNCSafeAreaViewModeMargin, + RNCSafeAreaViewModeBorder, +}; diff --git a/Frameworks/react-native-safe-area-context.xcframework/ios-arm64/libreact-native-safe-area-context.a b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64/libreact-native-safe-area-context.a new file mode 100644 index 0000000..dcc7abb Binary files /dev/null and b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64/libreact-native-safe-area-context.a differ diff --git a/Frameworks/react-native-safe-area-context.xcframework/ios-arm64_x86_64-simulator/Headers/RCTView+SafeAreaCompat.h b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64_x86_64-simulator/Headers/RCTView+SafeAreaCompat.h new file mode 100644 index 0000000..b9f3332 --- /dev/null +++ b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64_x86_64-simulator/Headers/RCTView+SafeAreaCompat.h @@ -0,0 +1,16 @@ +#import +#import +#import + +RCT_EXTERN BOOL UIEdgeInsetsEqualToEdgeInsetsWithThreshold(UIEdgeInsets insets1, UIEdgeInsets insets2, CGFloat threshold); + +NS_ASSUME_NONNULL_BEGIN + +@interface UIView(SafeAreaCompat) + +- (BOOL)nativeSafeAreaSupport; +- (UIEdgeInsets)safeAreaInsetsOrEmulate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-safe-area-context.xcframework/ios-arm64_x86_64-simulator/Headers/RNCSafeAreaProvider.h b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64_x86_64-simulator/Headers/RNCSafeAreaProvider.h new file mode 100644 index 0000000..f31adb7 --- /dev/null +++ b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64_x86_64-simulator/Headers/RNCSafeAreaProvider.h @@ -0,0 +1,13 @@ +#import + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RNCSafeAreaProvider : RCTView + +@property (nonatomic, copy) RCTBubblingEventBlock onInsetsChange; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-safe-area-context.xcframework/ios-arm64_x86_64-simulator/Headers/RNCSafeAreaProviderManager.h b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64_x86_64-simulator/Headers/RNCSafeAreaProviderManager.h new file mode 100644 index 0000000..d83c327 --- /dev/null +++ b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64_x86_64-simulator/Headers/RNCSafeAreaProviderManager.h @@ -0,0 +1,9 @@ +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RNCSafeAreaProviderManager : RCTViewManager + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-safe-area-context.xcframework/ios-arm64_x86_64-simulator/Headers/RNCSafeAreaShadowView.h b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64_x86_64-simulator/Headers/RNCSafeAreaShadowView.h new file mode 100644 index 0000000..a3474cd --- /dev/null +++ b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64_x86_64-simulator/Headers/RNCSafeAreaShadowView.h @@ -0,0 +1,9 @@ +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RNCSafeAreaShadowView : RCTShadowView + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-safe-area-context.xcframework/ios-arm64_x86_64-simulator/Headers/RNCSafeAreaView.h b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64_x86_64-simulator/Headers/RNCSafeAreaView.h new file mode 100644 index 0000000..d7d5320 --- /dev/null +++ b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64_x86_64-simulator/Headers/RNCSafeAreaView.h @@ -0,0 +1,21 @@ +#import +#import +#import + +#import "RNCSafeAreaViewMode.h" +#import "RNCSafeAreaViewEdges.h" + +NS_ASSUME_NONNULL_BEGIN + +@class RNCSafeAreaView; + +@interface RNCSafeAreaView: RCTView + +- (instancetype)initWithBridge:(RCTBridge *)bridge; + +@property (nonatomic, assign) RNCSafeAreaViewMode mode; +@property (nonatomic, assign) RNCSafeAreaViewEdges edges; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-safe-area-context.xcframework/ios-arm64_x86_64-simulator/Headers/RNCSafeAreaViewEdges.h b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64_x86_64-simulator/Headers/RNCSafeAreaViewEdges.h new file mode 100644 index 0000000..e0ec095 --- /dev/null +++ b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64_x86_64-simulator/Headers/RNCSafeAreaViewEdges.h @@ -0,0 +1,9 @@ +#import + +typedef NS_ENUM(NSInteger, RNCSafeAreaViewEdges) { + RNCSafeAreaViewEdgesTop = 0b1000, + RNCSafeAreaViewEdgesRight = 0b0100, + RNCSafeAreaViewEdgesBottom = 0b0010, + RNCSafeAreaViewEdgesLeft = 0b0001, + RNCSafeAreaViewEdgesAll = 0b1111, +}; diff --git a/Frameworks/react-native-safe-area-context.xcframework/ios-arm64_x86_64-simulator/Headers/RNCSafeAreaViewLocalData.h b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64_x86_64-simulator/Headers/RNCSafeAreaViewLocalData.h new file mode 100644 index 0000000..7945b3d --- /dev/null +++ b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64_x86_64-simulator/Headers/RNCSafeAreaViewLocalData.h @@ -0,0 +1,18 @@ +#import + +#import "RNCSafeAreaViewMode.h" +#import "RNCSafeAreaViewEdges.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RNCSafeAreaViewLocalData : NSObject + +- (instancetype)initWithInsets:(UIEdgeInsets)insets mode:(RNCSafeAreaViewMode)mode edges:(RNCSafeAreaViewEdges)edges; + +@property (atomic, readonly) UIEdgeInsets insets; +@property (atomic, readonly) RNCSafeAreaViewMode mode; +@property (atomic, readonly) RNCSafeAreaViewEdges edges; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-safe-area-context.xcframework/ios-arm64_x86_64-simulator/Headers/RNCSafeAreaViewManager.h b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64_x86_64-simulator/Headers/RNCSafeAreaViewManager.h new file mode 100644 index 0000000..cf92d53 --- /dev/null +++ b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64_x86_64-simulator/Headers/RNCSafeAreaViewManager.h @@ -0,0 +1,9 @@ +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RNCSafeAreaViewManager : RCTViewManager + +@end + +NS_ASSUME_NONNULL_END diff --git a/Frameworks/react-native-safe-area-context.xcframework/ios-arm64_x86_64-simulator/Headers/RNCSafeAreaViewMode.h b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64_x86_64-simulator/Headers/RNCSafeAreaViewMode.h new file mode 100644 index 0000000..a43f382 --- /dev/null +++ b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64_x86_64-simulator/Headers/RNCSafeAreaViewMode.h @@ -0,0 +1,7 @@ +#import + +typedef NS_ENUM(NSInteger, RNCSafeAreaViewMode) { + RNCSafeAreaViewModePadding, + RNCSafeAreaViewModeMargin, + RNCSafeAreaViewModeBorder, +}; diff --git a/Frameworks/react-native-safe-area-context.xcframework/ios-arm64_x86_64-simulator/libreact-native-safe-area-context.a b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64_x86_64-simulator/libreact-native-safe-area-context.a new file mode 100644 index 0000000..3498764 Binary files /dev/null and b/Frameworks/react-native-safe-area-context.xcframework/ios-arm64_x86_64-simulator/libreact-native-safe-area-context.a differ diff --git a/Frameworks/react-native-slider.xcframework/Info.plist b/Frameworks/react-native-slider.xcframework/Info.plist new file mode 100644 index 0000000..eb3d4b0 --- /dev/null +++ b/Frameworks/react-native-slider.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libreact-native-slider.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libreact-native-slider.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + libreact-native-slider.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libreact-native-slider.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/react-native-slider.xcframework/ios-arm64/Headers/RNCSlider.h b/Frameworks/react-native-slider.xcframework/ios-arm64/Headers/RNCSlider.h new file mode 100644 index 0000000..165cc16 --- /dev/null +++ b/Frameworks/react-native-slider.xcframework/ios-arm64/Headers/RNCSlider.h @@ -0,0 +1,28 @@ +/** + * 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 + +#import + +@interface RNCSlider : UISlider + +@property (nonatomic, copy) RCTBubblingEventBlock onRNCSliderValueChange; +@property (nonatomic, copy) RCTBubblingEventBlock onRNCSliderSlidingStart; +@property (nonatomic, copy) RCTBubblingEventBlock onRNCSliderSlidingComplete; + +@property (nonatomic, assign) float step; +@property (nonatomic, assign) float lastValue; + +@property (nonatomic, strong) UIImage *trackImage; +@property (nonatomic, strong) UIImage *minimumTrackImage; +@property (nonatomic, strong) UIImage *maximumTrackImage; + +@property (nonatomic, strong) UIImage *thumbImage; + + +@end diff --git a/Frameworks/react-native-slider.xcframework/ios-arm64/Headers/RNCSliderManager.h b/Frameworks/react-native-slider.xcframework/ios-arm64/Headers/RNCSliderManager.h new file mode 100644 index 0000000..b161d85 --- /dev/null +++ b/Frameworks/react-native-slider.xcframework/ios-arm64/Headers/RNCSliderManager.h @@ -0,0 +1,12 @@ +/** + * 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 + +@interface RNCSliderManager : RCTViewManager + +@end diff --git a/Frameworks/react-native-slider.xcframework/ios-arm64/libreact-native-slider.a b/Frameworks/react-native-slider.xcframework/ios-arm64/libreact-native-slider.a new file mode 100644 index 0000000..5ea9f3e Binary files /dev/null and b/Frameworks/react-native-slider.xcframework/ios-arm64/libreact-native-slider.a differ diff --git a/Frameworks/react-native-slider.xcframework/ios-arm64_x86_64-simulator/Headers/RNCSlider.h b/Frameworks/react-native-slider.xcframework/ios-arm64_x86_64-simulator/Headers/RNCSlider.h new file mode 100644 index 0000000..165cc16 --- /dev/null +++ b/Frameworks/react-native-slider.xcframework/ios-arm64_x86_64-simulator/Headers/RNCSlider.h @@ -0,0 +1,28 @@ +/** + * 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 + +#import + +@interface RNCSlider : UISlider + +@property (nonatomic, copy) RCTBubblingEventBlock onRNCSliderValueChange; +@property (nonatomic, copy) RCTBubblingEventBlock onRNCSliderSlidingStart; +@property (nonatomic, copy) RCTBubblingEventBlock onRNCSliderSlidingComplete; + +@property (nonatomic, assign) float step; +@property (nonatomic, assign) float lastValue; + +@property (nonatomic, strong) UIImage *trackImage; +@property (nonatomic, strong) UIImage *minimumTrackImage; +@property (nonatomic, strong) UIImage *maximumTrackImage; + +@property (nonatomic, strong) UIImage *thumbImage; + + +@end diff --git a/Frameworks/react-native-slider.xcframework/ios-arm64_x86_64-simulator/Headers/RNCSliderManager.h b/Frameworks/react-native-slider.xcframework/ios-arm64_x86_64-simulator/Headers/RNCSliderManager.h new file mode 100644 index 0000000..b161d85 --- /dev/null +++ b/Frameworks/react-native-slider.xcframework/ios-arm64_x86_64-simulator/Headers/RNCSliderManager.h @@ -0,0 +1,12 @@ +/** + * 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 + +@interface RNCSliderManager : RCTViewManager + +@end diff --git a/Frameworks/react-native-slider.xcframework/ios-arm64_x86_64-simulator/libreact-native-slider.a b/Frameworks/react-native-slider.xcframework/ios-arm64_x86_64-simulator/libreact-native-slider.a new file mode 100644 index 0000000..1939f28 Binary files /dev/null and b/Frameworks/react-native-slider.xcframework/ios-arm64_x86_64-simulator/libreact-native-slider.a differ diff --git a/Frameworks/react-native-splash-screen.xcframework/Info.plist b/Frameworks/react-native-splash-screen.xcframework/Info.plist new file mode 100644 index 0000000..3a28bc6 --- /dev/null +++ b/Frameworks/react-native-splash-screen.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libreact-native-splash-screen.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libreact-native-splash-screen.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libreact-native-splash-screen.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libreact-native-splash-screen.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/react-native-splash-screen.xcframework/ios-arm64/Headers/RNSplashScreen.h b/Frameworks/react-native-splash-screen.xcframework/ios-arm64/Headers/RNSplashScreen.h new file mode 100644 index 0000000..f1cfbca --- /dev/null +++ b/Frameworks/react-native-splash-screen.xcframework/ios-arm64/Headers/RNSplashScreen.h @@ -0,0 +1,16 @@ +/** + * SplashScreen + * 启动屏 + * from:http://www.devio.org + * Author:CrazyCodeBoy + * GitHub:https://github.com/crazycodeboy + * Email:crazycodeboy@gmail.com + */ +#import +#import + +@interface RNSplashScreen : NSObject ++ (void)showSplashInRootView:(UIView*)rootView; ++ (void)show; ++ (void)hide; +@end diff --git a/Frameworks/react-native-splash-screen.xcframework/ios-arm64/libreact-native-splash-screen.a b/Frameworks/react-native-splash-screen.xcframework/ios-arm64/libreact-native-splash-screen.a new file mode 100644 index 0000000..98e1c74 Binary files /dev/null and b/Frameworks/react-native-splash-screen.xcframework/ios-arm64/libreact-native-splash-screen.a differ diff --git a/Frameworks/react-native-splash-screen.xcframework/ios-arm64_x86_64-simulator/Headers/RNSplashScreen.h b/Frameworks/react-native-splash-screen.xcframework/ios-arm64_x86_64-simulator/Headers/RNSplashScreen.h new file mode 100644 index 0000000..f1cfbca --- /dev/null +++ b/Frameworks/react-native-splash-screen.xcframework/ios-arm64_x86_64-simulator/Headers/RNSplashScreen.h @@ -0,0 +1,16 @@ +/** + * SplashScreen + * 启动屏 + * from:http://www.devio.org + * Author:CrazyCodeBoy + * GitHub:https://github.com/crazycodeboy + * Email:crazycodeboy@gmail.com + */ +#import +#import + +@interface RNSplashScreen : NSObject ++ (void)showSplashInRootView:(UIView*)rootView; ++ (void)show; ++ (void)hide; +@end diff --git a/Frameworks/react-native-splash-screen.xcframework/ios-arm64_x86_64-simulator/libreact-native-splash-screen.a b/Frameworks/react-native-splash-screen.xcframework/ios-arm64_x86_64-simulator/libreact-native-splash-screen.a new file mode 100644 index 0000000..f0ba168 Binary files /dev/null and b/Frameworks/react-native-splash-screen.xcframework/ios-arm64_x86_64-simulator/libreact-native-splash-screen.a differ diff --git a/Frameworks/react-native-sqlite-storage.xcframework/Info.plist b/Frameworks/react-native-sqlite-storage.xcframework/Info.plist new file mode 100644 index 0000000..a60ac47 --- /dev/null +++ b/Frameworks/react-native-sqlite-storage.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libreact-native-sqlite-storage.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libreact-native-sqlite-storage.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libreact-native-sqlite-storage.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libreact-native-sqlite-storage.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/react-native-sqlite-storage.xcframework/ios-arm64/Headers/SQLite.h b/Frameworks/react-native-sqlite-storage.xcframework/ios-arm64/Headers/SQLite.h new file mode 100644 index 0000000..70759ae --- /dev/null +++ b/Frameworks/react-native-sqlite-storage.xcframework/ios-arm64/Headers/SQLite.h @@ -0,0 +1,56 @@ +/* + * SQLite.h + * + * Created by Andrzej Porebski on 10/29/15. + * Copyright (c) 2015 Andrzej Porebski. + * + * This software is largely based on the SQLLite Storage Cordova Plugin created by Chris Brody & Davide Bertola. + * The implementation was adopted and converted to use React Native bindings. + * + * See https://github.com/litehelpers/Cordova-sqlite-storage + * + * This library is available under the terms of the MIT License (2008). + * See http://opensource.org/licenses/alphabetical for full text. + */ + +#import + +// Used to remove dependency on sqlite3.h in this header: +struct sqlite3; + +enum WebSQLError { + UNKNOWN_ERR = 0, + DATABASE_ERR = 1, + VERSION_ERR = 2, + TOO_LARGE_ERR = 3, + QUOTA_ERR = 4, + SYNTAX_ERR = 5, + CONSTRAINT_ERR = 6, + TIMEOUT_ERR = 7 +}; +typedef int WebSQLError; + +@interface SQLite : NSObject { + NSMutableDictionary *openDBs; +} + +@property (nonatomic, copy) NSMutableDictionary *openDBs; +@property (nonatomic, copy) NSMutableDictionary *appDBPaths; + +// Open / Close +-(void) open: (NSDictionary *) options success:(RCTResponseSenderBlock)success error:(RCTResponseSenderBlock)error; +-(void) close: (NSDictionary *) options success:(RCTResponseSenderBlock)success error:(RCTResponseSenderBlock)error; +-(void) attach: (NSDictionary *) options success:(RCTResponseSenderBlock)success error:(RCTResponseSenderBlock)error; +-(void) delete: (NSDictionary *) options success:(RCTResponseSenderBlock)success error:(RCTResponseSenderBlock)error; + +// Batch processing interface +-(void) backgroundExecuteSqlBatch: (NSDictionary *) options success:(RCTResponseSenderBlock)success error:(RCTResponseSenderBlock)error; +-(void) executeSqlBatch: (NSDictionary *) options success:(RCTResponseSenderBlock)success error:(RCTResponseSenderBlock)error; + +// Single requests interface +-(void) backgroundExecuteSql:(NSDictionary *) options success:(RCTResponseSenderBlock)success error:(RCTResponseSenderBlock)error; +-(void) executeSql:(NSDictionary *) options success:(RCTResponseSenderBlock)success error:(RCTResponseSenderBlock)error; + +// Echo Test +-(void) echoStringValue:(NSDictionary *) options success:(RCTResponseSenderBlock)success error:(RCTResponseSenderBlock)error; +@end diff --git a/Frameworks/react-native-sqlite-storage.xcframework/ios-arm64/Headers/SQLiteResult.h b/Frameworks/react-native-sqlite-storage.xcframework/ios-arm64/Headers/SQLiteResult.h new file mode 100644 index 0000000..6319376 --- /dev/null +++ b/Frameworks/react-native-sqlite-storage.xcframework/ios-arm64/Headers/SQLiteResult.h @@ -0,0 +1,32 @@ +/* + * SQLiteResult.h + * + * Created by Andrzej Porebski on 10/29/15. + * Copyright (c) 2015 Andrzej Porebski. + * + * This software is largely based on the SQLLite Storage Cordova Plugin created by Chris Brody & Davide Bertola. + * The implementation was adopted and converted to use React Native bindings. + * + * See https://github.com/litehelpers/Cordova-sqlite-storage + * + * This library is available under the terms of the MIT License (2008). + * See http://opensource.org/licenses/alphabetical for full text. + */ + +typedef enum { + SQLiteStatus_NO_RESULT = 0, + SQLiteStatus_OK, + SQLiteStatus_ERROR +} SQLiteStatus; + + +@interface SQLiteResult : NSObject {} + +@property (nonatomic, strong, readonly) NSNumber* status; +@property (nonatomic, strong, readonly) id message; + ++ (SQLiteResult*)resultWithStatus:(SQLiteStatus)statusOrdinal messageAsString:(NSString*)theMessage; ++ (SQLiteResult*)resultWithStatus:(SQLiteStatus)statusOrdinal messageAsArray:(NSArray*)theMessage; ++ (SQLiteResult*)resultWithStatus:(SQLiteStatus)statusOrdinal messageAsDictionary:(NSDictionary*)theMessage; + +@end \ No newline at end of file diff --git a/Frameworks/react-native-sqlite-storage.xcframework/ios-arm64/libreact-native-sqlite-storage.a b/Frameworks/react-native-sqlite-storage.xcframework/ios-arm64/libreact-native-sqlite-storage.a new file mode 100644 index 0000000..5d97a9e Binary files /dev/null and b/Frameworks/react-native-sqlite-storage.xcframework/ios-arm64/libreact-native-sqlite-storage.a differ diff --git a/Frameworks/react-native-sqlite-storage.xcframework/ios-arm64_x86_64-simulator/Headers/SQLite.h b/Frameworks/react-native-sqlite-storage.xcframework/ios-arm64_x86_64-simulator/Headers/SQLite.h new file mode 100644 index 0000000..70759ae --- /dev/null +++ b/Frameworks/react-native-sqlite-storage.xcframework/ios-arm64_x86_64-simulator/Headers/SQLite.h @@ -0,0 +1,56 @@ +/* + * SQLite.h + * + * Created by Andrzej Porebski on 10/29/15. + * Copyright (c) 2015 Andrzej Porebski. + * + * This software is largely based on the SQLLite Storage Cordova Plugin created by Chris Brody & Davide Bertola. + * The implementation was adopted and converted to use React Native bindings. + * + * See https://github.com/litehelpers/Cordova-sqlite-storage + * + * This library is available under the terms of the MIT License (2008). + * See http://opensource.org/licenses/alphabetical for full text. + */ + +#import + +// Used to remove dependency on sqlite3.h in this header: +struct sqlite3; + +enum WebSQLError { + UNKNOWN_ERR = 0, + DATABASE_ERR = 1, + VERSION_ERR = 2, + TOO_LARGE_ERR = 3, + QUOTA_ERR = 4, + SYNTAX_ERR = 5, + CONSTRAINT_ERR = 6, + TIMEOUT_ERR = 7 +}; +typedef int WebSQLError; + +@interface SQLite : NSObject { + NSMutableDictionary *openDBs; +} + +@property (nonatomic, copy) NSMutableDictionary *openDBs; +@property (nonatomic, copy) NSMutableDictionary *appDBPaths; + +// Open / Close +-(void) open: (NSDictionary *) options success:(RCTResponseSenderBlock)success error:(RCTResponseSenderBlock)error; +-(void) close: (NSDictionary *) options success:(RCTResponseSenderBlock)success error:(RCTResponseSenderBlock)error; +-(void) attach: (NSDictionary *) options success:(RCTResponseSenderBlock)success error:(RCTResponseSenderBlock)error; +-(void) delete: (NSDictionary *) options success:(RCTResponseSenderBlock)success error:(RCTResponseSenderBlock)error; + +// Batch processing interface +-(void) backgroundExecuteSqlBatch: (NSDictionary *) options success:(RCTResponseSenderBlock)success error:(RCTResponseSenderBlock)error; +-(void) executeSqlBatch: (NSDictionary *) options success:(RCTResponseSenderBlock)success error:(RCTResponseSenderBlock)error; + +// Single requests interface +-(void) backgroundExecuteSql:(NSDictionary *) options success:(RCTResponseSenderBlock)success error:(RCTResponseSenderBlock)error; +-(void) executeSql:(NSDictionary *) options success:(RCTResponseSenderBlock)success error:(RCTResponseSenderBlock)error; + +// Echo Test +-(void) echoStringValue:(NSDictionary *) options success:(RCTResponseSenderBlock)success error:(RCTResponseSenderBlock)error; +@end diff --git a/Frameworks/react-native-sqlite-storage.xcframework/ios-arm64_x86_64-simulator/Headers/SQLiteResult.h b/Frameworks/react-native-sqlite-storage.xcframework/ios-arm64_x86_64-simulator/Headers/SQLiteResult.h new file mode 100644 index 0000000..6319376 --- /dev/null +++ b/Frameworks/react-native-sqlite-storage.xcframework/ios-arm64_x86_64-simulator/Headers/SQLiteResult.h @@ -0,0 +1,32 @@ +/* + * SQLiteResult.h + * + * Created by Andrzej Porebski on 10/29/15. + * Copyright (c) 2015 Andrzej Porebski. + * + * This software is largely based on the SQLLite Storage Cordova Plugin created by Chris Brody & Davide Bertola. + * The implementation was adopted and converted to use React Native bindings. + * + * See https://github.com/litehelpers/Cordova-sqlite-storage + * + * This library is available under the terms of the MIT License (2008). + * See http://opensource.org/licenses/alphabetical for full text. + */ + +typedef enum { + SQLiteStatus_NO_RESULT = 0, + SQLiteStatus_OK, + SQLiteStatus_ERROR +} SQLiteStatus; + + +@interface SQLiteResult : NSObject {} + +@property (nonatomic, strong, readonly) NSNumber* status; +@property (nonatomic, strong, readonly) id message; + ++ (SQLiteResult*)resultWithStatus:(SQLiteStatus)statusOrdinal messageAsString:(NSString*)theMessage; ++ (SQLiteResult*)resultWithStatus:(SQLiteStatus)statusOrdinal messageAsArray:(NSArray*)theMessage; ++ (SQLiteResult*)resultWithStatus:(SQLiteStatus)statusOrdinal messageAsDictionary:(NSDictionary*)theMessage; + +@end \ No newline at end of file diff --git a/Frameworks/react-native-sqlite-storage.xcframework/ios-arm64_x86_64-simulator/libreact-native-sqlite-storage.a b/Frameworks/react-native-sqlite-storage.xcframework/ios-arm64_x86_64-simulator/libreact-native-sqlite-storage.a new file mode 100644 index 0000000..e0cc96d Binary files /dev/null and b/Frameworks/react-native-sqlite-storage.xcframework/ios-arm64_x86_64-simulator/libreact-native-sqlite-storage.a differ diff --git a/Frameworks/react-native-uuid-generator.xcframework/Info.plist b/Frameworks/react-native-uuid-generator.xcframework/Info.plist new file mode 100644 index 0000000..60f65b2 --- /dev/null +++ b/Frameworks/react-native-uuid-generator.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libreact-native-uuid-generator.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libreact-native-uuid-generator.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libreact-native-uuid-generator.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libreact-native-uuid-generator.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/react-native-uuid-generator.xcframework/ios-arm64/Headers/RNUUIDGenerator.h b/Frameworks/react-native-uuid-generator.xcframework/ios-arm64/Headers/RNUUIDGenerator.h new file mode 100644 index 0000000..3062599 --- /dev/null +++ b/Frameworks/react-native-uuid-generator.xcframework/ios-arm64/Headers/RNUUIDGenerator.h @@ -0,0 +1,6 @@ +#import + +@interface RNUUIDGenerator : NSObject + +@end + diff --git a/Frameworks/react-native-uuid-generator.xcframework/ios-arm64/libreact-native-uuid-generator.a b/Frameworks/react-native-uuid-generator.xcframework/ios-arm64/libreact-native-uuid-generator.a new file mode 100644 index 0000000..92571cf Binary files /dev/null and b/Frameworks/react-native-uuid-generator.xcframework/ios-arm64/libreact-native-uuid-generator.a differ diff --git a/Frameworks/react-native-uuid-generator.xcframework/ios-arm64_x86_64-simulator/Headers/RNUUIDGenerator.h b/Frameworks/react-native-uuid-generator.xcframework/ios-arm64_x86_64-simulator/Headers/RNUUIDGenerator.h new file mode 100644 index 0000000..3062599 --- /dev/null +++ b/Frameworks/react-native-uuid-generator.xcframework/ios-arm64_x86_64-simulator/Headers/RNUUIDGenerator.h @@ -0,0 +1,6 @@ +#import + +@interface RNUUIDGenerator : NSObject + +@end + diff --git a/Frameworks/react-native-uuid-generator.xcframework/ios-arm64_x86_64-simulator/libreact-native-uuid-generator.a b/Frameworks/react-native-uuid-generator.xcframework/ios-arm64_x86_64-simulator/libreact-native-uuid-generator.a new file mode 100644 index 0000000..d8ea1a3 Binary files /dev/null and b/Frameworks/react-native-uuid-generator.xcframework/ios-arm64_x86_64-simulator/libreact-native-uuid-generator.a differ diff --git a/Frameworks/react-native-video.xcframework/Info.plist b/Frameworks/react-native-video.xcframework/Info.plist new file mode 100644 index 0000000..b1b7829 --- /dev/null +++ b/Frameworks/react-native-video.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libreact-native-video.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libreact-native-video.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libreact-native-video.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libreact-native-video.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/react-native-video.xcframework/ios-arm64/Headers/RCTVideo.h b/Frameworks/react-native-video.xcframework/ios-arm64/Headers/RCTVideo.h new file mode 100644 index 0000000..6fee299 --- /dev/null +++ b/Frameworks/react-native-video.xcframework/ios-arm64/Headers/RCTVideo.h @@ -0,0 +1,67 @@ +#import +#import "AVKit/AVKit.h" +#import "UIView+FindUIViewController.h" +#import "RCTVideoPlayerViewController.h" +#import "RCTVideoPlayerViewControllerDelegate.h" +#import +#import + +#if __has_include() +#import +#import +#import +#endif + +@class RCTEventDispatcher; +#if __has_include() +@interface RCTVideo : UIView +#elif TARGET_OS_TV +@interface RCTVideo : UIView +#else +@interface RCTVideo : UIView +#endif + +@property (nonatomic, copy) RCTDirectEventBlock onVideoLoadStart; +@property (nonatomic, copy) RCTDirectEventBlock onVideoLoad; +@property (nonatomic, copy) RCTDirectEventBlock onVideoBuffer; +@property (nonatomic, copy) RCTDirectEventBlock onVideoError; +@property (nonatomic, copy) RCTDirectEventBlock onVideoProgress; +@property (nonatomic, copy) RCTDirectEventBlock onBandwidthUpdate; +@property (nonatomic, copy) RCTDirectEventBlock onVideoSeek; +@property (nonatomic, copy) RCTDirectEventBlock onVideoEnd; +@property (nonatomic, copy) RCTDirectEventBlock onTimedMetadata; +@property (nonatomic, copy) RCTDirectEventBlock onVideoAudioBecomingNoisy; +@property (nonatomic, copy) RCTDirectEventBlock onVideoFullscreenPlayerWillPresent; +@property (nonatomic, copy) RCTDirectEventBlock onVideoFullscreenPlayerDidPresent; +@property (nonatomic, copy) RCTDirectEventBlock onVideoFullscreenPlayerWillDismiss; +@property (nonatomic, copy) RCTDirectEventBlock onVideoFullscreenPlayerDidDismiss; +@property (nonatomic, copy) RCTDirectEventBlock onReadyForDisplay; +@property (nonatomic, copy) RCTDirectEventBlock onPlaybackStalled; +@property (nonatomic, copy) RCTDirectEventBlock onPlaybackResume; +@property (nonatomic, copy) RCTDirectEventBlock onPlaybackRateChange; +@property (nonatomic, copy) RCTDirectEventBlock onVideoExternalPlaybackChange; +@property (nonatomic, copy) RCTDirectEventBlock onPictureInPictureStatusChanged; +@property (nonatomic, copy) RCTDirectEventBlock onRestoreUserInterfaceForPictureInPictureStop; +@property (nonatomic, copy) RCTDirectEventBlock onGetLicense; + +typedef NS_ENUM(NSInteger, RCTVideoError) { + RCTVideoErrorFromJSPart, + RCTVideoErrorLicenseRequestNotOk, + RCTVideoErrorNoDataFromLicenseRequest, + RCTVideoErrorNoSPC, + RCTVideoErrorNoDataRequest, + RCTVideoErrorNoCertificateData, + RCTVideoErrorNoCertificateURL, + RCTVideoErrorNoFairplayDRM, + RCTVideoErrorNoDRMData +}; + +- (instancetype)initWithEventDispatcher:(RCTEventDispatcher *)eventDispatcher NS_DESIGNATED_INITIALIZER; + +- (AVPlayerViewController*)createPlayerViewController:(AVPlayer*)player withPlayerItem:(AVPlayerItem*)playerItem; + +- (void)save:(NSDictionary *)options resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject; +- (void)setLicenseResult:(NSString * )license; +- (BOOL)setLicenseResultError:(NSString * )error; + +@end diff --git a/Frameworks/react-native-video.xcframework/ios-arm64/Headers/RCTVideoManager.h b/Frameworks/react-native-video.xcframework/ios-arm64/Headers/RCTVideoManager.h new file mode 100644 index 0000000..b3bfccb --- /dev/null +++ b/Frameworks/react-native-video.xcframework/ios-arm64/Headers/RCTVideoManager.h @@ -0,0 +1,6 @@ +#import +#import + +@interface RCTVideoManager : RCTViewManager + +@end diff --git a/Frameworks/react-native-video.xcframework/ios-arm64/Headers/RCTVideoPlayerViewController.h b/Frameworks/react-native-video.xcframework/ios-arm64/Headers/RCTVideoPlayerViewController.h new file mode 100644 index 0000000..ed9ebdd --- /dev/null +++ b/Frameworks/react-native-video.xcframework/ios-arm64/Headers/RCTVideoPlayerViewController.h @@ -0,0 +1,20 @@ +// +// RCTVideoPlayerViewController.h +// RCTVideo +// +// Created by Stanisław Chmiela on 31.03.2016. +// Copyright © 2016 Facebook. All rights reserved. +// + +#import +#import "RCTVideo.h" +#import "RCTVideoPlayerViewControllerDelegate.h" + +@interface RCTVideoPlayerViewController : AVPlayerViewController +@property (nonatomic, weak) id rctDelegate; + +// Optional paramters +@property (nonatomic, weak) NSString* preferredOrientation; +@property (nonatomic) BOOL autorotate; + +@end diff --git a/Frameworks/react-native-video.xcframework/ios-arm64/Headers/RCTVideoPlayerViewControllerDelegate.h b/Frameworks/react-native-video.xcframework/ios-arm64/Headers/RCTVideoPlayerViewControllerDelegate.h new file mode 100644 index 0000000..e84b3f5 --- /dev/null +++ b/Frameworks/react-native-video.xcframework/ios-arm64/Headers/RCTVideoPlayerViewControllerDelegate.h @@ -0,0 +1,7 @@ +#import +#import "AVKit/AVKit.h" + +@protocol RCTVideoPlayerViewControllerDelegate +- (void)videoPlayerViewControllerWillDismiss:(AVPlayerViewController *)playerViewController; +- (void)videoPlayerViewControllerDidDismiss:(AVPlayerViewController *)playerViewController; +@end diff --git a/Frameworks/react-native-video.xcframework/ios-arm64/Headers/UIView+FindUIViewController.h b/Frameworks/react-native-video.xcframework/ios-arm64/Headers/UIView+FindUIViewController.h new file mode 100644 index 0000000..0921426 --- /dev/null +++ b/Frameworks/react-native-video.xcframework/ios-arm64/Headers/UIView+FindUIViewController.h @@ -0,0 +1,15 @@ +// +// UIView+FindUIViewController.h +// RCTVideo +// +// Created by Stanisław Chmiela on 31.03.2016. +// Copyright © 2016 Facebook. All rights reserved. +// +// Source: http://stackoverflow.com/a/3732812/1123156 + +#import + +@interface UIView (FindUIViewController) +- (UIViewController *) firstAvailableUIViewController; +- (id) traverseResponderChainForUIViewController; +@end diff --git a/Frameworks/react-native-video.xcframework/ios-arm64/libreact-native-video.a b/Frameworks/react-native-video.xcframework/ios-arm64/libreact-native-video.a new file mode 100644 index 0000000..0994fc2 Binary files /dev/null and b/Frameworks/react-native-video.xcframework/ios-arm64/libreact-native-video.a differ diff --git a/Frameworks/react-native-video.xcframework/ios-arm64_x86_64-simulator/Headers/RCTVideo.h b/Frameworks/react-native-video.xcframework/ios-arm64_x86_64-simulator/Headers/RCTVideo.h new file mode 100644 index 0000000..6fee299 --- /dev/null +++ b/Frameworks/react-native-video.xcframework/ios-arm64_x86_64-simulator/Headers/RCTVideo.h @@ -0,0 +1,67 @@ +#import +#import "AVKit/AVKit.h" +#import "UIView+FindUIViewController.h" +#import "RCTVideoPlayerViewController.h" +#import "RCTVideoPlayerViewControllerDelegate.h" +#import +#import + +#if __has_include() +#import +#import +#import +#endif + +@class RCTEventDispatcher; +#if __has_include() +@interface RCTVideo : UIView +#elif TARGET_OS_TV +@interface RCTVideo : UIView +#else +@interface RCTVideo : UIView +#endif + +@property (nonatomic, copy) RCTDirectEventBlock onVideoLoadStart; +@property (nonatomic, copy) RCTDirectEventBlock onVideoLoad; +@property (nonatomic, copy) RCTDirectEventBlock onVideoBuffer; +@property (nonatomic, copy) RCTDirectEventBlock onVideoError; +@property (nonatomic, copy) RCTDirectEventBlock onVideoProgress; +@property (nonatomic, copy) RCTDirectEventBlock onBandwidthUpdate; +@property (nonatomic, copy) RCTDirectEventBlock onVideoSeek; +@property (nonatomic, copy) RCTDirectEventBlock onVideoEnd; +@property (nonatomic, copy) RCTDirectEventBlock onTimedMetadata; +@property (nonatomic, copy) RCTDirectEventBlock onVideoAudioBecomingNoisy; +@property (nonatomic, copy) RCTDirectEventBlock onVideoFullscreenPlayerWillPresent; +@property (nonatomic, copy) RCTDirectEventBlock onVideoFullscreenPlayerDidPresent; +@property (nonatomic, copy) RCTDirectEventBlock onVideoFullscreenPlayerWillDismiss; +@property (nonatomic, copy) RCTDirectEventBlock onVideoFullscreenPlayerDidDismiss; +@property (nonatomic, copy) RCTDirectEventBlock onReadyForDisplay; +@property (nonatomic, copy) RCTDirectEventBlock onPlaybackStalled; +@property (nonatomic, copy) RCTDirectEventBlock onPlaybackResume; +@property (nonatomic, copy) RCTDirectEventBlock onPlaybackRateChange; +@property (nonatomic, copy) RCTDirectEventBlock onVideoExternalPlaybackChange; +@property (nonatomic, copy) RCTDirectEventBlock onPictureInPictureStatusChanged; +@property (nonatomic, copy) RCTDirectEventBlock onRestoreUserInterfaceForPictureInPictureStop; +@property (nonatomic, copy) RCTDirectEventBlock onGetLicense; + +typedef NS_ENUM(NSInteger, RCTVideoError) { + RCTVideoErrorFromJSPart, + RCTVideoErrorLicenseRequestNotOk, + RCTVideoErrorNoDataFromLicenseRequest, + RCTVideoErrorNoSPC, + RCTVideoErrorNoDataRequest, + RCTVideoErrorNoCertificateData, + RCTVideoErrorNoCertificateURL, + RCTVideoErrorNoFairplayDRM, + RCTVideoErrorNoDRMData +}; + +- (instancetype)initWithEventDispatcher:(RCTEventDispatcher *)eventDispatcher NS_DESIGNATED_INITIALIZER; + +- (AVPlayerViewController*)createPlayerViewController:(AVPlayer*)player withPlayerItem:(AVPlayerItem*)playerItem; + +- (void)save:(NSDictionary *)options resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject; +- (void)setLicenseResult:(NSString * )license; +- (BOOL)setLicenseResultError:(NSString * )error; + +@end diff --git a/Frameworks/react-native-video.xcframework/ios-arm64_x86_64-simulator/Headers/RCTVideoManager.h b/Frameworks/react-native-video.xcframework/ios-arm64_x86_64-simulator/Headers/RCTVideoManager.h new file mode 100644 index 0000000..b3bfccb --- /dev/null +++ b/Frameworks/react-native-video.xcframework/ios-arm64_x86_64-simulator/Headers/RCTVideoManager.h @@ -0,0 +1,6 @@ +#import +#import + +@interface RCTVideoManager : RCTViewManager + +@end diff --git a/Frameworks/react-native-video.xcframework/ios-arm64_x86_64-simulator/Headers/RCTVideoPlayerViewController.h b/Frameworks/react-native-video.xcframework/ios-arm64_x86_64-simulator/Headers/RCTVideoPlayerViewController.h new file mode 100644 index 0000000..ed9ebdd --- /dev/null +++ b/Frameworks/react-native-video.xcframework/ios-arm64_x86_64-simulator/Headers/RCTVideoPlayerViewController.h @@ -0,0 +1,20 @@ +// +// RCTVideoPlayerViewController.h +// RCTVideo +// +// Created by Stanisław Chmiela on 31.03.2016. +// Copyright © 2016 Facebook. All rights reserved. +// + +#import +#import "RCTVideo.h" +#import "RCTVideoPlayerViewControllerDelegate.h" + +@interface RCTVideoPlayerViewController : AVPlayerViewController +@property (nonatomic, weak) id rctDelegate; + +// Optional paramters +@property (nonatomic, weak) NSString* preferredOrientation; +@property (nonatomic) BOOL autorotate; + +@end diff --git a/Frameworks/react-native-video.xcframework/ios-arm64_x86_64-simulator/Headers/RCTVideoPlayerViewControllerDelegate.h b/Frameworks/react-native-video.xcframework/ios-arm64_x86_64-simulator/Headers/RCTVideoPlayerViewControllerDelegate.h new file mode 100644 index 0000000..e84b3f5 --- /dev/null +++ b/Frameworks/react-native-video.xcframework/ios-arm64_x86_64-simulator/Headers/RCTVideoPlayerViewControllerDelegate.h @@ -0,0 +1,7 @@ +#import +#import "AVKit/AVKit.h" + +@protocol RCTVideoPlayerViewControllerDelegate +- (void)videoPlayerViewControllerWillDismiss:(AVPlayerViewController *)playerViewController; +- (void)videoPlayerViewControllerDidDismiss:(AVPlayerViewController *)playerViewController; +@end diff --git a/Frameworks/react-native-video.xcframework/ios-arm64_x86_64-simulator/Headers/UIView+FindUIViewController.h b/Frameworks/react-native-video.xcframework/ios-arm64_x86_64-simulator/Headers/UIView+FindUIViewController.h new file mode 100644 index 0000000..0921426 --- /dev/null +++ b/Frameworks/react-native-video.xcframework/ios-arm64_x86_64-simulator/Headers/UIView+FindUIViewController.h @@ -0,0 +1,15 @@ +// +// UIView+FindUIViewController.h +// RCTVideo +// +// Created by Stanisław Chmiela on 31.03.2016. +// Copyright © 2016 Facebook. All rights reserved. +// +// Source: http://stackoverflow.com/a/3732812/1123156 + +#import + +@interface UIView (FindUIViewController) +- (UIViewController *) firstAvailableUIViewController; +- (id) traverseResponderChainForUIViewController; +@end diff --git a/Frameworks/react-native-video.xcframework/ios-arm64_x86_64-simulator/libreact-native-video.a b/Frameworks/react-native-video.xcframework/ios-arm64_x86_64-simulator/libreact-native-video.a new file mode 100644 index 0000000..98fac2d Binary files /dev/null and b/Frameworks/react-native-video.xcframework/ios-arm64_x86_64-simulator/libreact-native-video.a differ diff --git a/Frameworks/react-native-web-analytics.xcframework/Info.plist b/Frameworks/react-native-web-analytics.xcframework/Info.plist new file mode 100644 index 0000000..b4a84da --- /dev/null +++ b/Frameworks/react-native-web-analytics.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libreact-native-web-analytics.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libreact-native-web-analytics.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + libreact-native-web-analytics.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libreact-native-web-analytics.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/react-native-web-analytics.xcframework/ios-arm64/Headers/WebAnalyticsModule.h b/Frameworks/react-native-web-analytics.xcframework/ios-arm64/Headers/WebAnalyticsModule.h new file mode 100644 index 0000000..4bbf066 --- /dev/null +++ b/Frameworks/react-native-web-analytics.xcframework/ios-arm64/Headers/WebAnalyticsModule.h @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2016-present Invertase Limited & Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this library except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#import +#import +#import +#import + +@interface WebAnalytics : RCTView + +@end diff --git a/Frameworks/react-native-web-analytics.xcframework/ios-arm64/libreact-native-web-analytics.a b/Frameworks/react-native-web-analytics.xcframework/ios-arm64/libreact-native-web-analytics.a new file mode 100644 index 0000000..0f260f4 Binary files /dev/null and b/Frameworks/react-native-web-analytics.xcframework/ios-arm64/libreact-native-web-analytics.a differ diff --git a/Frameworks/react-native-web-analytics.xcframework/ios-arm64_x86_64-simulator/Headers/WebAnalyticsModule.h b/Frameworks/react-native-web-analytics.xcframework/ios-arm64_x86_64-simulator/Headers/WebAnalyticsModule.h new file mode 100644 index 0000000..4bbf066 --- /dev/null +++ b/Frameworks/react-native-web-analytics.xcframework/ios-arm64_x86_64-simulator/Headers/WebAnalyticsModule.h @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2016-present Invertase Limited & Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this library except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#import +#import +#import +#import + +@interface WebAnalytics : RCTView + +@end diff --git a/Frameworks/react-native-web-analytics.xcframework/ios-arm64_x86_64-simulator/libreact-native-web-analytics.a b/Frameworks/react-native-web-analytics.xcframework/ios-arm64_x86_64-simulator/libreact-native-web-analytics.a new file mode 100644 index 0000000..c8a47ca Binary files /dev/null and b/Frameworks/react-native-web-analytics.xcframework/ios-arm64_x86_64-simulator/libreact-native-web-analytics.a differ diff --git a/Frameworks/react-native-webview.xcframework/Info.plist b/Frameworks/react-native-webview.xcframework/Info.plist new file mode 100644 index 0000000..d620387 --- /dev/null +++ b/Frameworks/react-native-webview.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libreact-native-webview.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libreact-native-webview.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libreact-native-webview.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libreact-native-webview.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/react-native-webview.xcframework/ios-arm64/Headers/RNCWKProcessPoolManager.h b/Frameworks/react-native-webview.xcframework/ios-arm64/Headers/RNCWKProcessPoolManager.h new file mode 100644 index 0000000..6d2d215 --- /dev/null +++ b/Frameworks/react-native-webview.xcframework/ios-arm64/Headers/RNCWKProcessPoolManager.h @@ -0,0 +1,15 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +@interface RNCWKProcessPoolManager : NSObject + ++ (instancetype) sharedManager; +- (WKProcessPool *)sharedProcessPool; + +@end diff --git a/Frameworks/react-native-webview.xcframework/ios-arm64/Headers/RNCWebView.h b/Frameworks/react-native-webview.xcframework/ios-arm64/Headers/RNCWebView.h new file mode 100644 index 0000000..33a67ae --- /dev/null +++ b/Frameworks/react-native-webview.xcframework/ios-arm64/Headers/RNCWebView.h @@ -0,0 +1,116 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import +#import +#import + +typedef enum RNCWebViewPermissionGrantType : NSUInteger { + RNCWebViewPermissionGrantType_GrantIfSameHost_ElsePrompt, + RNCWebViewPermissionGrantType_GrantIfSameHost_ElseDeny, + RNCWebViewPermissionGrantType_Deny, + RNCWebViewPermissionGrantType_Grant, + RNCWebViewPermissionGrantType_Prompt +} RNCWebViewPermissionGrantType; + +@class RNCWebView; + +@protocol RNCWebViewDelegate + +- (BOOL)webView:(RNCWebView *_Nonnull)webView + shouldStartLoadForRequest:(NSMutableDictionary *_Nonnull)request + withCallback:(RCTDirectEventBlock _Nonnull)callback; + +@end + +@interface RNCWeakScriptMessageDelegate : NSObject + +@property (nonatomic, weak, nullable) id scriptDelegate; + +- (nullable instancetype)initWithDelegate:(id _Nullable)scriptDelegate; + +@end + +@interface RNCWebView : RCTView + +@property (nonatomic, weak) id _Nullable delegate; +@property (nonatomic, copy) NSDictionary * _Nullable source; +@property (nonatomic, assign) BOOL messagingEnabled; +@property (nonatomic, copy) NSString * _Nullable injectedJavaScript; +@property (nonatomic, copy) NSString * _Nullable injectedJavaScriptBeforeContentLoaded; +@property (nonatomic, assign) BOOL injectedJavaScriptForMainFrameOnly; +@property (nonatomic, assign) BOOL injectedJavaScriptBeforeContentLoadedForMainFrameOnly; +@property (nonatomic, assign) BOOL scrollEnabled; +@property (nonatomic, assign) BOOL sharedCookiesEnabled; +@property (nonatomic, assign) BOOL autoManageStatusBarEnabled; +@property (nonatomic, assign) BOOL pagingEnabled; +@property (nonatomic, assign) CGFloat decelerationRate; +@property (nonatomic, assign) BOOL allowsInlineMediaPlayback; +@property (nonatomic, assign) BOOL bounces; +@property (nonatomic, assign) BOOL mediaPlaybackRequiresUserAction; +#if WEBKIT_IOS_10_APIS_AVAILABLE +@property (nonatomic, assign) WKDataDetectorTypes dataDetectorTypes; +#endif +@property (nonatomic, assign) UIEdgeInsets contentInset; +@property (nonatomic, assign) BOOL automaticallyAdjustContentInsets; +@property (nonatomic, assign) BOOL keyboardDisplayRequiresUserAction; +@property (nonatomic, assign) BOOL hideKeyboardAccessoryView; +@property (nonatomic, assign) BOOL allowsBackForwardNavigationGestures; +@property (nonatomic, assign) BOOL incognito; +@property (nonatomic, assign) BOOL useSharedProcessPool; +@property (nonatomic, copy) NSString * _Nullable userAgent; +@property (nonatomic, copy) NSString * _Nullable applicationNameForUserAgent; +@property (nonatomic, assign) BOOL cacheEnabled; +@property (nonatomic, assign) BOOL javaScriptEnabled; +@property (nonatomic, assign) BOOL javaScriptCanOpenWindowsAutomatically; +@property (nonatomic, assign) BOOL allowFileAccessFromFileURLs; +@property (nonatomic, assign) BOOL allowUniversalAccessFromFileURLs; +@property (nonatomic, assign) BOOL allowsLinkPreview; +@property (nonatomic, assign) BOOL showsHorizontalScrollIndicator; +@property (nonatomic, assign) BOOL showsVerticalScrollIndicator; +@property (nonatomic, assign) BOOL directionalLockEnabled; +@property (nonatomic, assign) BOOL ignoreSilentHardwareSwitch; +@property (nonatomic, copy) NSString * _Nullable allowingReadAccessToURL; +@property (nonatomic, copy) NSDictionary * _Nullable basicAuthCredential; +@property (nonatomic, assign) BOOL pullToRefreshEnabled; +@property (nonatomic, assign) BOOL enableApplePay; +@property (nonatomic, copy) NSArray * _Nullable menuItems; +@property (nonatomic, copy) RCTDirectEventBlock onCustomMenuSelection; +#if !TARGET_OS_OSX +@property (nonatomic, weak) UIRefreshControl * _Nullable refreshControl; +#endif + +#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000 /* iOS 13 */ +@property (nonatomic, assign) WKContentMode contentMode; +#endif + +#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 140000 /* iOS 14 */ +@property (nonatomic, assign) BOOL limitsNavigationsToAppBoundDomains; +#endif + +#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 140500 /* iOS 14.5 */ +@property (nonatomic, assign) BOOL textInteractionEnabled; +#endif + +#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 150000 /* iOS 15 */ +@property (nonatomic, assign) RNCWebViewPermissionGrantType mediaCapturePermissionGrantType; +#endif + ++ (void)setClientAuthenticationCredential:(nullable NSURLCredential*)credential; ++ (void)setCustomCertificatesForHost:(nullable NSDictionary *)certificates; +- (void)postMessage:(NSString *_Nullable)message; +- (void)injectJavaScript:(NSString *_Nullable)script; +- (void)goForward; +- (void)goBack; +- (void)reload; +- (void)stopLoading; +#if !TARGET_OS_OSX +- (void)addPullToRefreshControl; +- (void)pullToRefresh:(UIRefreshControl *_Nonnull)refreshControl; +#endif + +@end diff --git a/Frameworks/react-native-webview.xcframework/ios-arm64/Headers/RNCWebViewManager.h b/Frameworks/react-native-webview.xcframework/ios-arm64/Headers/RNCWebViewManager.h new file mode 100644 index 0000000..c7252e5 --- /dev/null +++ b/Frameworks/react-native-webview.xcframework/ios-arm64/Headers/RNCWebViewManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +@interface RNCWebViewManager : RCTViewManager + @property (nonatomic, copy) NSArray * _Nullable menuItems; + @property (nonatomic, copy) RCTDirectEventBlock onCustomMenuSelection; +@end diff --git a/Frameworks/react-native-webview.xcframework/ios-arm64/libreact-native-webview.a b/Frameworks/react-native-webview.xcframework/ios-arm64/libreact-native-webview.a new file mode 100644 index 0000000..ae2ed23 Binary files /dev/null and b/Frameworks/react-native-webview.xcframework/ios-arm64/libreact-native-webview.a differ diff --git a/Frameworks/react-native-webview.xcframework/ios-arm64_x86_64-simulator/Headers/RNCWKProcessPoolManager.h b/Frameworks/react-native-webview.xcframework/ios-arm64_x86_64-simulator/Headers/RNCWKProcessPoolManager.h new file mode 100644 index 0000000..6d2d215 --- /dev/null +++ b/Frameworks/react-native-webview.xcframework/ios-arm64_x86_64-simulator/Headers/RNCWKProcessPoolManager.h @@ -0,0 +1,15 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +@interface RNCWKProcessPoolManager : NSObject + ++ (instancetype) sharedManager; +- (WKProcessPool *)sharedProcessPool; + +@end diff --git a/Frameworks/react-native-webview.xcframework/ios-arm64_x86_64-simulator/Headers/RNCWebView.h b/Frameworks/react-native-webview.xcframework/ios-arm64_x86_64-simulator/Headers/RNCWebView.h new file mode 100644 index 0000000..33a67ae --- /dev/null +++ b/Frameworks/react-native-webview.xcframework/ios-arm64_x86_64-simulator/Headers/RNCWebView.h @@ -0,0 +1,116 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import +#import +#import + +typedef enum RNCWebViewPermissionGrantType : NSUInteger { + RNCWebViewPermissionGrantType_GrantIfSameHost_ElsePrompt, + RNCWebViewPermissionGrantType_GrantIfSameHost_ElseDeny, + RNCWebViewPermissionGrantType_Deny, + RNCWebViewPermissionGrantType_Grant, + RNCWebViewPermissionGrantType_Prompt +} RNCWebViewPermissionGrantType; + +@class RNCWebView; + +@protocol RNCWebViewDelegate + +- (BOOL)webView:(RNCWebView *_Nonnull)webView + shouldStartLoadForRequest:(NSMutableDictionary *_Nonnull)request + withCallback:(RCTDirectEventBlock _Nonnull)callback; + +@end + +@interface RNCWeakScriptMessageDelegate : NSObject + +@property (nonatomic, weak, nullable) id scriptDelegate; + +- (nullable instancetype)initWithDelegate:(id _Nullable)scriptDelegate; + +@end + +@interface RNCWebView : RCTView + +@property (nonatomic, weak) id _Nullable delegate; +@property (nonatomic, copy) NSDictionary * _Nullable source; +@property (nonatomic, assign) BOOL messagingEnabled; +@property (nonatomic, copy) NSString * _Nullable injectedJavaScript; +@property (nonatomic, copy) NSString * _Nullable injectedJavaScriptBeforeContentLoaded; +@property (nonatomic, assign) BOOL injectedJavaScriptForMainFrameOnly; +@property (nonatomic, assign) BOOL injectedJavaScriptBeforeContentLoadedForMainFrameOnly; +@property (nonatomic, assign) BOOL scrollEnabled; +@property (nonatomic, assign) BOOL sharedCookiesEnabled; +@property (nonatomic, assign) BOOL autoManageStatusBarEnabled; +@property (nonatomic, assign) BOOL pagingEnabled; +@property (nonatomic, assign) CGFloat decelerationRate; +@property (nonatomic, assign) BOOL allowsInlineMediaPlayback; +@property (nonatomic, assign) BOOL bounces; +@property (nonatomic, assign) BOOL mediaPlaybackRequiresUserAction; +#if WEBKIT_IOS_10_APIS_AVAILABLE +@property (nonatomic, assign) WKDataDetectorTypes dataDetectorTypes; +#endif +@property (nonatomic, assign) UIEdgeInsets contentInset; +@property (nonatomic, assign) BOOL automaticallyAdjustContentInsets; +@property (nonatomic, assign) BOOL keyboardDisplayRequiresUserAction; +@property (nonatomic, assign) BOOL hideKeyboardAccessoryView; +@property (nonatomic, assign) BOOL allowsBackForwardNavigationGestures; +@property (nonatomic, assign) BOOL incognito; +@property (nonatomic, assign) BOOL useSharedProcessPool; +@property (nonatomic, copy) NSString * _Nullable userAgent; +@property (nonatomic, copy) NSString * _Nullable applicationNameForUserAgent; +@property (nonatomic, assign) BOOL cacheEnabled; +@property (nonatomic, assign) BOOL javaScriptEnabled; +@property (nonatomic, assign) BOOL javaScriptCanOpenWindowsAutomatically; +@property (nonatomic, assign) BOOL allowFileAccessFromFileURLs; +@property (nonatomic, assign) BOOL allowUniversalAccessFromFileURLs; +@property (nonatomic, assign) BOOL allowsLinkPreview; +@property (nonatomic, assign) BOOL showsHorizontalScrollIndicator; +@property (nonatomic, assign) BOOL showsVerticalScrollIndicator; +@property (nonatomic, assign) BOOL directionalLockEnabled; +@property (nonatomic, assign) BOOL ignoreSilentHardwareSwitch; +@property (nonatomic, copy) NSString * _Nullable allowingReadAccessToURL; +@property (nonatomic, copy) NSDictionary * _Nullable basicAuthCredential; +@property (nonatomic, assign) BOOL pullToRefreshEnabled; +@property (nonatomic, assign) BOOL enableApplePay; +@property (nonatomic, copy) NSArray * _Nullable menuItems; +@property (nonatomic, copy) RCTDirectEventBlock onCustomMenuSelection; +#if !TARGET_OS_OSX +@property (nonatomic, weak) UIRefreshControl * _Nullable refreshControl; +#endif + +#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000 /* iOS 13 */ +@property (nonatomic, assign) WKContentMode contentMode; +#endif + +#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 140000 /* iOS 14 */ +@property (nonatomic, assign) BOOL limitsNavigationsToAppBoundDomains; +#endif + +#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 140500 /* iOS 14.5 */ +@property (nonatomic, assign) BOOL textInteractionEnabled; +#endif + +#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 150000 /* iOS 15 */ +@property (nonatomic, assign) RNCWebViewPermissionGrantType mediaCapturePermissionGrantType; +#endif + ++ (void)setClientAuthenticationCredential:(nullable NSURLCredential*)credential; ++ (void)setCustomCertificatesForHost:(nullable NSDictionary *)certificates; +- (void)postMessage:(NSString *_Nullable)message; +- (void)injectJavaScript:(NSString *_Nullable)script; +- (void)goForward; +- (void)goBack; +- (void)reload; +- (void)stopLoading; +#if !TARGET_OS_OSX +- (void)addPullToRefreshControl; +- (void)pullToRefresh:(UIRefreshControl *_Nonnull)refreshControl; +#endif + +@end diff --git a/Frameworks/react-native-webview.xcframework/ios-arm64_x86_64-simulator/Headers/RNCWebViewManager.h b/Frameworks/react-native-webview.xcframework/ios-arm64_x86_64-simulator/Headers/RNCWebViewManager.h new file mode 100644 index 0000000..c7252e5 --- /dev/null +++ b/Frameworks/react-native-webview.xcframework/ios-arm64_x86_64-simulator/Headers/RNCWebViewManager.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +@interface RNCWebViewManager : RCTViewManager + @property (nonatomic, copy) NSArray * _Nullable menuItems; + @property (nonatomic, copy) RCTDirectEventBlock onCustomMenuSelection; +@end diff --git a/Frameworks/react-native-webview.xcframework/ios-arm64_x86_64-simulator/libreact-native-webview.a b/Frameworks/react-native-webview.xcframework/ios-arm64_x86_64-simulator/libreact-native-webview.a new file mode 100644 index 0000000..b682722 Binary files /dev/null and b/Frameworks/react-native-webview.xcframework/ios-arm64_x86_64-simulator/libreact-native-webview.a differ diff --git a/Frameworks/react-native-zip-archive.xcframework/Info.plist b/Frameworks/react-native-zip-archive.xcframework/Info.plist new file mode 100644 index 0000000..ba9faa2 --- /dev/null +++ b/Frameworks/react-native-zip-archive.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + libreact-native-zip-archive.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libreact-native-zip-archive.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libreact-native-zip-archive.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libreact-native-zip-archive.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/react-native-zip-archive.xcframework/ios-arm64/Headers/RNZipArchive.h b/Frameworks/react-native-zip-archive.xcframework/ios-arm64/Headers/RNZipArchive.h new file mode 100644 index 0000000..02e9f43 --- /dev/null +++ b/Frameworks/react-native-zip-archive.xcframework/ios-arm64/Headers/RNZipArchive.h @@ -0,0 +1,25 @@ +// +// RNZipArchive.h +// RNZipArchive +// +// Created by Perry Poon on 8/26/15. +// Copyright (c) 2015 Perry Poon. All rights reserved. +// + + +#if __has_include() +#import +#else +#import "RCTBridgeModule.h" +#endif +#import "SSZipArchive/SSZipArchive.h" + +@interface RNZipArchive : NSObject{ + NSString *unzippedFilePath; + float unzipProgress; +} + +@property (nonatomic) NSString *unzippedFilePath; +@property (nonatomic) float unzipProgress; + +@end diff --git a/Frameworks/react-native-zip-archive.xcframework/ios-arm64/Headers/SSZipArchive.h b/Frameworks/react-native-zip-archive.xcframework/ios-arm64/Headers/SSZipArchive.h new file mode 100644 index 0000000..2e0c7f8 --- /dev/null +++ b/Frameworks/react-native-zip-archive.xcframework/ios-arm64/Headers/SSZipArchive.h @@ -0,0 +1,150 @@ +// +// SSZipArchive.h +// SSZipArchive +// +// Created by Sam Soffes on 7/21/10. +// Copyright (c) Sam Soffes 2010-2015. All rights reserved. +// + +#ifndef _SSZIPARCHIVE_H +#define _SSZIPARCHIVE_H + +#import +#include "SSZipCommon.h" + +NS_ASSUME_NONNULL_BEGIN + +extern NSString *const SSZipArchiveErrorDomain; +typedef NS_ENUM(NSInteger, SSZipArchiveErrorCode) { + SSZipArchiveErrorCodeFailedOpenZipFile = -1, + SSZipArchiveErrorCodeFailedOpenFileInZip = -2, + SSZipArchiveErrorCodeFileInfoNotLoadable = -3, + SSZipArchiveErrorCodeFileContentNotReadable = -4, + SSZipArchiveErrorCodeFailedToWriteFile = -5, + SSZipArchiveErrorCodeInvalidArguments = -6, +}; + +@protocol SSZipArchiveDelegate; + +@interface SSZipArchive : NSObject + +// Password check ++ (BOOL)isFilePasswordProtectedAtPath:(NSString *)path; ++ (BOOL)isPasswordValidForArchiveAtPath:(NSString *)path password:(NSString *)pw error:(NSError * _Nullable * _Nullable)error NS_SWIFT_NOTHROW; + +// Unzip ++ (NSMutableArray *)unzipFileAtPath:(NSString *)path toDestination:(NSString *)destination; ++ (NSMutableArray *)unzipFileAtPath:(NSString *)path toDestination:(NSString *)destination delegate:(nullable id)delegate; + ++ (NSMutableArray *)unzipFileAtPath:(NSString *)path + toDestination:(NSString *)destination + overwrite:(BOOL)overwrite + password:(nullable NSString *)password + error:(NSError * *)error; + ++ (NSMutableArray *)unzipFileAtPath:(NSString *)path + toDestination:(NSString *)destination + overwrite:(BOOL)overwrite + password:(nullable NSString *)password + error:(NSError * *)error + delegate:(nullable id)delegate NS_REFINED_FOR_SWIFT; + ++ (NSMutableArray *)unzipFileAtPath:(NSString *)path + toDestination:(NSString *)destination + preserveAttributes:(BOOL)preserveAttributes + overwrite:(BOOL)overwrite + password:(nullable NSString *)password + error:(NSError * *)error + delegate:(nullable id)delegate; + ++ (NSMutableArray *)unzipFileAtPath:(NSString *)path + toDestination:(NSString *)destination + progressHandler:(void (^_Nullable)(NSString *entry, unz_file_info zipInfo, long entryNumber, long total))progressHandler + completionHandler:(void (^_Nullable)(NSString *path, BOOL succeeded, NSError * _Nullable error))completionHandler; + ++ (NSMutableArray *)unzipFileAtPath:(NSString *)path + toDestination:(NSString *)destination + overwrite:(BOOL)overwrite + password:(nullable NSString *)password + progressHandler:(void (^_Nullable)(NSString *entry, unz_file_info zipInfo, long entryNumber, long total))progressHandler + completionHandler:(void (^_Nullable)(NSString *path, BOOL succeeded, NSError * _Nullable error))completionHandler; + ++ (NSMutableArray *)unzipFileAtPath:(NSString *)path + toDestination:(NSString *)destination + preserveAttributes:(BOOL)preserveAttributes + overwrite:(BOOL)overwrite + nestedZipLevel:(NSInteger)nestedZipLevel + password:(nullable NSString *)password + error:(NSError **)error + delegate:(nullable id)delegate + progressHandler:(void (^_Nullable)(NSString *entry, unz_file_info zipInfo, long entryNumber, long total))progressHandler + completionHandler:(void (^_Nullable)(NSString *path, BOOL succeeded, NSError * _Nullable error))completionHandler; + +// Zip +// default compression level is Z_DEFAULT_COMPRESSION (from "zlib.h") +// keepParentDirectory: if YES, then unzipping will give `directoryName/fileName`. If NO, then unzipping will just give `fileName`. Default is NO. + +// without password ++ (BOOL)createZipFileAtPath:(NSString *)path withFilesAtPaths:(NSArray *)paths; +//without password and compression ++ (BOOL)createStoreZipFileAtPath:(NSString *)path withFilesAtPaths:(NSArray *)paths; ++ (BOOL)createZipFileAtPath:(NSString *)path withContentsOfDirectory:(NSString *)directoryPath; + ++ (BOOL)createZipFileAtPath:(NSString *)path withContentsOfDirectory:(NSString *)directoryPath keepParentDirectory:(BOOL)keepParentDirectory; + +// with optional password, default encryption is AES +// don't use AES if you need compatibility with native macOS unzip and Archive Utility ++ (BOOL)createZipFileAtPath:(NSString *)path withFilesAtPaths:(NSArray *)paths withPassword:(nullable NSString *)password; ++ (BOOL)createZipFileAtPath:(NSString *)path withFilesAtPaths:(NSArray *)paths withPassword:(nullable NSString *)password withCompressionLevel:(int)compressionLevel; ++ (BOOL)createZipFileAtPath:(NSString *)path withContentsOfDirectory:(NSString *)directoryPath withPassword:(nullable NSString *)password; ++ (BOOL)createZipFileAtPath:(NSString *)path withContentsOfDirectory:(NSString *)directoryPath keepParentDirectory:(BOOL)keepParentDirectory withPassword:(nullable NSString *)password; ++ (BOOL)createZipFileAtPath:(NSString *)path + withContentsOfDirectory:(NSString *)directoryPath + keepParentDirectory:(BOOL)keepParentDirectory + withPassword:(nullable NSString *)password + andProgressHandler:(void(^ _Nullable)(NSUInteger entryNumber, NSUInteger total))progressHandler; ++ (BOOL)createZipFileAtPath:(NSString *)path + withContentsOfDirectory:(NSString *)directoryPath + keepParentDirectory:(BOOL)keepParentDirectory + compressionLevel:(int)compressionLevel + password:(nullable NSString *)password + AES:(BOOL)aes + progressHandler:(void(^ _Nullable)(NSUInteger entryNumber, NSUInteger total))progressHandler; + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithPath:(NSString *)path NS_DESIGNATED_INITIALIZER; +- (BOOL)open; + +/// write empty folder +- (BOOL)writeFolderAtPath:(NSString *)path withFolderName:(NSString *)folderName withPassword:(nullable NSString *)password; +/// write file +- (BOOL)writeFile:(NSString *)path withPassword:(nullable NSString *)password; +- (BOOL)writeFileAtPath:(NSString *)path withFileName:(nullable NSString *)fileName withPassword:(nullable NSString *)password; +- (BOOL)writeFileAtPath:(NSString *)path withFileName:(nullable NSString *)fileName compressionLevel:(int)compressionLevel password:(nullable NSString *)password AES:(BOOL)aes; +/// write data +- (BOOL)writeData:(NSData *)data filename:(nullable NSString *)filename withPassword:(nullable NSString *)password; +- (BOOL)writeData:(NSData *)data filename:(nullable NSString *)filename compressionLevel:(int)compressionLevel password:(nullable NSString *)password AES:(BOOL)aes; + +- (BOOL)close; + +@end + +@protocol SSZipArchiveDelegate + +@optional + +- (void)zipArchiveWillUnzipArchiveAtPath:(NSString *)path zipInfo:(unz_global_info)zipInfo; +- (void)zipArchiveDidUnzipArchiveAtPath:(NSString *)path zipInfo:(unz_global_info)zipInfo unzippedPath:(NSString *)unzippedPath; + +- (BOOL)zipArchiveShouldUnzipFileAtIndex:(NSInteger)fileIndex totalFiles:(NSInteger)totalFiles archivePath:(NSString *)archivePath fileInfo:(unz_file_info)fileInfo; +- (void)zipArchiveWillUnzipFileAtIndex:(NSInteger)fileIndex totalFiles:(NSInteger)totalFiles archivePath:(NSString *)archivePath fileInfo:(unz_file_info)fileInfo; +- (void)zipArchiveDidUnzipFileAtIndex:(NSInteger)fileIndex totalFiles:(NSInteger)totalFiles archivePath:(NSString *)archivePath fileInfo:(unz_file_info)fileInfo; +- (void)zipArchiveDidUnzipFileAtIndex:(NSInteger)fileIndex totalFiles:(NSInteger)totalFiles archivePath:(NSString *)archivePath unzippedFilePath:(NSString *)unzippedFilePath; + +- (void)zipArchiveProgressEvent:(unsigned long long)loaded total:(unsigned long long)total; + +@end + +NS_ASSUME_NONNULL_END + +#endif /* _SSZIPARCHIVE_H */ diff --git a/Frameworks/react-native-zip-archive.xcframework/ios-arm64/Headers/SSZipCommon.h b/Frameworks/react-native-zip-archive.xcframework/ios-arm64/Headers/SSZipCommon.h new file mode 100644 index 0000000..78fa282 --- /dev/null +++ b/Frameworks/react-native-zip-archive.xcframework/ios-arm64/Headers/SSZipCommon.h @@ -0,0 +1,68 @@ +#ifndef SSZipCommon +#define SSZipCommon + +// typedefs moved from mz_compat.h to here for public access + +/* unz_global_info structure contain global data about the ZIPfile + These data comes from the end of central dir */ +typedef struct unz_global_info64_s +{ + uint64_t number_entry; /* total number of entries in the central dir on this disk */ + uint32_t number_disk_with_CD; /* number the the disk with central dir, used for spanning ZIP */ + uint16_t size_comment; /* size of the global comment of the zipfile */ +} unz_global_info64; + +typedef struct unz_global_info_s +{ + uint32_t number_entry; /* total number of entries in the central dir on this disk */ + uint32_t number_disk_with_CD; /* number the the disk with central dir, used for spanning ZIP */ + uint16_t size_comment; /* size of the global comment of the zipfile */ +} unz_global_info; + +/* unz_file_info contain information about a file in the zipfile */ +/* https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT */ +typedef struct unz_file_info64_s +{ + uint16_t version; /* version made by 2 bytes */ + uint16_t version_needed; /* version needed to extract 2 bytes */ + uint16_t flag; /* general purpose bit flag 2 bytes */ + uint16_t compression_method; /* compression method 2 bytes */ + uint32_t dos_date; /* last mod file date in Dos fmt 4 bytes */ + uint32_t crc; /* crc-32 4 bytes */ + uint64_t compressed_size; /* compressed size 8 bytes */ + uint64_t uncompressed_size; /* uncompressed size 8 bytes */ + uint16_t size_filename; /* filename length 2 bytes */ + uint16_t size_file_extra; /* extra field length 2 bytes */ + uint16_t size_file_comment; /* file comment length 2 bytes */ + + uint32_t disk_num_start; /* disk number start 4 bytes */ + uint16_t internal_fa; /* internal file attributes 2 bytes */ + uint32_t external_fa; /* external file attributes 4 bytes */ + + uint64_t disk_offset; + + uint16_t size_file_extra_internal; +} unz_file_info64; + +typedef struct unz_file_info_s +{ + uint16_t version; /* version made by 2 bytes */ + uint16_t version_needed; /* version needed to extract 2 bytes */ + uint16_t flag; /* general purpose bit flag 2 bytes */ + uint16_t compression_method; /* compression method 2 bytes */ + uint32_t dos_date; /* last mod file date in Dos fmt 4 bytes */ + uint32_t crc; /* crc-32 4 bytes */ + uint32_t compressed_size; /* compressed size 4 bytes */ + uint32_t uncompressed_size; /* uncompressed size 4 bytes */ + uint16_t size_filename; /* filename length 2 bytes */ + uint16_t size_file_extra; /* extra field length 2 bytes */ + uint16_t size_file_comment; /* file comment length 2 bytes */ + + uint16_t disk_num_start; /* disk number start 2 bytes */ + uint16_t internal_fa; /* internal file attributes 2 bytes */ + uint32_t external_fa; /* external file attributes 4 bytes */ + + uint64_t disk_offset; +} unz_file_info; + +#endif diff --git a/Frameworks/react-native-zip-archive.xcframework/ios-arm64/Headers/ZipArchive.h b/Frameworks/react-native-zip-archive.xcframework/ios-arm64/Headers/ZipArchive.h new file mode 100644 index 0000000..7a53df8 --- /dev/null +++ b/Frameworks/react-native-zip-archive.xcframework/ios-arm64/Headers/ZipArchive.h @@ -0,0 +1,19 @@ +// +// ZipArchive.h +// ZipArchive +// +// Created by Serhii Mumriak on 12/1/15. +// Copyright © 2015 smumryak. All rights reserved. +// + +#import + +//! Project version number for ZipArchive. +FOUNDATION_EXPORT double ZipArchiveVersionNumber; + +//! Project version string for ZipArchive. +FOUNDATION_EXPORT const unsigned char ZipArchiveVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + +#import "SSZipArchive.h" diff --git a/Frameworks/react-native-zip-archive.xcframework/ios-arm64/libreact-native-zip-archive.a b/Frameworks/react-native-zip-archive.xcframework/ios-arm64/libreact-native-zip-archive.a new file mode 100644 index 0000000..743edf5 Binary files /dev/null and b/Frameworks/react-native-zip-archive.xcframework/ios-arm64/libreact-native-zip-archive.a differ diff --git a/Frameworks/react-native-zip-archive.xcframework/ios-arm64_x86_64-simulator/Headers/RNZipArchive.h b/Frameworks/react-native-zip-archive.xcframework/ios-arm64_x86_64-simulator/Headers/RNZipArchive.h new file mode 100644 index 0000000..02e9f43 --- /dev/null +++ b/Frameworks/react-native-zip-archive.xcframework/ios-arm64_x86_64-simulator/Headers/RNZipArchive.h @@ -0,0 +1,25 @@ +// +// RNZipArchive.h +// RNZipArchive +// +// Created by Perry Poon on 8/26/15. +// Copyright (c) 2015 Perry Poon. All rights reserved. +// + + +#if __has_include() +#import +#else +#import "RCTBridgeModule.h" +#endif +#import "SSZipArchive/SSZipArchive.h" + +@interface RNZipArchive : NSObject{ + NSString *unzippedFilePath; + float unzipProgress; +} + +@property (nonatomic) NSString *unzippedFilePath; +@property (nonatomic) float unzipProgress; + +@end diff --git a/Frameworks/react-native-zip-archive.xcframework/ios-arm64_x86_64-simulator/Headers/SSZipArchive.h b/Frameworks/react-native-zip-archive.xcframework/ios-arm64_x86_64-simulator/Headers/SSZipArchive.h new file mode 100644 index 0000000..2e0c7f8 --- /dev/null +++ b/Frameworks/react-native-zip-archive.xcframework/ios-arm64_x86_64-simulator/Headers/SSZipArchive.h @@ -0,0 +1,150 @@ +// +// SSZipArchive.h +// SSZipArchive +// +// Created by Sam Soffes on 7/21/10. +// Copyright (c) Sam Soffes 2010-2015. All rights reserved. +// + +#ifndef _SSZIPARCHIVE_H +#define _SSZIPARCHIVE_H + +#import +#include "SSZipCommon.h" + +NS_ASSUME_NONNULL_BEGIN + +extern NSString *const SSZipArchiveErrorDomain; +typedef NS_ENUM(NSInteger, SSZipArchiveErrorCode) { + SSZipArchiveErrorCodeFailedOpenZipFile = -1, + SSZipArchiveErrorCodeFailedOpenFileInZip = -2, + SSZipArchiveErrorCodeFileInfoNotLoadable = -3, + SSZipArchiveErrorCodeFileContentNotReadable = -4, + SSZipArchiveErrorCodeFailedToWriteFile = -5, + SSZipArchiveErrorCodeInvalidArguments = -6, +}; + +@protocol SSZipArchiveDelegate; + +@interface SSZipArchive : NSObject + +// Password check ++ (BOOL)isFilePasswordProtectedAtPath:(NSString *)path; ++ (BOOL)isPasswordValidForArchiveAtPath:(NSString *)path password:(NSString *)pw error:(NSError * _Nullable * _Nullable)error NS_SWIFT_NOTHROW; + +// Unzip ++ (NSMutableArray *)unzipFileAtPath:(NSString *)path toDestination:(NSString *)destination; ++ (NSMutableArray *)unzipFileAtPath:(NSString *)path toDestination:(NSString *)destination delegate:(nullable id)delegate; + ++ (NSMutableArray *)unzipFileAtPath:(NSString *)path + toDestination:(NSString *)destination + overwrite:(BOOL)overwrite + password:(nullable NSString *)password + error:(NSError * *)error; + ++ (NSMutableArray *)unzipFileAtPath:(NSString *)path + toDestination:(NSString *)destination + overwrite:(BOOL)overwrite + password:(nullable NSString *)password + error:(NSError * *)error + delegate:(nullable id)delegate NS_REFINED_FOR_SWIFT; + ++ (NSMutableArray *)unzipFileAtPath:(NSString *)path + toDestination:(NSString *)destination + preserveAttributes:(BOOL)preserveAttributes + overwrite:(BOOL)overwrite + password:(nullable NSString *)password + error:(NSError * *)error + delegate:(nullable id)delegate; + ++ (NSMutableArray *)unzipFileAtPath:(NSString *)path + toDestination:(NSString *)destination + progressHandler:(void (^_Nullable)(NSString *entry, unz_file_info zipInfo, long entryNumber, long total))progressHandler + completionHandler:(void (^_Nullable)(NSString *path, BOOL succeeded, NSError * _Nullable error))completionHandler; + ++ (NSMutableArray *)unzipFileAtPath:(NSString *)path + toDestination:(NSString *)destination + overwrite:(BOOL)overwrite + password:(nullable NSString *)password + progressHandler:(void (^_Nullable)(NSString *entry, unz_file_info zipInfo, long entryNumber, long total))progressHandler + completionHandler:(void (^_Nullable)(NSString *path, BOOL succeeded, NSError * _Nullable error))completionHandler; + ++ (NSMutableArray *)unzipFileAtPath:(NSString *)path + toDestination:(NSString *)destination + preserveAttributes:(BOOL)preserveAttributes + overwrite:(BOOL)overwrite + nestedZipLevel:(NSInteger)nestedZipLevel + password:(nullable NSString *)password + error:(NSError **)error + delegate:(nullable id)delegate + progressHandler:(void (^_Nullable)(NSString *entry, unz_file_info zipInfo, long entryNumber, long total))progressHandler + completionHandler:(void (^_Nullable)(NSString *path, BOOL succeeded, NSError * _Nullable error))completionHandler; + +// Zip +// default compression level is Z_DEFAULT_COMPRESSION (from "zlib.h") +// keepParentDirectory: if YES, then unzipping will give `directoryName/fileName`. If NO, then unzipping will just give `fileName`. Default is NO. + +// without password ++ (BOOL)createZipFileAtPath:(NSString *)path withFilesAtPaths:(NSArray *)paths; +//without password and compression ++ (BOOL)createStoreZipFileAtPath:(NSString *)path withFilesAtPaths:(NSArray *)paths; ++ (BOOL)createZipFileAtPath:(NSString *)path withContentsOfDirectory:(NSString *)directoryPath; + ++ (BOOL)createZipFileAtPath:(NSString *)path withContentsOfDirectory:(NSString *)directoryPath keepParentDirectory:(BOOL)keepParentDirectory; + +// with optional password, default encryption is AES +// don't use AES if you need compatibility with native macOS unzip and Archive Utility ++ (BOOL)createZipFileAtPath:(NSString *)path withFilesAtPaths:(NSArray *)paths withPassword:(nullable NSString *)password; ++ (BOOL)createZipFileAtPath:(NSString *)path withFilesAtPaths:(NSArray *)paths withPassword:(nullable NSString *)password withCompressionLevel:(int)compressionLevel; ++ (BOOL)createZipFileAtPath:(NSString *)path withContentsOfDirectory:(NSString *)directoryPath withPassword:(nullable NSString *)password; ++ (BOOL)createZipFileAtPath:(NSString *)path withContentsOfDirectory:(NSString *)directoryPath keepParentDirectory:(BOOL)keepParentDirectory withPassword:(nullable NSString *)password; ++ (BOOL)createZipFileAtPath:(NSString *)path + withContentsOfDirectory:(NSString *)directoryPath + keepParentDirectory:(BOOL)keepParentDirectory + withPassword:(nullable NSString *)password + andProgressHandler:(void(^ _Nullable)(NSUInteger entryNumber, NSUInteger total))progressHandler; ++ (BOOL)createZipFileAtPath:(NSString *)path + withContentsOfDirectory:(NSString *)directoryPath + keepParentDirectory:(BOOL)keepParentDirectory + compressionLevel:(int)compressionLevel + password:(nullable NSString *)password + AES:(BOOL)aes + progressHandler:(void(^ _Nullable)(NSUInteger entryNumber, NSUInteger total))progressHandler; + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithPath:(NSString *)path NS_DESIGNATED_INITIALIZER; +- (BOOL)open; + +/// write empty folder +- (BOOL)writeFolderAtPath:(NSString *)path withFolderName:(NSString *)folderName withPassword:(nullable NSString *)password; +/// write file +- (BOOL)writeFile:(NSString *)path withPassword:(nullable NSString *)password; +- (BOOL)writeFileAtPath:(NSString *)path withFileName:(nullable NSString *)fileName withPassword:(nullable NSString *)password; +- (BOOL)writeFileAtPath:(NSString *)path withFileName:(nullable NSString *)fileName compressionLevel:(int)compressionLevel password:(nullable NSString *)password AES:(BOOL)aes; +/// write data +- (BOOL)writeData:(NSData *)data filename:(nullable NSString *)filename withPassword:(nullable NSString *)password; +- (BOOL)writeData:(NSData *)data filename:(nullable NSString *)filename compressionLevel:(int)compressionLevel password:(nullable NSString *)password AES:(BOOL)aes; + +- (BOOL)close; + +@end + +@protocol SSZipArchiveDelegate + +@optional + +- (void)zipArchiveWillUnzipArchiveAtPath:(NSString *)path zipInfo:(unz_global_info)zipInfo; +- (void)zipArchiveDidUnzipArchiveAtPath:(NSString *)path zipInfo:(unz_global_info)zipInfo unzippedPath:(NSString *)unzippedPath; + +- (BOOL)zipArchiveShouldUnzipFileAtIndex:(NSInteger)fileIndex totalFiles:(NSInteger)totalFiles archivePath:(NSString *)archivePath fileInfo:(unz_file_info)fileInfo; +- (void)zipArchiveWillUnzipFileAtIndex:(NSInteger)fileIndex totalFiles:(NSInteger)totalFiles archivePath:(NSString *)archivePath fileInfo:(unz_file_info)fileInfo; +- (void)zipArchiveDidUnzipFileAtIndex:(NSInteger)fileIndex totalFiles:(NSInteger)totalFiles archivePath:(NSString *)archivePath fileInfo:(unz_file_info)fileInfo; +- (void)zipArchiveDidUnzipFileAtIndex:(NSInteger)fileIndex totalFiles:(NSInteger)totalFiles archivePath:(NSString *)archivePath unzippedFilePath:(NSString *)unzippedFilePath; + +- (void)zipArchiveProgressEvent:(unsigned long long)loaded total:(unsigned long long)total; + +@end + +NS_ASSUME_NONNULL_END + +#endif /* _SSZIPARCHIVE_H */ diff --git a/Frameworks/react-native-zip-archive.xcframework/ios-arm64_x86_64-simulator/Headers/SSZipCommon.h b/Frameworks/react-native-zip-archive.xcframework/ios-arm64_x86_64-simulator/Headers/SSZipCommon.h new file mode 100644 index 0000000..78fa282 --- /dev/null +++ b/Frameworks/react-native-zip-archive.xcframework/ios-arm64_x86_64-simulator/Headers/SSZipCommon.h @@ -0,0 +1,68 @@ +#ifndef SSZipCommon +#define SSZipCommon + +// typedefs moved from mz_compat.h to here for public access + +/* unz_global_info structure contain global data about the ZIPfile + These data comes from the end of central dir */ +typedef struct unz_global_info64_s +{ + uint64_t number_entry; /* total number of entries in the central dir on this disk */ + uint32_t number_disk_with_CD; /* number the the disk with central dir, used for spanning ZIP */ + uint16_t size_comment; /* size of the global comment of the zipfile */ +} unz_global_info64; + +typedef struct unz_global_info_s +{ + uint32_t number_entry; /* total number of entries in the central dir on this disk */ + uint32_t number_disk_with_CD; /* number the the disk with central dir, used for spanning ZIP */ + uint16_t size_comment; /* size of the global comment of the zipfile */ +} unz_global_info; + +/* unz_file_info contain information about a file in the zipfile */ +/* https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT */ +typedef struct unz_file_info64_s +{ + uint16_t version; /* version made by 2 bytes */ + uint16_t version_needed; /* version needed to extract 2 bytes */ + uint16_t flag; /* general purpose bit flag 2 bytes */ + uint16_t compression_method; /* compression method 2 bytes */ + uint32_t dos_date; /* last mod file date in Dos fmt 4 bytes */ + uint32_t crc; /* crc-32 4 bytes */ + uint64_t compressed_size; /* compressed size 8 bytes */ + uint64_t uncompressed_size; /* uncompressed size 8 bytes */ + uint16_t size_filename; /* filename length 2 bytes */ + uint16_t size_file_extra; /* extra field length 2 bytes */ + uint16_t size_file_comment; /* file comment length 2 bytes */ + + uint32_t disk_num_start; /* disk number start 4 bytes */ + uint16_t internal_fa; /* internal file attributes 2 bytes */ + uint32_t external_fa; /* external file attributes 4 bytes */ + + uint64_t disk_offset; + + uint16_t size_file_extra_internal; +} unz_file_info64; + +typedef struct unz_file_info_s +{ + uint16_t version; /* version made by 2 bytes */ + uint16_t version_needed; /* version needed to extract 2 bytes */ + uint16_t flag; /* general purpose bit flag 2 bytes */ + uint16_t compression_method; /* compression method 2 bytes */ + uint32_t dos_date; /* last mod file date in Dos fmt 4 bytes */ + uint32_t crc; /* crc-32 4 bytes */ + uint32_t compressed_size; /* compressed size 4 bytes */ + uint32_t uncompressed_size; /* uncompressed size 4 bytes */ + uint16_t size_filename; /* filename length 2 bytes */ + uint16_t size_file_extra; /* extra field length 2 bytes */ + uint16_t size_file_comment; /* file comment length 2 bytes */ + + uint16_t disk_num_start; /* disk number start 2 bytes */ + uint16_t internal_fa; /* internal file attributes 2 bytes */ + uint32_t external_fa; /* external file attributes 4 bytes */ + + uint64_t disk_offset; +} unz_file_info; + +#endif diff --git a/Frameworks/react-native-zip-archive.xcframework/ios-arm64_x86_64-simulator/Headers/ZipArchive.h b/Frameworks/react-native-zip-archive.xcframework/ios-arm64_x86_64-simulator/Headers/ZipArchive.h new file mode 100644 index 0000000..7a53df8 --- /dev/null +++ b/Frameworks/react-native-zip-archive.xcframework/ios-arm64_x86_64-simulator/Headers/ZipArchive.h @@ -0,0 +1,19 @@ +// +// ZipArchive.h +// ZipArchive +// +// Created by Serhii Mumriak on 12/1/15. +// Copyright © 2015 smumryak. All rights reserved. +// + +#import + +//! Project version number for ZipArchive. +FOUNDATION_EXPORT double ZipArchiveVersionNumber; + +//! Project version string for ZipArchive. +FOUNDATION_EXPORT const unsigned char ZipArchiveVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + +#import "SSZipArchive.h" diff --git a/Frameworks/react-native-zip-archive.xcframework/ios-arm64_x86_64-simulator/libreact-native-zip-archive.a b/Frameworks/react-native-zip-archive.xcframework/ios-arm64_x86_64-simulator/libreact-native-zip-archive.a new file mode 100644 index 0000000..db21056 Binary files /dev/null and b/Frameworks/react-native-zip-archive.xcframework/ios-arm64_x86_64-simulator/libreact-native-zip-archive.a differ diff --git a/Frameworks/rn-fetch-blob.xcframework/Info.plist b/Frameworks/rn-fetch-blob.xcframework/Info.plist new file mode 100644 index 0000000..540c783 --- /dev/null +++ b/Frameworks/rn-fetch-blob.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + librn-fetch-blob.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + librn-fetch-blob.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + librn-fetch-blob.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + librn-fetch-blob.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/rn-fetch-blob.xcframework/ios-arm64/Headers/IOS7Polyfill.h b/Frameworks/rn-fetch-blob.xcframework/ios-arm64/Headers/IOS7Polyfill.h new file mode 100644 index 0000000..04a4bfa --- /dev/null +++ b/Frameworks/rn-fetch-blob.xcframework/ios-arm64/Headers/IOS7Polyfill.h @@ -0,0 +1,27 @@ +// +// IOS7Polyfill.h +// RNFetchBlob +// +// Created by Ben Hsieh on 2016/9/6. +// Copyright © 2016年 wkh237.github.io. All rights reserved. +// + +#ifndef IOS7Polyfill_h +#define IOS7Polyfill_h + +@interface NSString (Contains) + +- (BOOL)RNFBContainsString:(NSString*)other; + +@end + +@implementation NSString (Contains) + +- (BOOL)RNFBContainsString:(NSString*)other { + NSRange range = [self rangeOfString:other]; + return range.length != 0; +} + + +@end +#endif /* IOS7Polyfill_h */ diff --git a/Frameworks/rn-fetch-blob.xcframework/ios-arm64/Headers/RNFetchBlob.h b/Frameworks/rn-fetch-blob.xcframework/ios-arm64/Headers/RNFetchBlob.h new file mode 100644 index 0000000..669a093 --- /dev/null +++ b/Frameworks/rn-fetch-blob.xcframework/ios-arm64/Headers/RNFetchBlob.h @@ -0,0 +1,45 @@ +// +// RNFetchBlob.h +// +// Created by wkh237 on 2016/4/28. +// + +//XXX: DO NO REMOVE THIS LINE IF YOU'RE USING IT ON RN > 0.40 PROJECT + + + +#ifndef RNFetchBlob_h +#define RNFetchBlob_h + + +#if __has_include() +#import +#import +#import +#import +#import +#else +#import "RCTBridgeModule.h" +#import "RCTLog.h" +#import "RCTRootView.h" +#import "RCTBridge.h" +#import "RCTEventDispatcher.h" +#endif + +#import + + +@interface RNFetchBlob : NSObject { + + NSString * filePathPrefix; + +} + +@property (nonatomic) NSString * filePathPrefix; +@property (retain) UIDocumentInteractionController * documentController; + ++ (RCTBridge *)getRCTBridge; + +@end + +#endif /* RNFetchBlob_h */ diff --git a/Frameworks/rn-fetch-blob.xcframework/ios-arm64/Headers/RNFetchBlobConst.h b/Frameworks/rn-fetch-blob.xcframework/ios-arm64/Headers/RNFetchBlobConst.h new file mode 100644 index 0000000..6347b7a --- /dev/null +++ b/Frameworks/rn-fetch-blob.xcframework/ios-arm64/Headers/RNFetchBlobConst.h @@ -0,0 +1,55 @@ +// +// RNFetchBlobConst.h +// RNFetchBlob +// +// Created by Ben Hsieh on 2016/6/6. +// Copyright © 2016年 suzuri04x2. All rights reserved. +// + +#ifndef RNFetchBlobConst_h +#define RNFetchBlobConst_h + +#import + +// lib event +extern NSString *const MSG_EVENT; +extern NSString *const MSG_EVENT_LOG; +extern NSString *const MSG_EVENT_WARN; +extern NSString *const MSG_EVENT_ERROR; + +extern NSString *const EVENT_EXPIRE; +extern NSString *const EVENT_PROGRESS; +extern NSString *const EVENT_SERVER_PUSH; +extern NSString *const EVENT_PROGRESS_UPLOAD; +extern NSString *const EVENT_STATE_CHANGE; + +extern NSString *const FILE_PREFIX; +extern NSString *const ASSET_PREFIX; +extern NSString *const AL_PREFIX; + +// config +extern NSString *const CONFIG_USE_TEMP; +extern NSString *const CONFIG_FILE_PATH; +extern NSString *const CONFIG_FILE_EXT; +extern NSString *const CONFIG_TRUSTY; +extern NSString *const CONFIG_INDICATOR; +extern NSString *const CONFIG_KEY; +extern NSString *const CONFIG_EXTRA_BLOB_CTYPE; + +// fs events +extern NSString *const FS_EVENT_DATA; +extern NSString *const FS_EVENT_END; +extern NSString *const FS_EVENT_WARN; +extern NSString *const FS_EVENT_ERROR; + +extern NSString *const KEY_REPORT_PROGRESS; +extern NSString *const KEY_REPORT_UPLOAD_PROGRESS; + +// response type +extern NSString *const RESP_TYPE_BASE64; +extern NSString *const RESP_TYPE_UTF8; +extern NSString *const RESP_TYPE_PATH; + + + +#endif /* RNFetchBlobConst_h */ diff --git a/Frameworks/rn-fetch-blob.xcframework/ios-arm64/Headers/RNFetchBlobFS.h b/Frameworks/rn-fetch-blob.xcframework/ios-arm64/Headers/RNFetchBlobFS.h new file mode 100644 index 0000000..5141201 --- /dev/null +++ b/Frameworks/rn-fetch-blob.xcframework/ios-arm64/Headers/RNFetchBlobFS.h @@ -0,0 +1,109 @@ +// +// RNFetchBlobFS.h +// RNFetchBlob +// +// Created by Ben Hsieh on 2016/6/6. +// Copyright © 2016年 suzuri04x2. All rights reserved. +// + +#ifndef RNFetchBlobFS_h +#define RNFetchBlobFS_h + +#import "RNFetchBlob.h" +#import + +#if __has_include() +#import +#else +#import "RCTBridgeModule.h" +#endif + +@import AssetsLibrary; + +@interface RNFetchBlobFS : NSObject { + NSOutputStream * outStream; + NSInputStream * inStream; + RCTResponseSenderBlock callback; + RCTBridge * bridge; + Boolean isOpen; + NSString * encoding; + int bufferSize; + BOOL appendData; + NSString * taskId; + NSString * path; + NSString * streamId; +} + +@property (nonatomic) NSOutputStream * _Nullable outStream; +@property (nonatomic) NSInputStream * _Nullable inStream; +@property (strong, nonatomic) RCTResponseSenderBlock callback; +@property (nonatomic) RCTBridge * bridge; +@property (nonatomic) NSString * encoding; +@property (nonatomic) NSString * taskId; +@property (nonatomic) NSString * path; +@property (nonatomic) int bufferSize; +@property (nonatomic) NSString * streamId; +@property (nonatomic) BOOL appendData; + +// get dirs ++ (NSString *) getCacheDir; ++ (NSString *) getDocumentDir; ++ (NSString *) getDownloadDir; ++ (NSString *) getLibraryDir; ++ (NSString *) getMainBundleDir; ++ (NSString *) getMovieDir; ++ (NSString *) getMusicDir; ++ (NSString *) getPictureDir; ++ (NSString *) getTempPath; ++ (NSString *) getTempPath:(NSString*)taskId withExtension:(NSString *)ext; ++ (NSString *) getPathOfAsset:(NSString *)assetURI; ++ (NSString *) getPathForAppGroup:(NSString *)groupName; ++ (void) getPathFromUri:(NSString *)uri completionHandler:(void(^)(NSString * path, ALAssetRepresentation *asset)) onComplete; + +// fs methods ++ (RNFetchBlobFS *) getFileStreams; ++ (BOOL) mkdir:(NSString *) path; ++ (void) mkdir:(NSString *) path resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject; ++ (void) hash:(NSString *)path + algorithm:(NSString *)algorithm + resolver:(RCTPromiseResolveBlock)resolve + rejecter:(RCTPromiseRejectBlock)reject; ++ (NSDictionary *) stat:(NSString *) path error:(NSError **) error; ++ (void) exists:(NSString *) path callback:(RCTResponseSenderBlock)callback; ++ (void) writeFileArray:(NSString *)path data:(NSArray *)data append:(BOOL)append resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject; ++ (void) writeFile:(NSString *)path encoding:(NSString *)encoding data:(NSString *)data append:(BOOL)append resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject; ++ (void) readFile:(NSString *)path encoding:(NSString *)encoding onComplete:(void (^)(NSData * content, NSString* code, NSString * errMsg))onComplete; ++ (void) readAssetFile:(NSData *)assetUrl completionBlock:(void(^)(NSData * content))completionBlock failBlock:(void(^)(NSError * err))failBlock; ++ (void) slice:(NSString *)path + dest:(NSString *)dest + start:(nonnull NSNumber *)start + end:(nonnull NSNumber *)end + encode:(NSString *)encode + resolver:(RCTPromiseResolveBlock)resolve + rejecter:(RCTPromiseRejectBlock)reject; +//+ (void) writeFileFromFile:(NSString *)src toFile:(NSString *)dest append:(BOOL)append; ++ (void) writeAssetToPath:(ALAssetRepresentation * )rep dest:(NSString *)dest; ++ (void) readStream:(NSString *)uri encoding:(NSString * )encoding bufferSize:(int)bufferSize tick:(int)tick streamId:(NSString *)streamId bridgeRef:(RCTBridge *)bridgeRef; ++ (void) df:(RCTResponseSenderBlock)callback; + +// constructor +- (id) init; +- (id)initWithCallback:(RCTResponseSenderBlock)callback; +- (id)initWithBridgeRef:(RCTBridge *)bridgeRef; + +// file stream +- (void) openWithDestination; +- (NSString *)openWithPath:(NSString *)destPath encode:(nullable NSString *)encode appendData:(BOOL)append; + +// file stream write data +- (void)write:(NSData *) chunk; +- (void)writeEncodeChunk:(NSString *) chunk; + +- (void) closeInStream; +- (void) closeOutStream; + +- (void) openFile:( NSString * _Nonnull ) uri; + +@end + +#endif /* RNFetchBlobFS_h */ diff --git a/Frameworks/rn-fetch-blob.xcframework/ios-arm64/Headers/RNFetchBlobNetwork.h b/Frameworks/rn-fetch-blob.xcframework/ios-arm64/Headers/RNFetchBlobNetwork.h new file mode 100644 index 0000000..ff4cd9c --- /dev/null +++ b/Frameworks/rn-fetch-blob.xcframework/ios-arm64/Headers/RNFetchBlobNetwork.h @@ -0,0 +1,50 @@ +// +// RNFetchBlobNetwork.h +// RNFetchBlob +// +// Created by wkh237 on 2016/6/6. +// Copyright © 2016 wkh237. All rights reserved. +// + +#ifndef RNFetchBlobNetwork_h +#define RNFetchBlobNetwork_h + +#import +#import "RNFetchBlobProgress.h" +#import "RNFetchBlobFS.h" +#import "RNFetchBlobRequest.h" + +#if __has_include() +#import +#else +#import "RCTBridgeModule.h" +#endif + + +@interface RNFetchBlobNetwork : NSObject + +@property(nonnull, nonatomic) NSOperationQueue *taskQueue; +@property(nonnull, nonatomic) NSMapTable * requestsTable; +@property(nonnull, nonatomic) NSMutableDictionary *rebindProgressDict; +@property(nonnull, nonatomic) NSMutableDictionary *rebindUploadProgressDict; + ++ (RNFetchBlobNetwork* _Nullable)sharedInstance; ++ (NSMutableDictionary * _Nullable ) normalizeHeaders:(NSDictionary * _Nullable)headers; ++ (void) emitExpiredTasks; + +- (nullable id) init; +- (void) sendRequest:(NSDictionary * _Nullable )options + contentLength:(long)contentLength + bridge:(RCTBridge * _Nullable)bridgeRef + taskId:(NSString * _Nullable)taskId + withRequest:(NSURLRequest * _Nullable)req + callback:(_Nullable RCTResponseSenderBlock) callback; +- (void) cancelRequest:(NSString * _Nonnull)taskId; +- (void) enableProgressReport:(NSString * _Nonnull) taskId config:(RNFetchBlobProgress * _Nullable)config; +- (void) enableUploadProgress:(NSString * _Nonnull) taskId config:(RNFetchBlobProgress * _Nullable)config; + + +@end + + +#endif /* RNFetchBlobNetwork_h */ diff --git a/Frameworks/rn-fetch-blob.xcframework/ios-arm64/Headers/RNFetchBlobProgress.h b/Frameworks/rn-fetch-blob.xcframework/ios-arm64/Headers/RNFetchBlobProgress.h new file mode 100644 index 0000000..63f5cb4 --- /dev/null +++ b/Frameworks/rn-fetch-blob.xcframework/ios-arm64/Headers/RNFetchBlobProgress.h @@ -0,0 +1,39 @@ +// +// RNFetchBlobProgress.h +// RNFetchBlob +// +// Created by Ben Hsieh on 2016/9/25. +// Copyright © 2016年 wkh237.github.io. All rights reserved. +// + +#ifndef RNFetchBlobProgress_h +#define RNFetchBlobProgress_h + +#import + +typedef NS_ENUM(NSUInteger, ProgressType) { + Download, + Upload, +}; + +@interface RNFetchBlobProgress : NSObject +{ + NSNumber * count; + NSNumber * interval; + ProgressType type; + BOOL enable; + +} + +@property (nonatomic) NSNumber * count; +@property (nonatomic) NSNumber * interval; +@property (nonatomic) NSInteger type; +@property (nonatomic) BOOL enable; + +-(id)initWithType:(ProgressType)type interval:(NSNumber*)interval count:(NSNumber *)count; +-(BOOL)shouldReport:(NSNumber *) nextProgress; + + +@end + +#endif /* RNFetchBlobProgress_h */ diff --git a/Frameworks/rn-fetch-blob.xcframework/ios-arm64/Headers/RNFetchBlobReqBuilder.h b/Frameworks/rn-fetch-blob.xcframework/ios-arm64/Headers/RNFetchBlobReqBuilder.h new file mode 100644 index 0000000..1edc3ff --- /dev/null +++ b/Frameworks/rn-fetch-blob.xcframework/ios-arm64/Headers/RNFetchBlobReqBuilder.h @@ -0,0 +1,37 @@ +// +// RNFetchBlobReqBuilder.h +// RNFetchBlob +// +// Created by Ben Hsieh on 2016/7/9. +// Copyright © 2016年 wkh237. All rights reserved. +// + +#ifndef RNFetchBlobReqBuilder_h +#define RNFetchBlobReqBuilder_h + +#import + +@interface RNFetchBlobReqBuilder : NSObject; + ++(void) buildMultipartRequest:(NSDictionary *)options + taskId:(NSString *)taskId + method:(NSString *)method + url:(NSString *)url + headers:(NSDictionary *)headers + form:(NSArray *)form + onComplete:(void(^)(NSURLRequest * req, long bodyLength))onComplete; + ++(void) buildOctetRequest:(NSDictionary *)options + taskId:(NSString *)taskId + method:(NSString *)method + url:(NSString *)url + headers:(NSDictionary *)headers + body:(NSString *)body + onComplete:(void(^)(NSURLRequest * req, long bodyLength))onComplete; + ++(NSString *) getHeaderIgnoreCases:(NSString *)field fromHeaders:(NSDictionary *) headers; + + +@end + +#endif /* RNFetchBlobReqBuilder_h */ diff --git a/Frameworks/rn-fetch-blob.xcframework/ios-arm64/Headers/RNFetchBlobRequest.h b/Frameworks/rn-fetch-blob.xcframework/ios-arm64/Headers/RNFetchBlobRequest.h new file mode 100644 index 0000000..b550ac2 --- /dev/null +++ b/Frameworks/rn-fetch-blob.xcframework/ios-arm64/Headers/RNFetchBlobRequest.h @@ -0,0 +1,47 @@ +// +// RNFetchBlobRequest.h +// RNFetchBlob +// +// Created by Artur Chrusciel on 15.01.18. +// Copyright © 2018 wkh237.github.io. All rights reserved. +// + +#ifndef RNFetchBlobRequest_h +#define RNFetchBlobRequest_h + +#import + +#import "RNFetchBlobProgress.h" + +#if __has_include() +#import +#else +#import "RCTBridgeModule.h" +#endif + +@interface RNFetchBlobRequest : NSObject + +@property (nullable, nonatomic) NSString * taskId; +@property (nonatomic) long long expectedBytes; +@property (nonatomic) long long receivedBytes; +@property (nonatomic) BOOL isServerPush; +@property (nullable, nonatomic) NSMutableData * respData; +@property (nullable, strong, nonatomic) RCTResponseSenderBlock callback; +@property (nullable, nonatomic) RCTBridge * bridge; +@property (nullable, nonatomic) NSDictionary * options; +@property (nullable, nonatomic) NSError * error; +@property (nullable, nonatomic) RNFetchBlobProgress *progressConfig; +@property (nullable, nonatomic) RNFetchBlobProgress *uploadProgressConfig; +@property (nullable, nonatomic, weak) NSURLSessionDataTask *task; + +- (void) sendRequest:(NSDictionary * _Nullable )options + contentLength:(long)contentLength + bridge:(RCTBridge * _Nullable)bridgeRef + taskId:(NSString * _Nullable)taskId + withRequest:(NSURLRequest * _Nullable)req + taskOperationQueue:(NSOperationQueue * _Nonnull)operationQueue + callback:(_Nullable RCTResponseSenderBlock) callback; + +@end + +#endif /* RNFetchBlobRequest_h */ diff --git a/Frameworks/rn-fetch-blob.xcframework/ios-arm64/librn-fetch-blob.a b/Frameworks/rn-fetch-blob.xcframework/ios-arm64/librn-fetch-blob.a new file mode 100644 index 0000000..39815cb Binary files /dev/null and b/Frameworks/rn-fetch-blob.xcframework/ios-arm64/librn-fetch-blob.a differ diff --git a/Frameworks/rn-fetch-blob.xcframework/ios-arm64_x86_64-simulator/Headers/IOS7Polyfill.h b/Frameworks/rn-fetch-blob.xcframework/ios-arm64_x86_64-simulator/Headers/IOS7Polyfill.h new file mode 100644 index 0000000..04a4bfa --- /dev/null +++ b/Frameworks/rn-fetch-blob.xcframework/ios-arm64_x86_64-simulator/Headers/IOS7Polyfill.h @@ -0,0 +1,27 @@ +// +// IOS7Polyfill.h +// RNFetchBlob +// +// Created by Ben Hsieh on 2016/9/6. +// Copyright © 2016年 wkh237.github.io. All rights reserved. +// + +#ifndef IOS7Polyfill_h +#define IOS7Polyfill_h + +@interface NSString (Contains) + +- (BOOL)RNFBContainsString:(NSString*)other; + +@end + +@implementation NSString (Contains) + +- (BOOL)RNFBContainsString:(NSString*)other { + NSRange range = [self rangeOfString:other]; + return range.length != 0; +} + + +@end +#endif /* IOS7Polyfill_h */ diff --git a/Frameworks/rn-fetch-blob.xcframework/ios-arm64_x86_64-simulator/Headers/RNFetchBlob.h b/Frameworks/rn-fetch-blob.xcframework/ios-arm64_x86_64-simulator/Headers/RNFetchBlob.h new file mode 100644 index 0000000..669a093 --- /dev/null +++ b/Frameworks/rn-fetch-blob.xcframework/ios-arm64_x86_64-simulator/Headers/RNFetchBlob.h @@ -0,0 +1,45 @@ +// +// RNFetchBlob.h +// +// Created by wkh237 on 2016/4/28. +// + +//XXX: DO NO REMOVE THIS LINE IF YOU'RE USING IT ON RN > 0.40 PROJECT + + + +#ifndef RNFetchBlob_h +#define RNFetchBlob_h + + +#if __has_include() +#import +#import +#import +#import +#import +#else +#import "RCTBridgeModule.h" +#import "RCTLog.h" +#import "RCTRootView.h" +#import "RCTBridge.h" +#import "RCTEventDispatcher.h" +#endif + +#import + + +@interface RNFetchBlob : NSObject { + + NSString * filePathPrefix; + +} + +@property (nonatomic) NSString * filePathPrefix; +@property (retain) UIDocumentInteractionController * documentController; + ++ (RCTBridge *)getRCTBridge; + +@end + +#endif /* RNFetchBlob_h */ diff --git a/Frameworks/rn-fetch-blob.xcframework/ios-arm64_x86_64-simulator/Headers/RNFetchBlobConst.h b/Frameworks/rn-fetch-blob.xcframework/ios-arm64_x86_64-simulator/Headers/RNFetchBlobConst.h new file mode 100644 index 0000000..6347b7a --- /dev/null +++ b/Frameworks/rn-fetch-blob.xcframework/ios-arm64_x86_64-simulator/Headers/RNFetchBlobConst.h @@ -0,0 +1,55 @@ +// +// RNFetchBlobConst.h +// RNFetchBlob +// +// Created by Ben Hsieh on 2016/6/6. +// Copyright © 2016年 suzuri04x2. All rights reserved. +// + +#ifndef RNFetchBlobConst_h +#define RNFetchBlobConst_h + +#import + +// lib event +extern NSString *const MSG_EVENT; +extern NSString *const MSG_EVENT_LOG; +extern NSString *const MSG_EVENT_WARN; +extern NSString *const MSG_EVENT_ERROR; + +extern NSString *const EVENT_EXPIRE; +extern NSString *const EVENT_PROGRESS; +extern NSString *const EVENT_SERVER_PUSH; +extern NSString *const EVENT_PROGRESS_UPLOAD; +extern NSString *const EVENT_STATE_CHANGE; + +extern NSString *const FILE_PREFIX; +extern NSString *const ASSET_PREFIX; +extern NSString *const AL_PREFIX; + +// config +extern NSString *const CONFIG_USE_TEMP; +extern NSString *const CONFIG_FILE_PATH; +extern NSString *const CONFIG_FILE_EXT; +extern NSString *const CONFIG_TRUSTY; +extern NSString *const CONFIG_INDICATOR; +extern NSString *const CONFIG_KEY; +extern NSString *const CONFIG_EXTRA_BLOB_CTYPE; + +// fs events +extern NSString *const FS_EVENT_DATA; +extern NSString *const FS_EVENT_END; +extern NSString *const FS_EVENT_WARN; +extern NSString *const FS_EVENT_ERROR; + +extern NSString *const KEY_REPORT_PROGRESS; +extern NSString *const KEY_REPORT_UPLOAD_PROGRESS; + +// response type +extern NSString *const RESP_TYPE_BASE64; +extern NSString *const RESP_TYPE_UTF8; +extern NSString *const RESP_TYPE_PATH; + + + +#endif /* RNFetchBlobConst_h */ diff --git a/Frameworks/rn-fetch-blob.xcframework/ios-arm64_x86_64-simulator/Headers/RNFetchBlobFS.h b/Frameworks/rn-fetch-blob.xcframework/ios-arm64_x86_64-simulator/Headers/RNFetchBlobFS.h new file mode 100644 index 0000000..5141201 --- /dev/null +++ b/Frameworks/rn-fetch-blob.xcframework/ios-arm64_x86_64-simulator/Headers/RNFetchBlobFS.h @@ -0,0 +1,109 @@ +// +// RNFetchBlobFS.h +// RNFetchBlob +// +// Created by Ben Hsieh on 2016/6/6. +// Copyright © 2016年 suzuri04x2. All rights reserved. +// + +#ifndef RNFetchBlobFS_h +#define RNFetchBlobFS_h + +#import "RNFetchBlob.h" +#import + +#if __has_include() +#import +#else +#import "RCTBridgeModule.h" +#endif + +@import AssetsLibrary; + +@interface RNFetchBlobFS : NSObject { + NSOutputStream * outStream; + NSInputStream * inStream; + RCTResponseSenderBlock callback; + RCTBridge * bridge; + Boolean isOpen; + NSString * encoding; + int bufferSize; + BOOL appendData; + NSString * taskId; + NSString * path; + NSString * streamId; +} + +@property (nonatomic) NSOutputStream * _Nullable outStream; +@property (nonatomic) NSInputStream * _Nullable inStream; +@property (strong, nonatomic) RCTResponseSenderBlock callback; +@property (nonatomic) RCTBridge * bridge; +@property (nonatomic) NSString * encoding; +@property (nonatomic) NSString * taskId; +@property (nonatomic) NSString * path; +@property (nonatomic) int bufferSize; +@property (nonatomic) NSString * streamId; +@property (nonatomic) BOOL appendData; + +// get dirs ++ (NSString *) getCacheDir; ++ (NSString *) getDocumentDir; ++ (NSString *) getDownloadDir; ++ (NSString *) getLibraryDir; ++ (NSString *) getMainBundleDir; ++ (NSString *) getMovieDir; ++ (NSString *) getMusicDir; ++ (NSString *) getPictureDir; ++ (NSString *) getTempPath; ++ (NSString *) getTempPath:(NSString*)taskId withExtension:(NSString *)ext; ++ (NSString *) getPathOfAsset:(NSString *)assetURI; ++ (NSString *) getPathForAppGroup:(NSString *)groupName; ++ (void) getPathFromUri:(NSString *)uri completionHandler:(void(^)(NSString * path, ALAssetRepresentation *asset)) onComplete; + +// fs methods ++ (RNFetchBlobFS *) getFileStreams; ++ (BOOL) mkdir:(NSString *) path; ++ (void) mkdir:(NSString *) path resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject; ++ (void) hash:(NSString *)path + algorithm:(NSString *)algorithm + resolver:(RCTPromiseResolveBlock)resolve + rejecter:(RCTPromiseRejectBlock)reject; ++ (NSDictionary *) stat:(NSString *) path error:(NSError **) error; ++ (void) exists:(NSString *) path callback:(RCTResponseSenderBlock)callback; ++ (void) writeFileArray:(NSString *)path data:(NSArray *)data append:(BOOL)append resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject; ++ (void) writeFile:(NSString *)path encoding:(NSString *)encoding data:(NSString *)data append:(BOOL)append resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject; ++ (void) readFile:(NSString *)path encoding:(NSString *)encoding onComplete:(void (^)(NSData * content, NSString* code, NSString * errMsg))onComplete; ++ (void) readAssetFile:(NSData *)assetUrl completionBlock:(void(^)(NSData * content))completionBlock failBlock:(void(^)(NSError * err))failBlock; ++ (void) slice:(NSString *)path + dest:(NSString *)dest + start:(nonnull NSNumber *)start + end:(nonnull NSNumber *)end + encode:(NSString *)encode + resolver:(RCTPromiseResolveBlock)resolve + rejecter:(RCTPromiseRejectBlock)reject; +//+ (void) writeFileFromFile:(NSString *)src toFile:(NSString *)dest append:(BOOL)append; ++ (void) writeAssetToPath:(ALAssetRepresentation * )rep dest:(NSString *)dest; ++ (void) readStream:(NSString *)uri encoding:(NSString * )encoding bufferSize:(int)bufferSize tick:(int)tick streamId:(NSString *)streamId bridgeRef:(RCTBridge *)bridgeRef; ++ (void) df:(RCTResponseSenderBlock)callback; + +// constructor +- (id) init; +- (id)initWithCallback:(RCTResponseSenderBlock)callback; +- (id)initWithBridgeRef:(RCTBridge *)bridgeRef; + +// file stream +- (void) openWithDestination; +- (NSString *)openWithPath:(NSString *)destPath encode:(nullable NSString *)encode appendData:(BOOL)append; + +// file stream write data +- (void)write:(NSData *) chunk; +- (void)writeEncodeChunk:(NSString *) chunk; + +- (void) closeInStream; +- (void) closeOutStream; + +- (void) openFile:( NSString * _Nonnull ) uri; + +@end + +#endif /* RNFetchBlobFS_h */ diff --git a/Frameworks/rn-fetch-blob.xcframework/ios-arm64_x86_64-simulator/Headers/RNFetchBlobNetwork.h b/Frameworks/rn-fetch-blob.xcframework/ios-arm64_x86_64-simulator/Headers/RNFetchBlobNetwork.h new file mode 100644 index 0000000..ff4cd9c --- /dev/null +++ b/Frameworks/rn-fetch-blob.xcframework/ios-arm64_x86_64-simulator/Headers/RNFetchBlobNetwork.h @@ -0,0 +1,50 @@ +// +// RNFetchBlobNetwork.h +// RNFetchBlob +// +// Created by wkh237 on 2016/6/6. +// Copyright © 2016 wkh237. All rights reserved. +// + +#ifndef RNFetchBlobNetwork_h +#define RNFetchBlobNetwork_h + +#import +#import "RNFetchBlobProgress.h" +#import "RNFetchBlobFS.h" +#import "RNFetchBlobRequest.h" + +#if __has_include() +#import +#else +#import "RCTBridgeModule.h" +#endif + + +@interface RNFetchBlobNetwork : NSObject + +@property(nonnull, nonatomic) NSOperationQueue *taskQueue; +@property(nonnull, nonatomic) NSMapTable * requestsTable; +@property(nonnull, nonatomic) NSMutableDictionary *rebindProgressDict; +@property(nonnull, nonatomic) NSMutableDictionary *rebindUploadProgressDict; + ++ (RNFetchBlobNetwork* _Nullable)sharedInstance; ++ (NSMutableDictionary * _Nullable ) normalizeHeaders:(NSDictionary * _Nullable)headers; ++ (void) emitExpiredTasks; + +- (nullable id) init; +- (void) sendRequest:(NSDictionary * _Nullable )options + contentLength:(long)contentLength + bridge:(RCTBridge * _Nullable)bridgeRef + taskId:(NSString * _Nullable)taskId + withRequest:(NSURLRequest * _Nullable)req + callback:(_Nullable RCTResponseSenderBlock) callback; +- (void) cancelRequest:(NSString * _Nonnull)taskId; +- (void) enableProgressReport:(NSString * _Nonnull) taskId config:(RNFetchBlobProgress * _Nullable)config; +- (void) enableUploadProgress:(NSString * _Nonnull) taskId config:(RNFetchBlobProgress * _Nullable)config; + + +@end + + +#endif /* RNFetchBlobNetwork_h */ diff --git a/Frameworks/rn-fetch-blob.xcframework/ios-arm64_x86_64-simulator/Headers/RNFetchBlobProgress.h b/Frameworks/rn-fetch-blob.xcframework/ios-arm64_x86_64-simulator/Headers/RNFetchBlobProgress.h new file mode 100644 index 0000000..63f5cb4 --- /dev/null +++ b/Frameworks/rn-fetch-blob.xcframework/ios-arm64_x86_64-simulator/Headers/RNFetchBlobProgress.h @@ -0,0 +1,39 @@ +// +// RNFetchBlobProgress.h +// RNFetchBlob +// +// Created by Ben Hsieh on 2016/9/25. +// Copyright © 2016年 wkh237.github.io. All rights reserved. +// + +#ifndef RNFetchBlobProgress_h +#define RNFetchBlobProgress_h + +#import + +typedef NS_ENUM(NSUInteger, ProgressType) { + Download, + Upload, +}; + +@interface RNFetchBlobProgress : NSObject +{ + NSNumber * count; + NSNumber * interval; + ProgressType type; + BOOL enable; + +} + +@property (nonatomic) NSNumber * count; +@property (nonatomic) NSNumber * interval; +@property (nonatomic) NSInteger type; +@property (nonatomic) BOOL enable; + +-(id)initWithType:(ProgressType)type interval:(NSNumber*)interval count:(NSNumber *)count; +-(BOOL)shouldReport:(NSNumber *) nextProgress; + + +@end + +#endif /* RNFetchBlobProgress_h */ diff --git a/Frameworks/rn-fetch-blob.xcframework/ios-arm64_x86_64-simulator/Headers/RNFetchBlobReqBuilder.h b/Frameworks/rn-fetch-blob.xcframework/ios-arm64_x86_64-simulator/Headers/RNFetchBlobReqBuilder.h new file mode 100644 index 0000000..1edc3ff --- /dev/null +++ b/Frameworks/rn-fetch-blob.xcframework/ios-arm64_x86_64-simulator/Headers/RNFetchBlobReqBuilder.h @@ -0,0 +1,37 @@ +// +// RNFetchBlobReqBuilder.h +// RNFetchBlob +// +// Created by Ben Hsieh on 2016/7/9. +// Copyright © 2016年 wkh237. All rights reserved. +// + +#ifndef RNFetchBlobReqBuilder_h +#define RNFetchBlobReqBuilder_h + +#import + +@interface RNFetchBlobReqBuilder : NSObject; + ++(void) buildMultipartRequest:(NSDictionary *)options + taskId:(NSString *)taskId + method:(NSString *)method + url:(NSString *)url + headers:(NSDictionary *)headers + form:(NSArray *)form + onComplete:(void(^)(NSURLRequest * req, long bodyLength))onComplete; + ++(void) buildOctetRequest:(NSDictionary *)options + taskId:(NSString *)taskId + method:(NSString *)method + url:(NSString *)url + headers:(NSDictionary *)headers + body:(NSString *)body + onComplete:(void(^)(NSURLRequest * req, long bodyLength))onComplete; + ++(NSString *) getHeaderIgnoreCases:(NSString *)field fromHeaders:(NSDictionary *) headers; + + +@end + +#endif /* RNFetchBlobReqBuilder_h */ diff --git a/Frameworks/rn-fetch-blob.xcframework/ios-arm64_x86_64-simulator/Headers/RNFetchBlobRequest.h b/Frameworks/rn-fetch-blob.xcframework/ios-arm64_x86_64-simulator/Headers/RNFetchBlobRequest.h new file mode 100644 index 0000000..b550ac2 --- /dev/null +++ b/Frameworks/rn-fetch-blob.xcframework/ios-arm64_x86_64-simulator/Headers/RNFetchBlobRequest.h @@ -0,0 +1,47 @@ +// +// RNFetchBlobRequest.h +// RNFetchBlob +// +// Created by Artur Chrusciel on 15.01.18. +// Copyright © 2018 wkh237.github.io. All rights reserved. +// + +#ifndef RNFetchBlobRequest_h +#define RNFetchBlobRequest_h + +#import + +#import "RNFetchBlobProgress.h" + +#if __has_include() +#import +#else +#import "RCTBridgeModule.h" +#endif + +@interface RNFetchBlobRequest : NSObject + +@property (nullable, nonatomic) NSString * taskId; +@property (nonatomic) long long expectedBytes; +@property (nonatomic) long long receivedBytes; +@property (nonatomic) BOOL isServerPush; +@property (nullable, nonatomic) NSMutableData * respData; +@property (nullable, strong, nonatomic) RCTResponseSenderBlock callback; +@property (nullable, nonatomic) RCTBridge * bridge; +@property (nullable, nonatomic) NSDictionary * options; +@property (nullable, nonatomic) NSError * error; +@property (nullable, nonatomic) RNFetchBlobProgress *progressConfig; +@property (nullable, nonatomic) RNFetchBlobProgress *uploadProgressConfig; +@property (nullable, nonatomic, weak) NSURLSessionDataTask *task; + +- (void) sendRequest:(NSDictionary * _Nullable )options + contentLength:(long)contentLength + bridge:(RCTBridge * _Nullable)bridgeRef + taskId:(NSString * _Nullable)taskId + withRequest:(NSURLRequest * _Nullable)req + taskOperationQueue:(NSOperationQueue * _Nonnull)operationQueue + callback:(_Nullable RCTResponseSenderBlock) callback; + +@end + +#endif /* RNFetchBlobRequest_h */ diff --git a/Frameworks/rn-fetch-blob.xcframework/ios-arm64_x86_64-simulator/librn-fetch-blob.a b/Frameworks/rn-fetch-blob.xcframework/ios-arm64_x86_64-simulator/librn-fetch-blob.a new file mode 100644 index 0000000..059ea11 Binary files /dev/null and b/Frameworks/rn-fetch-blob.xcframework/ios-arm64_x86_64-simulator/librn-fetch-blob.a differ diff --git a/NewsmemorySDK.podspec b/NewsmemorySDK.podspec index 5294bf2..c7cc634 100644 --- a/NewsmemorySDK.podspec +++ b/NewsmemorySDK.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'NewsmemorySDK' - s.version = '3.13.00' + s.version = '3.13.01' s.description = 'Components and configuration for Tecnavia Newsmemory ePaper solution SDK.' s.summary = 'Components for Tecnavia Newsmemory SDK.' s.homepage = 'https://www.tecnavia.com' diff --git a/README.md b/README.md index 9f6f4a4..e375f27 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ If you are not using Cocoapods in your project, follow the instruction of the se Remember to: - add the source to our specs repo - - replace `X.Y.Z` with the pod version provided (ex. 3.13.00) + - replace `X.Y.Z` with the pod version provided (ex. 3.13.01) ``` ... @@ -88,7 +88,7 @@ Host tecnavia-repo-sdk Remember to: - add the source to our specs repo - - replace `X.Y.Z` with the pod version provided (ex. 3.13.00) + - replace `X.Y.Z` with the pod version provided (ex. 3.13.01) ``` ... @@ -110,12 +110,12 @@ end #### Get the SDK thru zip file -Tecnavia provides you a zip package named `ta-newsmemory-sdk_XYZ`, where XYZ stands for the package version (ex. 31300, means that the SDK version is 3.13.00). +Tecnavia provides you a zip package named `ta-newsmemory-sdk_XYZ`, where XYZ stands for the package version (ex. 31301, means that the SDK version is 3.13.01). 1. Unzip the package and copy the `ta-newsmemory-sdk_XYZ` folder in the folder containing your project's `Podfile` file. 2. Add the following lines inside your target declaration in your `Podfile`. - Notice that `XYZ` stands for the package version (ex. 31300) + Notice that `XYZ` stands for the package version (ex. 31301) ``` ... @@ -141,7 +141,7 @@ end #### Package contents -Tecnavia provides you a zip package named `ta-newsmemory-sdk_XYZ`, where XYZ stands for the package version (ex. 31300, means that the SDK version is 3.13.00). +Tecnavia provides you a zip package named `ta-newsmemory-sdk_XYZ`, where XYZ stands for the package version (ex. 31301, means that the SDK version is 3.13.01). Unzip the package and copy the `ta-newsmemory-sdk_XYZ` folder in the folder containing your project's `.xcodeproj` file (i.e. the SDK folder must be at the same level of the project file). @@ -519,9 +519,9 @@ To fix simply add a blank .swift file and let xCode generate the corresponding b ``` [!] CocoaPods could not find compatible versions for pod "NewsmemorySDK": In Podfile: - NewsmemorySDK (= 3.13.00) + NewsmemorySDK (= 3.13.01) -None of your spec sources contain a spec satisfying the dependency: `NewsmemorySDK (= 3.13.00)`. +None of your spec sources contain a spec satisfying the dependency: `NewsmemorySDK (= 3.13.01)`. You have either: * out-of-date source repos which you can update with `pod repo update` or with `pod install --repo-update`.