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.
Files changed (247) hide show
  1. package/LICENSE +21 -0
  2. package/Package.swift +104 -0
  3. package/README.md +111 -2
  4. package/Sources/ReactNitroRenderer/Animations/AnimationCurve+toUIAnimationCurve.swift +31 -0
  5. package/Sources/ReactNitroRenderer/Animations/HybridAnimator.swift +36 -0
  6. package/Sources/ReactNitroRenderer/Animations/View+Animations.swift +39 -0
  7. package/Sources/ReactNitroRenderer/Components/HybridLabel.swift +89 -0
  8. package/Sources/ReactNitroRenderer/Components/HybridScrollView.swift +21 -0
  9. package/Sources/ReactNitroRenderer/Components/HybridScrollViewContent.swift +36 -0
  10. package/Sources/ReactNitroRenderer/Components/HybridView.swift +22 -0
  11. package/Sources/ReactNitroRenderer/Components/View.swift +267 -0
  12. package/Sources/ReactNitroRenderer/CustomViewController.swift +36 -0
  13. package/Sources/ReactNitroRenderer/Extensions/Corner+toCACornerMask.swift +16 -0
  14. package/Sources/ReactNitroRenderer/Extensions/CornerCurve+toUICornerCurve.swift +23 -0
  15. package/Sources/ReactNitroRenderer/Extensions/EdgeInsets+UIEdgeInsets.swift +7 -0
  16. package/Sources/ReactNitroRenderer/Extensions/ModifierKey+toUIKeyModifierFlags.swift +31 -0
  17. package/Sources/ReactNitroRenderer/Extensions/Point+CGPoint.swift +15 -0
  18. package/Sources/ReactNitroRenderer/Extensions/UIGestureRecognizerState+toUIGestureRecognizerState.swift +39 -0
  19. package/Sources/ReactNitroRenderer/Gestures/HybridGestureRecognizer.swift +40 -0
  20. package/Sources/ReactNitroRenderer/Gestures/HybridLongPressGestureRecognizer.swift +53 -0
  21. package/Sources/ReactNitroRenderer/Gestures/HybridPanGestureRecognizer.swift +52 -0
  22. package/Sources/ReactNitroRenderer/Gestures/HybridTapGestureRecognizer.swift +42 -0
  23. package/Sources/ReactNitroRenderer/HybridApplication.swift +19 -0
  24. package/Sources/ReactNitroRenderer/HybridScreen.swift +22 -0
  25. package/Sources/ReactNitroRenderer/HybridViewController.swift +66 -0
  26. package/Sources/ReactNitroRenderer/HybridWindow.swift +25 -0
  27. package/Sources/ReactNitroRenderer/HybridWindowScene.swift +16 -0
  28. package/Sources/ReactNitroRenderer/RegisterRootCallback.swift +28 -0
  29. package/Sources/ReactNitroRenderer/RuntimeReloadableAppDelegate.swift +14 -0
  30. package/Sources/ReactNitroRenderer/SafeAreaInsetsListeners.swift +22 -0
  31. package/Sources/ReactNitroRenderer/UIColor+initRGBA.swift +10 -0
  32. package/Sources/ReactNitroRenderer/UIColor+rgba.swift +20 -0
  33. package/Sources/ReactNitroRenderer/ViewController.swift +13 -0
  34. package/Sources/ReactNitroRenderer/Window.swift +12 -0
  35. package/Sources/ReactNitroRenderer/WindowScene.swift +12 -0
  36. package/Sources/ReactNitroRenderer/YGNode.swift +46 -0
  37. package/nitrogen/generated/.gitattributes +1 -0
  38. package/nitrogen/generated/apple/ReactNitroRenderer-Swift-Cxx-Bridge.cpp +376 -0
  39. package/nitrogen/generated/apple/ReactNitroRendererAppleCxx/ReactNitroRendererAppleCxx.cpp +9 -0
  40. package/nitrogen/generated/apple/ReactNitroRendererAppleCxx/include/ReactNitroRendererAppleCxx/ReactNitroRendererAppleCxx.h +245 -0
  41. package/nitrogen/generated/apple/ReactNitroRendererAutolinking.cpp +46 -0
  42. package/nitrogen/generated/apple/ReactNitroRendererAutolinking.mm +24 -0
  43. package/nitrogen/generated/apple/c++/AnimationCurve-Swift.cpp +42 -0
  44. package/nitrogen/generated/apple/c++/Corner-Swift.cpp +52 -0
  45. package/nitrogen/generated/apple/c++/CornerCurve-Swift.cpp +46 -0
  46. package/nitrogen/generated/apple/c++/EdgeInsets-Swift.cpp +35 -0
  47. package/nitrogen/generated/apple/c++/Frame-Swift.cpp +35 -0
  48. package/nitrogen/generated/apple/c++/GestureRecognizerState-Swift.cpp +44 -0
  49. package/nitrogen/generated/apple/c++/HybridAnimatorSpecSwift.cpp +53 -0
  50. package/nitrogen/generated/apple/c++/HybridAnimatorSpec_cxx-Swift.cpp +28 -0
  51. package/nitrogen/generated/apple/c++/HybridApplicationSpecSwift.cpp +58 -0
  52. package/nitrogen/generated/apple/c++/HybridApplicationSpec_cxx-Swift.cpp +28 -0
  53. package/nitrogen/generated/apple/c++/HybridGestureRecognizerSpecSwift.cpp +48 -0
  54. package/nitrogen/generated/apple/c++/HybridGestureRecognizerSpec_cxx-Swift.cpp +28 -0
  55. package/nitrogen/generated/apple/c++/HybridLabelSpecSwift.cpp +49 -0
  56. package/nitrogen/generated/apple/c++/HybridLabelSpec_cxx-Swift.cpp +28 -0
  57. package/nitrogen/generated/apple/c++/HybridLongPressGestureRecognizerSpecSwift.cpp +85 -0
  58. package/nitrogen/generated/apple/c++/HybridLongPressGestureRecognizerSpec_cxx-Swift.cpp +28 -0
  59. package/nitrogen/generated/apple/c++/HybridPanGestureRecognizerSpecSwift.cpp +89 -0
  60. package/nitrogen/generated/apple/c++/HybridPanGestureRecognizerSpec_cxx-Swift.cpp +28 -0
  61. package/nitrogen/generated/apple/c++/HybridScreenSpecSwift.cpp +44 -0
  62. package/nitrogen/generated/apple/c++/HybridScreenSpec_cxx-Swift.cpp +28 -0
  63. package/nitrogen/generated/apple/c++/HybridScrollViewContentSpecSwift.cpp +40 -0
  64. package/nitrogen/generated/apple/c++/HybridScrollViewContentSpec_cxx-Swift.cpp +28 -0
  65. package/nitrogen/generated/apple/c++/HybridScrollViewSpecSwift.cpp +40 -0
  66. package/nitrogen/generated/apple/c++/HybridScrollViewSpec_cxx-Swift.cpp +28 -0
  67. package/nitrogen/generated/apple/c++/HybridTapGestureRecognizerSpecSwift.cpp +67 -0
  68. package/nitrogen/generated/apple/c++/HybridTapGestureRecognizerSpec_cxx-Swift.cpp +28 -0
  69. package/nitrogen/generated/apple/c++/HybridViewControllerSpecSwift.cpp +91 -0
  70. package/nitrogen/generated/apple/c++/HybridViewControllerSpec_cxx-Swift.cpp +28 -0
  71. package/nitrogen/generated/apple/c++/HybridViewSpecSwift.cpp +231 -0
  72. package/nitrogen/generated/apple/c++/HybridViewSpec_cxx-Swift.cpp +28 -0
  73. package/nitrogen/generated/apple/c++/HybridWindowSceneSpecSwift.cpp +34 -0
  74. package/nitrogen/generated/apple/c++/HybridWindowSceneSpec_cxx-Swift.cpp +28 -0
  75. package/nitrogen/generated/apple/c++/HybridWindowSpecSwift.cpp +53 -0
  76. package/nitrogen/generated/apple/c++/HybridWindowSpec_cxx-Swift.cpp +28 -0
  77. package/nitrogen/generated/apple/c++/ListenerSubscription-Swift.cpp +37 -0
  78. package/nitrogen/generated/apple/c++/ModifierKey-Swift.cpp +52 -0
  79. package/nitrogen/generated/apple/c++/Point-Swift.cpp +33 -0
  80. package/nitrogen/generated/apple/c++/Point3D-Swift.cpp +34 -0
  81. package/nitrogen/generated/apple/c++/Size-Swift.cpp +33 -0
  82. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/ReactNitroRendererAutolinking.hpp +13 -0
  83. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/AnimationCurve-Swift.hpp +23 -0
  84. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/Corner-Swift.hpp +23 -0
  85. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/CornerCurve-Swift.hpp +23 -0
  86. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/EdgeInsets-Swift.hpp +23 -0
  87. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/Frame-Swift.hpp +23 -0
  88. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/GestureRecognizerState-Swift.hpp +23 -0
  89. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridAnimatorSpecSwift.hpp +73 -0
  90. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridAnimatorSpec_cxx-Swift.hpp +23 -0
  91. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridApplicationSpecSwift.hpp +74 -0
  92. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridApplicationSpec_cxx-Swift.hpp +23 -0
  93. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridGestureRecognizerSpecSwift.hpp +74 -0
  94. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridGestureRecognizerSpec_cxx-Swift.hpp +23 -0
  95. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridLabelSpecSwift.hpp +74 -0
  96. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridLabelSpec_cxx-Swift.hpp +23 -0
  97. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridLongPressGestureRecognizerSpecSwift.hpp +82 -0
  98. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridLongPressGestureRecognizerSpec_cxx-Swift.hpp +23 -0
  99. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridPanGestureRecognizerSpecSwift.hpp +80 -0
  100. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridPanGestureRecognizerSpec_cxx-Swift.hpp +23 -0
  101. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridScreenSpecSwift.hpp +73 -0
  102. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridScreenSpec_cxx-Swift.hpp +23 -0
  103. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridScrollViewContentSpecSwift.hpp +72 -0
  104. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridScrollViewContentSpec_cxx-Swift.hpp +23 -0
  105. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridScrollViewSpecSwift.hpp +72 -0
  106. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridScrollViewSpec_cxx-Swift.hpp +23 -0
  107. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridTapGestureRecognizerSpecSwift.hpp +78 -0
  108. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridTapGestureRecognizerSpec_cxx-Swift.hpp +23 -0
  109. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridViewControllerSpecSwift.hpp +77 -0
  110. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridViewControllerSpec_cxx-Swift.hpp +23 -0
  111. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridViewSpecSwift.hpp +102 -0
  112. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridViewSpec_cxx-Swift.hpp +23 -0
  113. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridWindowSceneSpecSwift.hpp +71 -0
  114. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridWindowSceneSpec_cxx-Swift.hpp +23 -0
  115. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridWindowSpecSwift.hpp +74 -0
  116. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/HybridWindowSpec_cxx-Swift.hpp +23 -0
  117. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/ListenerSubscription-Swift.hpp +23 -0
  118. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/ModifierKey-Swift.hpp +23 -0
  119. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/Point-Swift.hpp +23 -0
  120. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/Point3D-Swift.hpp +23 -0
  121. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/ReactNitroRenderer-Swift-Cxx-Umbrella.hpp +69 -0
  122. package/nitrogen/generated/apple/c++/include/ReactNitroRenderer/private/Size-Swift.hpp +23 -0
  123. package/nitrogen/generated/apple/c++/include/module.modulemap +12 -0
  124. package/nitrogen/generated/apple/swift/AnimationCurve.swift +64 -0
  125. package/nitrogen/generated/apple/swift/Callback___ReactNitroRenderer__HybridWindowSpec_cxx___ReactNitroRenderer__HybridWindowSceneSpec_cxx.swift +71 -0
  126. package/nitrogen/generated/apple/swift/Callback_void.swift +60 -0
  127. package/nitrogen/generated/apple/swift/Callback_void___ReactNitroRenderer__EdgeInsets.swift +66 -0
  128. package/nitrogen/generated/apple/swift/Callback_void___ReactNitroRenderer__HybridLongPressGestureRecognizerSpec_cxx.swift +66 -0
  129. package/nitrogen/generated/apple/swift/Callback_void___ReactNitroRenderer__HybridPanGestureRecognizerSpec_cxx.swift +66 -0
  130. package/nitrogen/generated/apple/swift/Callback_void___ReactNitroRenderer__HybridTapGestureRecognizerSpec_cxx.swift +66 -0
  131. package/nitrogen/generated/apple/swift/Corner.swift +64 -0
  132. package/nitrogen/generated/apple/swift/CornerCurve.swift +54 -0
  133. package/nitrogen/generated/apple/swift/EdgeInsets.swift +49 -0
  134. package/nitrogen/generated/apple/swift/Frame.swift +49 -0
  135. package/nitrogen/generated/apple/swift/GestureRecognizerState.swift +74 -0
  136. package/nitrogen/generated/apple/swift/HybridAnimatorSpec.swift +67 -0
  137. package/nitrogen/generated/apple/swift/HybridAnimatorSpec_cxx.swift +158 -0
  138. package/nitrogen/generated/apple/swift/HybridApplicationSpec.swift +67 -0
  139. package/nitrogen/generated/apple/swift/HybridApplicationSpec_cxx.swift +160 -0
  140. package/nitrogen/generated/apple/swift/HybridGestureRecognizerSpec.swift +67 -0
  141. package/nitrogen/generated/apple/swift/HybridGestureRecognizerSpec_cxx.swift +147 -0
  142. package/nitrogen/generated/apple/swift/HybridLabelSpec.swift +66 -0
  143. package/nitrogen/generated/apple/swift/HybridLabelSpec_cxx.swift +157 -0
  144. package/nitrogen/generated/apple/swift/HybridLongPressGestureRecognizerSpec.swift +70 -0
  145. package/nitrogen/generated/apple/swift/HybridLongPressGestureRecognizerSpec_cxx.swift +193 -0
  146. package/nitrogen/generated/apple/swift/HybridPanGestureRecognizerSpec.swift +69 -0
  147. package/nitrogen/generated/apple/swift/HybridPanGestureRecognizerSpec_cxx.swift +195 -0
  148. package/nitrogen/generated/apple/swift/HybridScreenSpec.swift +67 -0
  149. package/nitrogen/generated/apple/swift/HybridScreenSpec_cxx.swift +146 -0
  150. package/nitrogen/generated/apple/swift/HybridScrollViewContentSpec.swift +66 -0
  151. package/nitrogen/generated/apple/swift/HybridScrollViewContentSpec_cxx.swift +148 -0
  152. package/nitrogen/generated/apple/swift/HybridScrollViewSpec.swift +66 -0
  153. package/nitrogen/generated/apple/swift/HybridScrollViewSpec_cxx.swift +148 -0
  154. package/nitrogen/generated/apple/swift/HybridTapGestureRecognizerSpec.swift +68 -0
  155. package/nitrogen/generated/apple/swift/HybridTapGestureRecognizerSpec_cxx.swift +175 -0
  156. package/nitrogen/generated/apple/swift/HybridViewControllerSpec.swift +68 -0
  157. package/nitrogen/generated/apple/swift/HybridViewControllerSpec_cxx.swift +185 -0
  158. package/nitrogen/generated/apple/swift/HybridViewSpec.swift +89 -0
  159. package/nitrogen/generated/apple/swift/HybridViewSpec_cxx.swift +335 -0
  160. package/nitrogen/generated/apple/swift/HybridWindowSceneSpec.swift +65 -0
  161. package/nitrogen/generated/apple/swift/HybridWindowSceneSpec_cxx.swift +136 -0
  162. package/nitrogen/generated/apple/swift/HybridWindowSpec.swift +65 -0
  163. package/nitrogen/generated/apple/swift/HybridWindowSpec_cxx.swift +156 -0
  164. package/nitrogen/generated/apple/swift/ListenerSubscription.swift +29 -0
  165. package/nitrogen/generated/apple/swift/ModifierKey.swift +64 -0
  166. package/nitrogen/generated/apple/swift/Point.swift +35 -0
  167. package/nitrogen/generated/apple/swift/Point3D.swift +42 -0
  168. package/nitrogen/generated/apple/swift/Promise___ReactNitroRenderer__HybridWindowSpec_cxx.swift +102 -0
  169. package/nitrogen/generated/apple/swift/Promise_void.swift +100 -0
  170. package/nitrogen/generated/apple/swift/ReactNitroRenderer+ForeignTypeMetadata.swift +34 -0
  171. package/nitrogen/generated/apple/swift/Size.swift +35 -0
  172. package/nitrogen/generated/hybrid-classes.json +144 -0
  173. package/nitrogen/generated/shared/c++/ReactNitroRendererCxxModule.cpp +2 -0
  174. package/nitrogen/generated/shared/c++/include/ReactNitroRenderer/ReactNitroRendererCxxModule.hpp +2 -0
  175. package/nitrogen/generated/shared/javascript/Animator.cjs +19 -0
  176. package/nitrogen/generated/shared/javascript/Animator.d.cts +9 -0
  177. package/nitrogen/generated/shared/javascript/Application.cjs +19 -0
  178. package/nitrogen/generated/shared/javascript/Application.d.cts +9 -0
  179. package/nitrogen/generated/shared/javascript/GestureRecognizer.cjs +19 -0
  180. package/nitrogen/generated/shared/javascript/GestureRecognizer.d.cts +9 -0
  181. package/nitrogen/generated/shared/javascript/Label.cjs +19 -0
  182. package/nitrogen/generated/shared/javascript/Label.d.cts +9 -0
  183. package/nitrogen/generated/shared/javascript/LongPressGestureRecognizer.cjs +19 -0
  184. package/nitrogen/generated/shared/javascript/LongPressGestureRecognizer.d.cts +9 -0
  185. package/nitrogen/generated/shared/javascript/PanGestureRecognizer.cjs +19 -0
  186. package/nitrogen/generated/shared/javascript/PanGestureRecognizer.d.cts +9 -0
  187. package/nitrogen/generated/shared/javascript/Screen.cjs +19 -0
  188. package/nitrogen/generated/shared/javascript/Screen.d.cts +9 -0
  189. package/nitrogen/generated/shared/javascript/ScrollView.cjs +19 -0
  190. package/nitrogen/generated/shared/javascript/ScrollView.d.cts +9 -0
  191. package/nitrogen/generated/shared/javascript/ScrollViewContent.cjs +19 -0
  192. package/nitrogen/generated/shared/javascript/ScrollViewContent.d.cts +9 -0
  193. package/nitrogen/generated/shared/javascript/TapGestureRecognizer.cjs +19 -0
  194. package/nitrogen/generated/shared/javascript/TapGestureRecognizer.d.cts +9 -0
  195. package/nitrogen/generated/shared/javascript/View.cjs +19 -0
  196. package/nitrogen/generated/shared/javascript/View.d.cts +9 -0
  197. package/nitrogen/generated/shared/javascript/ViewController.cjs +19 -0
  198. package/nitrogen/generated/shared/javascript/ViewController.d.cts +9 -0
  199. package/nitrogen/generated/shared/javascript/Window.cjs +19 -0
  200. package/nitrogen/generated/shared/javascript/Window.d.cts +9 -0
  201. package/nitrogen/generated/shared/javascript/WindowScene.cjs +19 -0
  202. package/nitrogen/generated/shared/javascript/WindowScene.d.cts +9 -0
  203. package/package.json +42 -4
  204. package/src/NitroRendererHostConfig.ts +396 -0
  205. package/src/PropSetter.ts +29 -0
  206. package/src/StylePropSetters.ts +145 -0
  207. package/src/ViewPropSetters.ts +33 -0
  208. package/src/ViewRegistry.ts +47 -0
  209. package/src/YogaPropSetters.ts +347 -0
  210. package/src/components/ScrollView.tsx +30 -0
  211. package/src/components/ScrollViewContent.tsx +12 -0
  212. package/src/components/Text.tsx +34 -0
  213. package/src/components/View.ts +33 -0
  214. package/src/contexts/RootContext.ts +5 -0
  215. package/src/getViewYogaNode.ts +9 -0
  216. package/src/hooks/useRootContext.ts +11 -0
  217. package/src/hooks/useSafeAreaInsets.ts +36 -0
  218. package/src/hybrids.ts +9 -0
  219. package/src/index.ts +30 -0
  220. package/src/registerApp.ts +22 -0
  221. package/src/renderRoot.ts +44 -0
  222. package/src/specs/Animations/AnimationCurve.ts +6 -0
  223. package/src/specs/Animations/Animator.nitro.ts +16 -0
  224. package/src/specs/Application.nitro.ts +20 -0
  225. package/src/specs/Corner.ts +1 -0
  226. package/src/specs/EdgeInsets.ts +13 -0
  227. package/src/specs/Frame.ts +6 -0
  228. package/src/specs/Gestures/GestureRecognizer.nitro.ts +26 -0
  229. package/src/specs/Gestures/LongPressGestureRecognizer.nitro.ts +26 -0
  230. package/src/specs/Gestures/PanGestureRecognizer.nitro.ts +33 -0
  231. package/src/specs/Gestures/TapGestureRecognizer.nitro.ts +20 -0
  232. package/src/specs/Label.nitro.ts +16 -0
  233. package/src/specs/ListenerSubscription.ts +3 -0
  234. package/src/specs/Screen.nitro.ts +16 -0
  235. package/src/specs/ScrollView.nitro.ts +14 -0
  236. package/src/specs/ScrollViewContent.nitro.ts +14 -0
  237. package/src/specs/Size.ts +4 -0
  238. package/src/specs/View.nitro.ts +112 -0
  239. package/src/specs/ViewController.nitro.ts +29 -0
  240. package/src/specs/Window.nitro.ts +20 -0
  241. package/src/specs/WindowScene.nitro.ts +15 -0
  242. package/src/types/ReactNitroReconcilerHostConfig.ts +44 -0
  243. package/src/types/ReactRoot.ts +5 -0
  244. package/src/types/StrictMap.ts +6 -0
  245. package/src/types/ViewPropsUpdater.ts +30 -0
  246. package/src/types/YogaStyleProps.ts +47 -0
  247. package/src/utils/arePropArraysEqual.ts +18 -0
