react-nitro-renderer 0.0.0-stage → 0.0.1-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/Package.swift +104 -0
- package/README.md +111 -2
- package/Sources/ReactNitroRenderer/Animations/AnimationCurve+toUIAnimationCurve.swift +31 -0
- package/Sources/ReactNitroRenderer/Animations/HybridAnimator.swift +36 -0
- package/Sources/ReactNitroRenderer/Animations/View+Animations.swift +39 -0
- package/Sources/ReactNitroRenderer/Components/HybridLabel.swift +89 -0
- package/Sources/ReactNitroRenderer/Components/HybridScrollView.swift +21 -0
- package/Sources/ReactNitroRenderer/Components/HybridScrollViewContent.swift +36 -0
- package/Sources/ReactNitroRenderer/Components/HybridView.swift +22 -0
- package/Sources/ReactNitroRenderer/Components/View.swift +267 -0
- package/Sources/ReactNitroRenderer/CustomViewController.swift +36 -0
- package/Sources/ReactNitroRenderer/Extensions/Corner+toCACornerMask.swift +16 -0
- package/Sources/ReactNitroRenderer/Extensions/CornerCurve+toUICornerCurve.swift +23 -0
- package/Sources/ReactNitroRenderer/Extensions/EdgeInsets+UIEdgeInsets.swift +7 -0
- package/Sources/ReactNitroRenderer/Extensions/ModifierKey+toUIKeyModifierFlags.swift +31 -0
- package/Sources/ReactNitroRenderer/Extensions/Point+CGPoint.swift +15 -0
- package/Sources/ReactNitroRenderer/Extensions/UIGestureRecognizerState+toUIGestureRecognizerState.swift +39 -0
- package/Sources/ReactNitroRenderer/Gestures/HybridGestureRecognizer.swift +40 -0
- package/Sources/ReactNitroRenderer/Gestures/HybridLongPressGestureRecognizer.swift +53 -0
- package/Sources/ReactNitroRenderer/Gestures/HybridPanGestureRecognizer.swift +52 -0
- package/Sources/ReactNitroRenderer/Gestures/HybridTapGestureRecognizer.swift +42 -0
- package/Sources/ReactNitroRenderer/HybridApplication.swift +19 -0
- package/Sources/ReactNitroRenderer/HybridScreen.swift +22 -0
- package/Sources/ReactNitroRenderer/HybridViewController.swift +66 -0
- package/Sources/ReactNitroRenderer/HybridWindow.swift +25 -0
- package/Sources/ReactNitroRenderer/HybridWindowScene.swift +16 -0
- package/Sources/ReactNitroRenderer/RegisterRootCallback.swift +28 -0
- package/Sources/ReactNitroRenderer/RuntimeReloadableAppDelegate.swift +14 -0
- package/Sources/ReactNitroRenderer/SafeAreaInsetsListeners.swift +22 -0
- package/Sources/ReactNitroRenderer/UIColor+initRGBA.swift +10 -0
- package/Sources/ReactNitroRenderer/UIColor+rgba.swift +20 -0
- package/Sources/ReactNitroRenderer/ViewController.swift +13 -0
- package/Sources/ReactNitroRenderer/Window.swift +12 -0
- package/Sources/ReactNitroRenderer/WindowScene.swift +12 -0
- package/Sources/ReactNitroRenderer/YGNode.swift +46 -0
- package/nitrogen/generated/.gitattributes +1 -0
- package/nitrogen/generated/apple/ReactNitroRenderer-Swift-Cxx-Bridge.cpp +376 -0
- package/nitrogen/generated/apple/ReactNitroRendererAppleCxx/ReactNitroRendererAppleCxx.cpp +9 -0
- package/nitrogen/generated/apple/ReactNitroRendererAppleCxx/include/ReactNitroRendererAppleCxx/ReactNitroRendererAppleCxx.h +245 -0
- package/nitrogen/generated/apple/ReactNitroRendererAutolinking.cpp +46 -0
- package/nitrogen/generated/apple/ReactNitroRendererAutolinking.mm +24 -0
- package/nitrogen/generated/apple/c++/AnimationCurve-Swift.cpp +42 -0
- package/nitrogen/generated/apple/c++/Corner-Swift.cpp +52 -0
- package/nitrogen/generated/apple/c++/CornerCurve-Swift.cpp +46 -0
- package/nitrogen/generated/apple/c++/EdgeInsets-Swift.cpp +35 -0
- package/nitrogen/generated/apple/c++/Frame-Swift.cpp +35 -0
- package/nitrogen/generated/apple/c++/GestureRecognizerState-Swift.cpp +44 -0
- package/nitrogen/generated/apple/c++/HybridAnimatorSpecSwift.cpp +53 -0
- package/nitrogen/generated/apple/c++/HybridAnimatorSpec_cxx-Swift.cpp +28 -0
- package/nitrogen/generated/apple/c++/HybridApplicationSpecSwift.cpp +58 -0
- package/nitrogen/generated/apple/c++/HybridApplicationSpec_cxx-Swift.cpp +28 -0
- package/nitrogen/generated/apple/c++/HybridGestureRecognizerSpecSwift.cpp +48 -0
- package/nitrogen/generated/apple/c++/HybridGestureRecognizerSpec_cxx-Swift.cpp +28 -0
- package/nitrogen/generated/apple/c++/HybridLabelSpecSwift.cpp +49 -0
- package/nitrogen/generated/apple/c++/HybridLabelSpec_cxx-Swift.cpp +28 -0
- package/nitrogen/generated/apple/c++/HybridLongPressGestureRecognizerSpecSwift.cpp +85 -0
- package/nitrogen/generated/apple/c++/HybridLongPressGestureRecognizerSpec_cxx-Swift.cpp +28 -0
- package/nitrogen/generated/apple/c++/HybridPanGestureRecognizerSpecSwift.cpp +89 -0
- package/nitrogen/generated/apple/c++/HybridPanGestureRecognizerSpec_cxx-Swift.cpp +28 -0
- package/nitrogen/generated/apple/c++/HybridScreenSpecSwift.cpp +44 -0
- package/nitrogen/generated/apple/c++/HybridScreenSpec_cxx-Swift.cpp +28 -0
- package/nitrogen/generated/apple/c++/HybridScrollViewContentSpecSwift.cpp +40 -0
- package/nitrogen/generated/apple/c++/HybridScrollViewContentSpec_cxx-Swift.cpp +28 -0
- package/nitrogen/generated/apple/c++/HybridScrollViewSpecSwift.cpp +40 -0
- package/nitrogen/generated/apple/c++/HybridScrollViewSpec_cxx-Swift.cpp +28 -0
- package/nitrogen/generated/apple/c++/HybridTapGestureRecognizerSpecSwift.cpp +67 -0
- package/nitrogen/generated/apple/c++/HybridTapGestureRecognizerSpec_cxx-Swift.cpp +28 -0
- package/nitrogen/generated/apple/c++/HybridViewControllerSpecSwift.cpp +91 -0
- package/nitrogen/generated/apple/c++/HybridViewControllerSpec_cxx-Swift.cpp +28 -0
- package/nitrogen/generated/apple/c++/HybridViewSpecSwift.cpp +231 -0
- package/nitrogen/generated/apple/c++/HybridViewSpec_cxx-Swift.cpp +28 -0
- package/nitrogen/generated/apple/c++/HybridWindowSceneSpecSwift.cpp +34 -0
- package/nitrogen/generated/apple/c++/HybridWindowSceneSpec_cxx-Swift.cpp +28 -0
- package/nitrogen/generated/apple/c++/HybridWindowSpecSwift.cpp +53 -0
- package/nitrogen/generated/apple/c++/HybridWindowSpec_cxx-Swift.cpp +28 -0
- package/nitrogen/generated/apple/c++/ListenerSubscription-Swift.cpp +37 -0
- package/nitrogen/generated/apple/c++/ModifierKey-Swift.cpp +52 -0
- package/nitrogen/generated/apple/c++/Point-Swift.cpp +33 -0
- package/nitrogen/generated/apple/c++/Point3D-Swift.cpp +34 -0
- package/nitrogen/generated/apple/c++/Size-Swift.cpp +33 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/ReactNitroRendererAutolinking.hpp +13 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/AnimationCurve-Swift.hpp +23 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/Corner-Swift.hpp +23 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/CornerCurve-Swift.hpp +23 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/EdgeInsets-Swift.hpp +23 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/Frame-Swift.hpp +23 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/GestureRecognizerState-Swift.hpp +23 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridAnimatorSpecSwift.hpp +73 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridAnimatorSpec_cxx-Swift.hpp +23 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridApplicationSpecSwift.hpp +74 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridApplicationSpec_cxx-Swift.hpp +23 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridGestureRecognizerSpecSwift.hpp +74 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridGestureRecognizerSpec_cxx-Swift.hpp +23 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridLabelSpecSwift.hpp +74 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridLabelSpec_cxx-Swift.hpp +23 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridLongPressGestureRecognizerSpecSwift.hpp +82 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridLongPressGestureRecognizerSpec_cxx-Swift.hpp +23 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridPanGestureRecognizerSpecSwift.hpp +80 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridPanGestureRecognizerSpec_cxx-Swift.hpp +23 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridScreenSpecSwift.hpp +73 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridScreenSpec_cxx-Swift.hpp +23 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridScrollViewContentSpecSwift.hpp +72 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridScrollViewContentSpec_cxx-Swift.hpp +23 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridScrollViewSpecSwift.hpp +72 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridScrollViewSpec_cxx-Swift.hpp +23 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridTapGestureRecognizerSpecSwift.hpp +78 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridTapGestureRecognizerSpec_cxx-Swift.hpp +23 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridViewControllerSpecSwift.hpp +77 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridViewControllerSpec_cxx-Swift.hpp +23 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridViewSpecSwift.hpp +102 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridViewSpec_cxx-Swift.hpp +23 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridWindowSceneSpecSwift.hpp +71 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridWindowSceneSpec_cxx-Swift.hpp +23 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridWindowSpecSwift.hpp +74 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridWindowSpec_cxx-Swift.hpp +23 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/ListenerSubscription-Swift.hpp +23 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/ModifierKey-Swift.hpp +23 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/Point-Swift.hpp +23 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/Point3D-Swift.hpp +23 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/ReactNitroRenderer-Swift-Cxx-Umbrella.hpp +69 -0
- package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/Size-Swift.hpp +23 -0
- package/nitrogen/generated/apple/c++/include/module.modulemap +12 -0
- package/nitrogen/generated/apple/swift/AnimationCurve.swift +64 -0
- package/nitrogen/generated/apple/swift/Callback___ReactNitroRenderer__HybridWindowSpec_cxx___ReactNitroRenderer__HybridWindowSceneSpec_cxx.swift +71 -0
- package/nitrogen/generated/apple/swift/Callback_void.swift +60 -0
- package/nitrogen/generated/apple/swift/Callback_void___ReactNitroRenderer__EdgeInsets.swift +66 -0
- package/nitrogen/generated/apple/swift/Callback_void___ReactNitroRenderer__HybridLongPressGestureRecognizerSpec_cxx.swift +66 -0
- package/nitrogen/generated/apple/swift/Callback_void___ReactNitroRenderer__HybridPanGestureRecognizerSpec_cxx.swift +66 -0
- package/nitrogen/generated/apple/swift/Callback_void___ReactNitroRenderer__HybridTapGestureRecognizerSpec_cxx.swift +66 -0
- package/nitrogen/generated/apple/swift/Corner.swift +64 -0
- package/nitrogen/generated/apple/swift/CornerCurve.swift +54 -0
- package/nitrogen/generated/apple/swift/EdgeInsets.swift +49 -0
- package/nitrogen/generated/apple/swift/Frame.swift +49 -0
- package/nitrogen/generated/apple/swift/GestureRecognizerState.swift +74 -0
- package/nitrogen/generated/apple/swift/HybridAnimatorSpec.swift +67 -0
- package/nitrogen/generated/apple/swift/HybridAnimatorSpec_cxx.swift +158 -0
- package/nitrogen/generated/apple/swift/HybridApplicationSpec.swift +67 -0
- package/nitrogen/generated/apple/swift/HybridApplicationSpec_cxx.swift +160 -0
- package/nitrogen/generated/apple/swift/HybridGestureRecognizerSpec.swift +67 -0
- package/nitrogen/generated/apple/swift/HybridGestureRecognizerSpec_cxx.swift +147 -0
- package/nitrogen/generated/apple/swift/HybridLabelSpec.swift +66 -0
- package/nitrogen/generated/apple/swift/HybridLabelSpec_cxx.swift +157 -0
- package/nitrogen/generated/apple/swift/HybridLongPressGestureRecognizerSpec.swift +70 -0
- package/nitrogen/generated/apple/swift/HybridLongPressGestureRecognizerSpec_cxx.swift +193 -0
- package/nitrogen/generated/apple/swift/HybridPanGestureRecognizerSpec.swift +69 -0
- package/nitrogen/generated/apple/swift/HybridPanGestureRecognizerSpec_cxx.swift +195 -0
- package/nitrogen/generated/apple/swift/HybridScreenSpec.swift +67 -0
- package/nitrogen/generated/apple/swift/HybridScreenSpec_cxx.swift +146 -0
- package/nitrogen/generated/apple/swift/HybridScrollViewContentSpec.swift +66 -0
- package/nitrogen/generated/apple/swift/HybridScrollViewContentSpec_cxx.swift +148 -0
- package/nitrogen/generated/apple/swift/HybridScrollViewSpec.swift +66 -0
- package/nitrogen/generated/apple/swift/HybridScrollViewSpec_cxx.swift +148 -0
- package/nitrogen/generated/apple/swift/HybridTapGestureRecognizerSpec.swift +68 -0
- package/nitrogen/generated/apple/swift/HybridTapGestureRecognizerSpec_cxx.swift +175 -0
- package/nitrogen/generated/apple/swift/HybridViewControllerSpec.swift +68 -0
- package/nitrogen/generated/apple/swift/HybridViewControllerSpec_cxx.swift +185 -0
- package/nitrogen/generated/apple/swift/HybridViewSpec.swift +89 -0
- package/nitrogen/generated/apple/swift/HybridViewSpec_cxx.swift +335 -0
- package/nitrogen/generated/apple/swift/HybridWindowSceneSpec.swift +65 -0
- package/nitrogen/generated/apple/swift/HybridWindowSceneSpec_cxx.swift +136 -0
- package/nitrogen/generated/apple/swift/HybridWindowSpec.swift +65 -0
- package/nitrogen/generated/apple/swift/HybridWindowSpec_cxx.swift +156 -0
- package/nitrogen/generated/apple/swift/ListenerSubscription.swift +29 -0
- package/nitrogen/generated/apple/swift/ModifierKey.swift +64 -0
- package/nitrogen/generated/apple/swift/Point.swift +35 -0
- package/nitrogen/generated/apple/swift/Point3D.swift +42 -0
- package/nitrogen/generated/apple/swift/Promise___ReactNitroRenderer__HybridWindowSpec_cxx.swift +102 -0
- package/nitrogen/generated/apple/swift/Promise_void.swift +100 -0
- package/nitrogen/generated/apple/swift/ReactNitroRenderer+ForeignTypeMetadata.swift +34 -0
- package/nitrogen/generated/apple/swift/Size.swift +35 -0
- package/nitrogen/generated/hybrid-classes.json +144 -0
- package/nitrogen/generated/shared/c++/ReactNitroRendererCxxModule.cpp +2 -0
- package/nitrogen/generated/shared/c++/include/ReactNitroRenderer/ReactNitroRendererCxxModule.hpp +2 -0
- package/nitrogen/generated/shared/javascript/Animator.cjs +19 -0
- package/nitrogen/generated/shared/javascript/Animator.d.cts +9 -0
- package/nitrogen/generated/shared/javascript/Application.cjs +19 -0
- package/nitrogen/generated/shared/javascript/Application.d.cts +9 -0
- package/nitrogen/generated/shared/javascript/GestureRecognizer.cjs +19 -0
- package/nitrogen/generated/shared/javascript/GestureRecognizer.d.cts +9 -0
- package/nitrogen/generated/shared/javascript/Label.cjs +19 -0
- package/nitrogen/generated/shared/javascript/Label.d.cts +9 -0
- package/nitrogen/generated/shared/javascript/LongPressGestureRecognizer.cjs +19 -0
- package/nitrogen/generated/shared/javascript/LongPressGestureRecognizer.d.cts +9 -0
- package/nitrogen/generated/shared/javascript/PanGestureRecognizer.cjs +19 -0
- package/nitrogen/generated/shared/javascript/PanGestureRecognizer.d.cts +9 -0
- package/nitrogen/generated/shared/javascript/Screen.cjs +19 -0
- package/nitrogen/generated/shared/javascript/Screen.d.cts +9 -0
- package/nitrogen/generated/shared/javascript/ScrollView.cjs +19 -0
- package/nitrogen/generated/shared/javascript/ScrollView.d.cts +9 -0
- package/nitrogen/generated/shared/javascript/ScrollViewContent.cjs +19 -0
- package/nitrogen/generated/shared/javascript/ScrollViewContent.d.cts +9 -0
- package/nitrogen/generated/shared/javascript/TapGestureRecognizer.cjs +19 -0
- package/nitrogen/generated/shared/javascript/TapGestureRecognizer.d.cts +9 -0
- package/nitrogen/generated/shared/javascript/View.cjs +19 -0
- package/nitrogen/generated/shared/javascript/View.d.cts +9 -0
- package/nitrogen/generated/shared/javascript/ViewController.cjs +19 -0
- package/nitrogen/generated/shared/javascript/ViewController.d.cts +9 -0
- package/nitrogen/generated/shared/javascript/Window.cjs +19 -0
- package/nitrogen/generated/shared/javascript/Window.d.cts +9 -0
- package/nitrogen/generated/shared/javascript/WindowScene.cjs +19 -0
- package/nitrogen/generated/shared/javascript/WindowScene.d.cts +9 -0
- package/package.json +42 -4
- package/src/NitroRendererHostConfig.ts +396 -0
- package/src/PropSetter.ts +29 -0
- package/src/StylePropSetters.ts +145 -0
- package/src/ViewPropSetters.ts +33 -0
- package/src/ViewRegistry.ts +47 -0
- package/src/YogaPropSetters.ts +347 -0
- package/src/components/ScrollView.tsx +30 -0
- package/src/components/ScrollViewContent.tsx +12 -0
- package/src/components/Text.tsx +34 -0
- package/src/components/View.ts +33 -0
- package/src/contexts/RootContext.ts +5 -0
- package/src/getViewYogaNode.ts +9 -0
- package/src/hooks/useRootContext.ts +11 -0
- package/src/hooks/useSafeAreaInsets.ts +36 -0
- package/src/hybrids.ts +9 -0
- package/src/index.ts +30 -0
- package/src/registerApp.ts +22 -0
- package/src/renderRoot.ts +44 -0
- package/src/specs/Animations/AnimationCurve.ts +6 -0
- package/src/specs/Animations/Animator.nitro.ts +16 -0
- package/src/specs/Application.nitro.ts +20 -0
- package/src/specs/Corner.ts +1 -0
- package/src/specs/EdgeInsets.ts +13 -0
- package/src/specs/Frame.ts +6 -0
- package/src/specs/Gestures/GestureRecognizer.nitro.ts +26 -0
- package/src/specs/Gestures/LongPressGestureRecognizer.nitro.ts +26 -0
- package/src/specs/Gestures/PanGestureRecognizer.nitro.ts +33 -0
- package/src/specs/Gestures/TapGestureRecognizer.nitro.ts +20 -0
- package/src/specs/Label.nitro.ts +16 -0
- package/src/specs/ListenerSubscription.ts +3 -0
- package/src/specs/Screen.nitro.ts +16 -0
- package/src/specs/ScrollView.nitro.ts +14 -0
- package/src/specs/ScrollViewContent.nitro.ts +14 -0
- package/src/specs/Size.ts +4 -0
- package/src/specs/View.nitro.ts +112 -0
- package/src/specs/ViewController.nitro.ts +29 -0
- package/src/specs/Window.nitro.ts +20 -0
- package/src/specs/WindowScene.nitro.ts +15 -0
- package/src/types/ReactNitroReconcilerHostConfig.ts +44 -0
- package/src/types/ReactRoot.ts +5 -0
- package/src/types/StrictMap.ts +6 -0
- package/src/types/ViewPropsUpdater.ts +30 -0
- package/src/types/YogaStyleProps.ts +47 -0
- package/src/utils/arePropArraysEqual.ts +18 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
internal import Foundation
|
|
2
|
+
public import NitroModules
|
|
3
|
+
internal import NitroModulesCxx
|
|
4
|
+
public import UIKit
|
|
5
|
+
|
|
6
|
+
public final class HybridViewController: HybridViewControllerSpec {
|
|
7
|
+
private let controller = CustomViewController()
|
|
8
|
+
|
|
9
|
+
public var viewController: UIViewController {
|
|
10
|
+
return controller
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
public override init() throws {
|
|
14
|
+
try super.init()
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// Created on first access so `viewController.view` isn't loaded at init.
|
|
18
|
+
// Every read must return the same wrapper so its Yoga node keeps its children.
|
|
19
|
+
private lazy var rootView = HybridView(view: viewController.view)
|
|
20
|
+
|
|
21
|
+
public var view: any HybridViewSpec {
|
|
22
|
+
return rootView
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
public func addOnSafeAreaInsetsChangedListener(listener: any Callback<EdgeInsets, Void>) throws -> ListenerSubscription {
|
|
26
|
+
return controller.addOnSafeAreaInsetsChangedListener { insets in
|
|
27
|
+
do {
|
|
28
|
+
try listener.callSync(insets)
|
|
29
|
+
} catch {
|
|
30
|
+
margelo.nitro.GlobalErrorHandler.reportError(.UICallback, error.toCpp())
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
public func present(other: any HybridViewControllerSpec, animated: Bool, completion: any Callback<(), Void>) throws {
|
|
36
|
+
self.viewController.present(other.viewController,
|
|
37
|
+
animated: animated) {
|
|
38
|
+
do {
|
|
39
|
+
try completion.callSync()
|
|
40
|
+
} catch {
|
|
41
|
+
margelo.nitro.GlobalErrorHandler.reportError(.UICallback, error.toCpp())
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
public func dismiss(animated: Bool, completion: any Callback<(), Void>) throws {
|
|
47
|
+
self.viewController.dismiss(animated: animated) {
|
|
48
|
+
do {
|
|
49
|
+
try completion.callSync()
|
|
50
|
+
} catch {
|
|
51
|
+
margelo.nitro.GlobalErrorHandler.reportError(.UICallback, error.toCpp())
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
public func addOnKeyPressedListener(key: String, modifiers: [ModifierKey], onPress: any Callback<(), Void>) throws -> ListenerSubscription {
|
|
57
|
+
controller.addOnKeyPressedListener(key: key,
|
|
58
|
+
modifiers: modifiers) {
|
|
59
|
+
do {
|
|
60
|
+
try onPress.callSync()
|
|
61
|
+
} catch {
|
|
62
|
+
margelo.nitro.GlobalErrorHandler.reportError(.UICallback, error.toCpp())
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
internal import NitroModules
|
|
2
|
+
internal import UIKit
|
|
3
|
+
|
|
4
|
+
final class HybridWindow: HybridWindowSpec {
|
|
5
|
+
let window: UIWindow
|
|
6
|
+
var screen: any HybridScreenSpec {
|
|
7
|
+
return HybridScreen(screen: window.screen)
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
init(window: UIWindow) {
|
|
11
|
+
self.window = window
|
|
12
|
+
// The generated base initializer is empty. Wrapping this UIKit object cannot fail.
|
|
13
|
+
try! super.init()
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
convenience init(scene: any HybridWindowSceneSpec, rootViewController: any HybridViewControllerSpec) throws {
|
|
17
|
+
let window = UIWindow(windowScene: scene.scene)
|
|
18
|
+
window.rootViewController = rootViewController.viewController
|
|
19
|
+
self.init(window: window)
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
func makeKeyAndVisible() throws {
|
|
23
|
+
window.makeKeyAndVisible()
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
internal import NitroModules
|
|
2
|
+
internal import UIKit
|
|
3
|
+
|
|
4
|
+
final class HybridWindowScene: HybridWindowSceneSpec {
|
|
5
|
+
let scene: UIWindowScene
|
|
6
|
+
|
|
7
|
+
var windows: [any HybridWindowSpec] {
|
|
8
|
+
return scene.windows.map { HybridWindow(window: $0) }
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
init(scene: UIWindowScene) {
|
|
12
|
+
self.scene = scene
|
|
13
|
+
// The generated base initializer is empty. Wrapping this UIKit object cannot fail.
|
|
14
|
+
try! super.init()
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
//
|
|
2
|
+
// RegisterRootCallback.swift
|
|
3
|
+
// ReactNitroRenderer
|
|
4
|
+
//
|
|
5
|
+
// Created by Marc Rousavy on 18.09.26.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
internal import NitroModules
|
|
9
|
+
public import UIKit
|
|
10
|
+
|
|
11
|
+
// TODO: Do we want to put this into something like AppDelegate or SceneDelegate instead? Like "ReactHost" or whatever?
|
|
12
|
+
public struct RegisterRootCallback {
|
|
13
|
+
// TODO: This is kinda ugly because we pull in that callback later in `SceneDelegate`, statically...
|
|
14
|
+
private static var onSceneCreated: (any Callback<any HybridWindowSceneSpec, any HybridWindowSpec>)? = nil
|
|
15
|
+
|
|
16
|
+
internal static func registerRoot(onSceneCreated: any Callback<any HybridWindowSceneSpec, any HybridWindowSpec>) throws {
|
|
17
|
+
Self.onSceneCreated = onSceneCreated
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
public static func onSceneCreated(_ scene: UIWindowScene) throws -> UIWindow {
|
|
21
|
+
guard let onSceneCreated = Self.onSceneCreated else {
|
|
22
|
+
throw RuntimeError("No `onSceneCreated` listener was installed - was `registerRoot(..)` called?")
|
|
23
|
+
}
|
|
24
|
+
let hybridWindowScene = HybridWindowScene(scene: scene)
|
|
25
|
+
let hybridWindow = try onSceneCreated.callSync(hybridWindowScene)
|
|
26
|
+
return hybridWindow.window
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
//
|
|
2
|
+
// RuntimeReloadableAppDelegate.swift
|
|
3
|
+
// ReactNitroRenderer
|
|
4
|
+
//
|
|
5
|
+
// Created by Marc Rousavy on 28.09.26.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Conform `AppDelegate` to `RuntimeReloadableAppDelegate` so
|
|
10
|
+
* `Application.reloadRuntime()` can reload the JS Runtime.
|
|
11
|
+
*/
|
|
12
|
+
public protocol RuntimeReloadableAppDelegate {
|
|
13
|
+
func reloadRuntime()
|
|
14
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
internal import Foundation
|
|
2
|
+
internal import NitroModules
|
|
3
|
+
|
|
4
|
+
// Accessed only on the main thread by UIKit and the JS runtime.
|
|
5
|
+
final class SafeAreaInsetsListeners {
|
|
6
|
+
private var listeners: [UUID: (EdgeInsets) -> Void] = [:]
|
|
7
|
+
|
|
8
|
+
func add(_ listener: @escaping (EdgeInsets) -> Void) -> ListenerSubscription {
|
|
9
|
+
let id = UUID()
|
|
10
|
+
listeners[id] = listener
|
|
11
|
+
return ListenerSubscription(remove: .native { [weak self] in
|
|
12
|
+
self?.listeners.removeValue(forKey: id)
|
|
13
|
+
})
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
func emit(_ insets: EdgeInsets) {
|
|
17
|
+
let currentListeners = Array(listeners.values)
|
|
18
|
+
for listener in currentListeners {
|
|
19
|
+
listener(insets)
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
internal import UIKit
|
|
2
|
+
|
|
3
|
+
extension UIColor {
|
|
4
|
+
convenience init(rgba: UInt32) {
|
|
5
|
+
self.init(red: CGFloat((rgba >> 24) & 0xff) / 255,
|
|
6
|
+
green: CGFloat((rgba >> 16) & 0xff) / 255,
|
|
7
|
+
blue: CGFloat((rgba >> 8) & 0xff) / 255,
|
|
8
|
+
alpha: CGFloat(rgba & 0xff) / 255)
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
internal import UIKit
|
|
2
|
+
|
|
3
|
+
extension UIColor {
|
|
4
|
+
/// The color packed as 0xRRGGBBAA, or nil if it cannot be converted to RGB.
|
|
5
|
+
var rgba: UInt32? {
|
|
6
|
+
var red: CGFloat = 0
|
|
7
|
+
var green: CGFloat = 0
|
|
8
|
+
var blue: CGFloat = 0
|
|
9
|
+
var alpha: CGFloat = 0
|
|
10
|
+
guard getRed(&red, green: &green, blue: &blue, alpha: &alpha),
|
|
11
|
+
red.isFinite, green.isFinite, blue.isFinite, alpha.isFinite else {
|
|
12
|
+
return nil
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
func byte(_ component: CGFloat) -> UInt32 {
|
|
16
|
+
return UInt32((min(1, max(0, component)) * 255).rounded())
|
|
17
|
+
}
|
|
18
|
+
return (byte(red) << 24) | (byte(green) << 16) | (byte(blue) << 8) | byte(alpha)
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
//
|
|
2
|
+
// ViewController.swift
|
|
3
|
+
// ReactNitroRenderer
|
|
4
|
+
//
|
|
5
|
+
// Created by Marc Rousavy on 18.09.26.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
public import UIKit
|
|
9
|
+
|
|
10
|
+
public protocol ViewController {
|
|
11
|
+
associatedtype ViewControllerType: UIViewController
|
|
12
|
+
var viewController: ViewControllerType { get }
|
|
13
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
public import yoga
|
|
2
|
+
|
|
3
|
+
public struct YGNode: ~Copyable {
|
|
4
|
+
typealias MeasureFunction = (Float, YGMeasureMode, Float, YGMeasureMode) -> YGSize
|
|
5
|
+
|
|
6
|
+
public let ref: YGNodeRef
|
|
7
|
+
private let measureContext: MeasureContext?
|
|
8
|
+
|
|
9
|
+
public init() {
|
|
10
|
+
ref = YGNodeNew()
|
|
11
|
+
measureContext = nil
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
init(measure: @escaping MeasureFunction) {
|
|
15
|
+
ref = YGNodeNew()
|
|
16
|
+
let context = MeasureContext(measure: measure)
|
|
17
|
+
measureContext = context
|
|
18
|
+
|
|
19
|
+
// The wrapper owns the context; Yoga only borrows its stable address.
|
|
20
|
+
let unmanagedContext = Unmanaged.passUnretained(context)
|
|
21
|
+
let contextPointer = unmanagedContext.toOpaque()
|
|
22
|
+
YGNodeSetContext(ref, contextPointer)
|
|
23
|
+
YGNodeSetMeasureFunc(ref) { nodeRef, width, widthMode, height, heightMode in
|
|
24
|
+
guard let nodeRef, let contextPointer = YGNodeGetContext(nodeRef) else {
|
|
25
|
+
fatalError("Yoga measure callback is missing its context.")
|
|
26
|
+
}
|
|
27
|
+
let unmanagedContext = Unmanaged<MeasureContext>.fromOpaque(contextPointer)
|
|
28
|
+
let context = unmanagedContext.takeUnretainedValue()
|
|
29
|
+
return context.measure(width, widthMode, height, heightMode)
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
deinit {
|
|
34
|
+
withExtendedLifetime(measureContext) {
|
|
35
|
+
YGNodeFree(ref)
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
private final class MeasureContext {
|
|
40
|
+
let measure: MeasureFunction
|
|
41
|
+
|
|
42
|
+
init(measure: @escaping MeasureFunction) {
|
|
43
|
+
self.measure = measure
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
** linguist-generated=true
|