@@ -0,0 +1,11 @@
1
+ import { useContext } from 'react'
2
+ import { RootContext } from '../contexts/RootContext'
3
+
4
+ /** Reads the view controller hosting the current React Nitro root. */
5
+ export function useRootContext() {
6
+ const context = useContext(RootContext)
7
+ if (context === undefined) {
8
+ throw new Error('This hook must be used inside a React Nitro root created by renderRoot().')
9
+ }
10
+ return context
11
+ }
@@ -0,0 +1,36 @@
1
+ import { useMemo, useSyncExternalStore } from 'react'
2
+ import type { EdgeInsets } from '../specs/EdgeInsets'
3
+ import { useRootContext } from './useRootContext'
4
+
5
+ /**
6
+ * Returns the closest view controller's root view safe area in points and subscribes to changes.
7
+ * The returned {@linkcode EdgeInsets} retain their identity while values are unchanged.
8
+ * @throws When called outside a root created by renderRoot().
9
+ */
10
+ export function useSafeAreaInsets(): EdgeInsets {
11
+ const viewController = useRootContext()
12
+ const store = useMemo(() => {
13
+ const view = viewController.view
14
+ let snapshot = view.safeAreaInsets
15
+ return {
16
+ getSnapshot: () => {
17
+ const insets = view.safeAreaInsets
18
+ const isUnchanged = insets.top === snapshot.top &&
19
+ insets.right === snapshot.right &&
20
+ insets.bottom === snapshot.bottom &&
21
+ insets.left === snapshot.left
22
+ if (isUnchanged) {
23
+ return snapshot
24
+ }
25
+ snapshot = insets
26
+ return snapshot
27
+ },
28
+ subscribe: (onChange: () => void) => {
29
+ const subscription = viewController.addOnSafeAreaInsetsChangedListener(onChange)
30
+ return subscription.remove
31
+ },
32
+ }
33
+ }, [viewController])
34
+
35
+ return useSyncExternalStore(store.subscribe, store.getSnapshot)
36
+ }
package/src/hybrids.ts ADDED
@@ -0,0 +1,9 @@
1
+ export { Application } from './specs/Application.nitro'
2
+ export { Label } from './specs/Label.nitro'
3
+ export { Screen } from './specs/Screen.nitro'
4
+ export { ScrollView } from './specs/ScrollView.nitro'
5
+ export { ScrollViewContent } from './specs/ScrollViewContent.nitro'
6
+ export { View } from './specs/View.nitro'
7
+ export { ViewController } from './specs/ViewController.nitro'
8
+ export { Window } from './specs/Window.nitro'
9
+ export { WindowScene } from './specs/WindowScene.nitro'
package/src/index.ts ADDED
@@ -0,0 +1,30 @@
1
+ // Initialize runtime globals before renderer modules evaluate.
2
+ export { registerApp } from './registerApp'
3
+ export * from './types/ReactNitroReconcilerHostConfig'
4
+ export { Application, ViewController, Window, WindowScene } from './hybrids'
5
+ export * from './components/View'
6
+ export type { Point3D, CornerCurve } from './specs/View.nitro'
7
+ export type { Corner } from './specs/Corner'
8
+ export * from './components/Text'
9
+ export * from './components/ScrollView'
10
+ export * from './components/ScrollViewContent'
11
+ export * from './getViewYogaNode'
12
+ export * from './renderRoot'
13
+ export { useSafeAreaInsets } from './hooks/useSafeAreaInsets'
14
+ export { useRootContext } from './hooks/useRootContext'
15
+ export { RootContext as ViewControllerContext } from './contexts/RootContext'
16
+ export { registerView } from './ViewRegistry'
17
+ export { viewPropsSetters } from './ViewPropSetters'
18
+ export type { ViewDefinitionMap } from './types/ViewPropsUpdater'
19
+ export type { ListenerSubscription } from './specs/ListenerSubscription'
20
+ export type { EdgeInsets } from './specs/EdgeInsets'
21
+
22
+ // Gestures
23
+ export { GestureRecognizerState } from './specs/Gestures/GestureRecognizer.nitro'
24
+ export * from './specs/Gestures/TapGestureRecognizer.nitro'
25
+ export * from './specs/Gestures/PanGestureRecognizer.nitro'
26
+ export * from './specs/Gestures/LongPressGestureRecognizer.nitro'
27
+
28
+ // Animations
29
+ export { type Animator } from './specs/Animations/Animator.nitro'
30
+ export { AnimationCurve } from './specs/Animations/AnimationCurve'
@@ -0,0 +1,22 @@
1
+ import 'react-nitro-runtime'
2
+ import { createElement, type ComponentType } from 'react'
3
+ import { Application, ViewController, Window } from './hybrids'
4
+ import { renderRoot } from './renderRoot'
5
+
6
+ /**
7
+ * Registers the component rendered in each application window.
8
+ * Installs the runtime globals and owns the default native window setup.
9
+ * @param App The application's root React component.
10
+ * @see {@linkcode renderRoot} for applications that create their own native windows.
11
+ * @example
12
+ * registerApp(App)
13
+ */
14
+ export function registerApp(App: ComponentType): void {
15
+ Application.registerRoot((scene) => {
16
+ const controller = new ViewController()
17
+ controller.view.setBackgroundColor(0xffffffff)
18
+ const element = createElement(App)
19
+ renderRoot(element, controller)
20
+ return new Window(scene, controller)
21
+ })
22
+ }
@@ -0,0 +1,44 @@
1
+ import { createNitroRenderer } from "./NitroRendererHostConfig";
2
+ import type { ViewController } from "./specs/ViewController.nitro";
3
+ import type { ReactRoot } from "./types/ReactRoot";
4
+ import { createElement } from "react";
5
+ import { RootContext } from "./contexts/RootContext";
6
+
7
+ export function renderRoot(
8
+ reactElement: React.ReactElement,
9
+ rootViewController: ViewController,
10
+ ) {
11
+ const reactRootView: ReactRoot = {
12
+ rootView: rootViewController.view,
13
+ };
14
+ const ReactNitroRenderer = createNitroRenderer(reactRootView.rootView);
15
+ const reactContainer = ReactNitroRenderer.createContainer(
16
+ reactRootView,
17
+ 1, // tag
18
+ null, //hydrationCallbacks
19
+ false, //isStrictMode
20
+ false, // concurrentUpdatesByDefaultOverride
21
+ "surface-", // identifierPrefix,
22
+ function onUncaughtError(error, info) {
23
+ console.error("React Nitro Renderer Error:", error, info);
24
+ },
25
+ function onCaughtError(error, info) {
26
+ console.error("React Nitro Renderer Caught Error:", error, info);
27
+ },
28
+ function onRecoverableError(error, info) {
29
+ console.error("React Nitro Renderer Recoverable Error:", error, info);
30
+ },
31
+ function onDefaultTransitionIndicator() {
32
+ console.warn(
33
+ "onDefaultTransitionIndicator() called, no idea what it does",
34
+ );
35
+ },
36
+ );
37
+
38
+ const rootElement = createElement(
39
+ RootContext.Provider,
40
+ { value: rootViewController },
41
+ reactElement,
42
+ );
43
+ ReactNitroRenderer.updateContainer(rootElement, reactContainer);
44
+ }
@@ -0,0 +1,6 @@
1
+ export enum AnimationCurve {
2
+ Linear,
3
+ EaseIn,
4
+ EaseOut,
5
+ EaseInOut,
6
+ }
@@ -0,0 +1,16 @@
1
+ import { iOS, type HybridObject } from "nitro-core";
2
+
3
+ export * from "#nitro/Animator";
4
+
5
+ @iOS({
6
+ language: 'swift',
7
+ implementation: {
8
+ className: 'HybridAnimator'
9
+ },
10
+ allowInheritance: false,
11
+ })
12
+ export declare class Animator extends HybridObject {
13
+ startAnimation(afterDelay?: number): void;
14
+ pauseAnimation(): void;
15
+ stopAnimation(withoutFinishing?: boolean): void;
16
+ }
@@ -0,0 +1,20 @@
1
+ import { iOS, type HybridObject } from 'nitro-core'
2
+ import type { WindowScene } from './WindowScene.nitro'
3
+ import type { Window } from './Window.nitro'
4
+ import type { View } from './View.nitro'
5
+
6
+ export * from '#nitro/Application'
7
+
8
+ @iOS({
9
+ language: 'swift',
10
+ implementation: {
11
+ className: 'HybridApplication',
12
+ },
13
+ })
14
+ export declare class Application extends HybridObject {
15
+ static createView(): View
16
+
17
+ static registerRoot(onSceneCreated: (scene: WindowScene) => Window): void
18
+
19
+ static reloadRuntime(): void
20
+ }
@@ -0,0 +1 @@
1
+ export type Corner = 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight'
@@ -0,0 +1,13 @@
1
+ import type { View } from './View.nitro'
2
+
3
+ /** Insets in points from a {@linkcode View}'s edges. @see {@linkcode View.safeAreaInsets} */
4
+ export interface EdgeInsets {
5
+ /** Distance from the top edge, in points. */
6
+ readonly top: number
7
+ /** Distance from the right edge, in points. */
8
+ readonly right: number
9
+ /** Distance from the bottom edge, in points. */
10
+ readonly bottom: number
11
+ /** Distance from the left edge, in points. */
12
+ readonly left: number
13
+ }
@@ -0,0 +1,6 @@
1
+ export interface Frame {
2
+ x: number
3
+ y: number
4
+ width: number
5
+ height: number
6
+ }
@@ -0,0 +1,26 @@
1
+ import { iOS, type HybridObject } from "nitro-core";
2
+
3
+ export * from "#nitro/GestureRecognizer";
4
+
5
+ // https://developer.apple.com/documentation/uikit/uigesturerecognizer/state-swift.property
6
+ export enum GestureRecognizerState {
7
+ Possible,
8
+ Began,
9
+ Changed,
10
+ Ended,
11
+ Cancelled,
12
+ Failed,
13
+ }
14
+
15
+ @iOS({
16
+ language: "swift",
17
+ allowInheritance: true,
18
+ allowMultipleImplementations: true,
19
+ protocolConformances: [{ protocol: "HybridGestureRecognizer" }],
20
+ })
21
+ export declare class GestureRecognizer extends HybridObject {
22
+ readonly numberOfTouches: number;
23
+ isEnabled: boolean;
24
+
25
+ readonly state: GestureRecognizerState
26
+ }
@@ -0,0 +1,26 @@
1
+ import { iOS } from "nitro-core";
2
+ import type { GestureRecognizer } from "./GestureRecognizer.nitro";
3
+
4
+ export * from "#nitro/LongPressGestureRecognizer";
5
+
6
+ @iOS({
7
+ language: "swift",
8
+ implementation: {
9
+ className: "HybridLongPressGestureRecognizer",
10
+ },
11
+ allowInheritance: false,
12
+ })
13
+ export declare class LongPressGestureRecognizer extends GestureRecognizer {
14
+ public constructor();
15
+
16
+ /** The minimum press duration in seconds. Defaults to 0.5. */
17
+ minimumPressDuration: number;
18
+ /** The maximum movement in points before recognition fails. Defaults to 10. */
19
+ allowableMovement: number;
20
+ /** The number of full taps required before the final press. Defaults to 0. */
21
+ numberOfTapsRequired: number;
22
+ numberOfTouchesRequired: number;
23
+
24
+ /** Called when the long press begins, changes, ends, or is cancelled. */
25
+ onLongPress?: (recognizer: LongPressGestureRecognizer) => void;
26
+ }
@@ -0,0 +1,33 @@
1
+ import { iOS } from "nitro-core";
2
+ import type { GestureRecognizer } from "./GestureRecognizer.nitro";
3
+ import type { View } from "../View.nitro";
4
+
5
+ export * from "#nitro/PanGestureRecognizer";
6
+
7
+ export type Point = { x: number; y: number };
8
+
9
+ @iOS({
10
+ language: "swift",
11
+ implementation: {
12
+ className: "HybridPanGestureRecognizer",
13
+ },
14
+ allowInheritance: false,
15
+ })
16
+ export declare class PanGestureRecognizer extends GestureRecognizer {
17
+ public constructor();
18
+
19
+ maximumNumberOfTouches: number;
20
+ minimumNumberOfTouches: number;
21
+
22
+ /**
23
+ * Interprets the pan gesture in the coordinate system of the specified view.
24
+ */
25
+ translation(inParent: View): Point;
26
+
27
+ /**
28
+ * Interprets the velocity of the pan gesture in the coordinate system of the specified view.
29
+ */
30
+ velocity(inParent: View): Point;
31
+
32
+ onPan?: (recognizer: PanGestureRecognizer) => void
33
+ }
@@ -0,0 +1,20 @@
1
+ import { iOS } from "nitro-core";
2
+ import type { GestureRecognizer } from "./GestureRecognizer.nitro";
3
+
4
+ export * from "#nitro/TapGestureRecognizer";
5
+
6
+ @iOS({
7
+ language: "swift",
8
+ implementation: {
9
+ className: "HybridTapGestureRecognizer",
10
+ },
11
+ allowInheritance: false,
12
+ })
13
+ export declare class TapGestureRecognizer extends GestureRecognizer {
14
+ public constructor();
15
+
16
+ numberOfTapsRequired: number;
17
+ numberOfTouchesRequired: number;
18
+
19
+ onTap?: (recognizer: TapGestureRecognizer) => void
20
+ }
@@ -0,0 +1,16 @@
1
+ import { iOS } from 'nitro-core'
2
+ import type { View } from './View.nitro'
3
+
4
+ export * from '#nitro/Label'
5
+
6
+ @iOS({
7
+ language: 'swift',
8
+ implementation: {
9
+ className: 'HybridLabel',
10
+ },
11
+ })
12
+ export declare class Label extends View {
13
+ public constructor()
14
+
15
+ text?: string
16
+ }
@@ -0,0 +1,3 @@
1
+ export interface ListenerSubscription {
2
+ remove: () => void
3
+ }
@@ -0,0 +1,16 @@
1
+ import { iOS, type HybridObject } from 'nitro-core'
2
+ import type { Size } from './Size'
3
+
4
+ export * from '#nitro/Screen'
5
+
6
+ @iOS({
7
+ language: 'swift',
8
+ implementation: {
9
+ className: 'HybridScreen',
10
+ },
11
+ })
12
+ export declare class Screen extends HybridObject {
13
+ readonly size: Size
14
+ readonly displayScale: number
15
+ readonly brightness: number
16
+ }
@@ -0,0 +1,14 @@
1
+ import { iOS } from 'nitro-core'
2
+ import type { View } from './View.nitro'
3
+
4
+ export * from '#nitro/ScrollView'
5
+
6
+ @iOS({
7
+ language: 'swift',
8
+ implementation: {
9
+ className: 'HybridScrollView',
10
+ },
11
+ })
12
+ export declare class ScrollView extends View {
13
+ public constructor()
14
+ }
@@ -0,0 +1,14 @@
1
+ import { iOS } from 'nitro-core'
2
+ import type { View } from './View.nitro'
3
+
4
+ export * from '#nitro/ScrollViewContent'
5
+
6
+ @iOS({
7
+ language: 'swift',
8
+ implementation: {
9
+ className: 'HybridScrollViewContent',
10
+ },
11
+ })
12
+ export declare class ScrollViewContent extends View {
13
+ public constructor()
14
+ }
@@ -0,0 +1,4 @@
1
+ export interface Size {
2
+ width: number
3
+ height: number
4
+ }
@@ -0,0 +1,112 @@
1
+ import { iOS, type HybridObject } from 'nitro-core'
2
+ import type { Frame } from './Frame'
3
+ import type { Corner } from './Corner'
4
+ import type { GestureRecognizer } from './Gestures/GestureRecognizer.nitro'
5
+ import type { AnimationCurve } from './Animations/AnimationCurve'
6
+ import type { Animator } from './Animations/Animator.nitro'
7
+ import type { EdgeInsets } from './EdgeInsets'
8
+
9
+ export * from '#nitro/View'
10
+
11
+ export type CornerCurve = "circular" | "continuous"
12
+
13
+ export type Point3D = {
14
+ x: number
15
+ y: number
16
+ z: number
17
+ }
18
+
19
+ @iOS({
20
+ language: 'swift',
21
+ allowMultipleImplementations: true,
22
+ allowInheritance: true,
23
+ protocolConformances: [{ protocol: 'View' }],
24
+ })
25
+ export declare class View extends HybridObject {
26
+ protected constructor()
27
+
28
+ /**
29
+ * The parent view set by appendChild or insertBefore.
30
+ * Returns the existing HybridView, or undefined for roots and detached views.
31
+ */
32
+ readonly parent?: View
33
+
34
+ /**
35
+ * The safe area insets relative to this view's bounds, in points.
36
+ * Insets are zero while detached or when the view is entirely inside its parent's safe area.
37
+ */
38
+ readonly safeAreaInsets: EdgeInsets
39
+
40
+ /**
41
+ * We interact with yoga from typescript using static hermes ffi, which
42
+ * doesn't support complex types. This is the c-pointer to the yoga node of this view.
43
+ * It's a 64-bit Double with the bit pattern of a unsigned 64-bit Int (UInt64 in Swift).
44
+ */
45
+ readonly yogaNodePtr: number
46
+
47
+ /**
48
+ * The background color as an unsigned 32-bit `0xRRGGBBAA` sRGB number.
49
+ * Returns `0x00000000` when unset or the native color cannot be represented as RGB.
50
+ */
51
+ readonly backgroundColor?: number
52
+ /**
53
+ * Sets a fixed sRGB color in `0xRRGGBBAA` format (alpha is the last byte).
54
+ * For example, `0xff0000ff` is opaque red and `0x00000000` is transparent.
55
+ * @throws If color is not a finite integer between `0` and `0xffffffff`.
56
+ */
57
+ setBackgroundColor(color: number): void
58
+
59
+ /**
60
+ * The opacity of the view and its children, from 0 (transparent) to 1 (opaque).
61
+ * Defaults to 1.
62
+ */
63
+ opacity: number
64
+
65
+ borderWidth?: number
66
+ readonly borderColor?: number
67
+ setBorderColor(color?: number): void
68
+ cornerRadius: number
69
+ /**
70
+ * The corners rounded by cornerRadius. Defaults to all four corners.
71
+ * Pass an empty array to leave every corner square.
72
+ */
73
+ maskedCorners: Corner[]
74
+ cornerCurve: CornerCurve
75
+
76
+ setTranslation(x: number, y: number, z: number): void
77
+ readonly translation: Point3D
78
+
79
+ /**
80
+ * Scales each axis around the view's center without changing its layout or translation.
81
+ * On iOS, each exact zero is applied as `0.00001` to avoid broken UIKit transform animations.
82
+ * The `scale` getter returns these applied values. Use `opacity = 0` to fully hide the view.
83
+ * @see https://stackoverflow.com/questions/25964224/cgaffinetransformscale-not-working-with-zero-scale
84
+ * @see https://stackoverflow.com/questions/75793513/uiview-animation-downscale-instantly-hides-the-view
85
+ */
86
+ setScale(x: number, y: number, z: number): void
87
+ /** Applied scale factors, including the zero substitution described in `setScale`. */
88
+ readonly scale: Point3D
89
+
90
+ getFrame(): Frame
91
+ setFrame(frame: Frame): void
92
+
93
+ appendChild(child: View): void;
94
+ insertBefore(child: View, beforeChild: View): void;
95
+ removeChild(child: View): void;
96
+ /**
97
+ * Called right after updating props.
98
+ */
99
+ afterUpdate(): void
100
+
101
+ setGestureRecognizers(gestureRecognizers?: GestureRecognizer[]): void
102
+ isUserInteractionEnabled: boolean
103
+
104
+ animate(duration: number, curve: AnimationCurve, animations: () => void): Animator
105
+ /**
106
+ * Animated the changes with spring.
107
+ * @param duration The duration of the spring animation in seconds.
108
+ * @param dampingRatio The damping ratio to apply to the initial acceleration and oscillation. To smoothly decelerate the animation without oscillation, specify a value of 1. Specify values closer to 0 to create less damping and more oscillation.
109
+ * @param animations Callback with the changes to perform.
110
+ */
111
+ animateSpring(duration: number, dampingRatio: number, animations: () => void): Animator
112
+ }
@@ -0,0 +1,29 @@
1
+ import { iOS, type HybridObject } from 'nitro-core'
2
+ import type { View } from './View.nitro'
3
+ import type { ListenerSubscription } from './ListenerSubscription'
4
+ import type { EdgeInsets } from './EdgeInsets'
5
+
6
+ export * from '#nitro/ViewController'
7
+
8
+ export type ModifierKey = 'command' | 'alternate' | 'control' | 'shift'
9
+
10
+ @iOS({
11
+ language: 'swift',
12
+ implementation: {
13
+ className: 'HybridViewController',
14
+ },
15
+ protocolConformances: [{ protocol: 'ViewController' }],
16
+ })
17
+ export declare class ViewController extends HybridObject {
18
+ public constructor()
19
+
20
+ readonly view: View
21
+ /**
22
+ * Observes changes to this controller's root {@linkcode View.safeAreaInsets}.
23
+ * Remove the returned subscription when observation is no longer needed.
24
+ */
25
+ addOnSafeAreaInsetsChangedListener(listener: (insets: EdgeInsets) => void): ListenerSubscription
26
+ present(other: ViewController, animated: boolean, completion: () => void): void
27
+ dismiss(animated: boolean, completion: () => void): void
28
+ addOnKeyPressedListener(key: string, modifiers: ModifierKey[], onPress: () => void): ListenerSubscription
29
+ }
@@ -0,0 +1,20 @@
1
+ import { iOS, type HybridObject } from 'nitro-core'
2
+ import type { Screen } from './Screen.nitro'
3
+ import type { ViewController } from './ViewController.nitro'
4
+ import type { WindowScene } from './WindowScene.nitro'
5
+
6
+ export * from '#nitro/Window'
7
+
8
+ @iOS({
9
+ language: 'swift',
10
+ implementation: {
11
+ className: 'HybridWindow',
12
+ },
13
+ protocolConformances: [{ protocol: 'Window' }],
14
+ })
15
+ export declare class Window extends HybridObject {
16
+ public constructor(scene: WindowScene, rootViewController: ViewController)
17
+
18
+ readonly screen: Screen
19
+ makeKeyAndVisible(): void
20
+ }
@@ -0,0 +1,15 @@
1
+ import { iOS, type HybridObject } from 'nitro-core'
2
+ import type { Window } from './Window.nitro'
3
+
4
+ export * from '#nitro/WindowScene'
5
+
6
+ @iOS({
7
+ language: 'swift',
8
+ implementation: {
9
+ className: 'HybridWindowScene',
10
+ },
11
+ protocolConformances: [{ protocol: 'WindowScene' }],
12
+ })
13
+ export declare class WindowScene extends HybridObject {
14
+ readonly windows: Window[]
15
+ }
@@ -0,0 +1,44 @@
1
+ import type ReactReconciler from "react-reconciler";
2
+ import type { View } from "../specs/View.nitro";
3
+ import type { Label } from "../specs/Label.nitro";
4
+ import type { ViewPropsMap } from "./ViewPropsUpdater";
5
+ import type { ReactRoot } from "./ReactRoot";
6
+
7
+ export type { ViewPropsMap, ViewPropsUpdater } from "./ViewPropsUpdater";
8
+
9
+ export type ReconcilerElementType = keyof ViewPropsMap;
10
+
11
+ export type ReconcilerProps = Record<string, unknown> //ViewPropsMap[ReconcilerElementType];
12
+
13
+ export type ReconcilerHostContext = Readonly<{}>
14
+
15
+ export type ReactNitroReconcilerHostConfig = ReactReconciler.HostConfig<
16
+ // type - react transforms <MyHostComp> to a "MyHostComp" string
17
+ ReconcilerElementType,
18
+ // props - the union of built-in host component props
19
+ ReconcilerProps,
20
+ // container - the renderer's root destination
21
+ ReactRoot,
22
+ // Instance - instances of host elements
23
+ View,
24
+ // TextInstance - React distinguishes text from other elements
25
+ Label,
26
+ // Suspense instance
27
+ View | Label,
28
+ // TODO: Hydratable instance
29
+ never, // TODO: can we leverage hydration somehow (fast first app render from previous state?)
30
+ // FormInstance
31
+ never,
32
+ // PublicInstance,
33
+ View | Label,
34
+ // TODO: HostContext - Context provided to the host components. not decided yet.
35
+ ReconcilerHostContext,
36
+ // ChildSet - only used in persistence/none-mutation node (e.g. fabric)
37
+ never,
38
+ // TODO: TimeoutHandle - used for scheduling timeouts
39
+ ReturnType<typeof setTimeout>,
40
+ // NoTimeout tbh no clue what this is
41
+ -1,
42
+ // TransitionStatus - Seems to be only used by ReactDOM for form actions
43
+ null
44
+ >
@@ -0,0 +1,5 @@
1
+ import type { View } from "../specs/View.nitro";
2
+
3
+ export type ReactRoot = {
4
+ rootView: View
5
+ }
@@ -0,0 +1,6 @@
1
+ /** Native Map constructor that requires an entry for every key. */
2
+ export type StrictMap<Key extends PropertyKey, Value> = new <
3
+ const Entries extends readonly (readonly [Key, Value])[],
4
+ >(
5
+ entries: Entries & Record<Exclude<Key, Entries[number][0]>, never>,
6
+ ) => Map<Key, Value>;