pythonnative 0.40.0__cp313-cp313-win_amd64.whl

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 (418) hide show
  1. pythonnative/__init__.py +411 -0
  2. pythonnative/_ios_log.py +92 -0
  3. pythonnative/_yoga.cp313-win_amd64.pyd +0 -0
  4. pythonnative/alerts.py +236 -0
  5. pythonnative/animated.py +1687 -0
  6. pythonnative/animation_graph.py +78 -0
  7. pythonnative/appearance.py +124 -0
  8. pythonnative/bootstrap.py +100 -0
  9. pythonnative/bridge/__init__.py +302 -0
  10. pythonnative/bridge/android.py +78 -0
  11. pythonnative/bridge/codec.py +170 -0
  12. pythonnative/bridge/commits.py +114 -0
  13. pythonnative/bridge/fake.py +243 -0
  14. pythonnative/bridge/ios.py +138 -0
  15. pythonnative/bridge/web.py +489 -0
  16. pythonnative/cli/__init__.py +7 -0
  17. pythonnative/cli/pn.py +1214 -0
  18. pythonnative/component.py +271 -0
  19. pythonnative/components/__init__.py +111 -0
  20. pythonnative/components/_base.py +166 -0
  21. pythonnative/components/controls.py +521 -0
  22. pythonnative/components/layout.py +518 -0
  23. pythonnative/components/lists.py +785 -0
  24. pythonnative/components/media.py +204 -0
  25. pythonnative/components/overlays.py +107 -0
  26. pythonnative/components/pressable.py +252 -0
  27. pythonnative/components/structural.py +167 -0
  28. pythonnative/components/text.py +291 -0
  29. pythonnative/devclient.py +824 -0
  30. pythonnative/devserver/__init__.py +34 -0
  31. pythonnative/devserver/server.py +718 -0
  32. pythonnative/devserver/static/animation_graph.js +82 -0
  33. pythonnative/devserver/static/bridge.js +147 -0
  34. pythonnative/devserver/static/colors.js +70 -0
  35. pythonnative/devserver/static/host.js +552 -0
  36. pythonnative/devserver/static/index.html +60 -0
  37. pythonnative/devserver/static/layout.js +85 -0
  38. pythonnative/devserver/static/preview.css +415 -0
  39. pythonnative/devserver/static/renderer.js +1994 -0
  40. pythonnative/devserver/static/shell.js +345 -0
  41. pythonnative/devserver/static/yoga/LICENSE +21 -0
  42. pythonnative/devserver/static/yoga/binaries/yoga-wasm-base64-esm.js +75 -0
  43. pythonnative/devserver/static/yoga/src/generated/YGEnums.d.ts +189 -0
  44. pythonnative/devserver/static/yoga/src/generated/YGEnums.js +211 -0
  45. pythonnative/devserver/static/yoga/src/generated/YGEnums.js.map +1 -0
  46. pythonnative/devserver/static/yoga/src/index.d.ts +12 -0
  47. pythonnative/devserver/static/yoga/src/index.js +16 -0
  48. pythonnative/devserver/static/yoga/src/index.js.map +1 -0
  49. pythonnative/devserver/static/yoga/src/load.d.ts +11 -0
  50. pythonnative/devserver/static/yoga/src/load.js +17 -0
  51. pythonnative/devserver/static/yoga/src/load.js.map +1 -0
  52. pythonnative/devserver/static/yoga/src/wrapAssembly.d.ts +155 -0
  53. pythonnative/devserver/static/yoga/src/wrapAssembly.js +125 -0
  54. pythonnative/devserver/static/yoga/src/wrapAssembly.js.map +1 -0
  55. pythonnative/devserver/watcher.py +267 -0
  56. pythonnative/devserver/ws.py +421 -0
  57. pythonnative/diagnostics.py +241 -0
  58. pythonnative/element.py +159 -0
  59. pythonnative/equality.py +19 -0
  60. pythonnative/events.py +231 -0
  61. pythonnative/gestures.py +1333 -0
  62. pythonnative/hooks.py +1621 -0
  63. pythonnative/hosts/__init__.py +63 -0
  64. pythonnative/hosts/base.py +596 -0
  65. pythonnative/hosts/native.py +302 -0
  66. pythonnative/hot_reload.py +585 -0
  67. pythonnative/layout.py +328 -0
  68. pythonnative/mutations.py +142 -0
  69. pythonnative/native/android/build.gradle +52 -0
  70. pythonnative/native/android/gradle.properties +3 -0
  71. pythonnative/native/android/settings.gradle +12 -0
  72. pythonnative/native/android/src/main/AndroidManifest.xml +11 -0
  73. pythonnative/native/android/src/main/cpp/CMakeLists.txt +9 -0
  74. pythonnative/native/android/src/main/cpp/yoga_jni.cpp +52 -0
  75. pythonnative/native/android/src/main/java/com/pythonnative/generated/NativeModules.kt +5 -0
  76. pythonnative/native/android/src/main/java/com/pythonnative/generated/NativeProps.kt +3705 -0
  77. pythonnative/native/android/src/main/java/com/pythonnative/generated/PNContracts.kt +129 -0
  78. pythonnative/native/android/src/main/java/com/pythonnative/runtime/PNBridge.kt +261 -0
  79. pythonnative/native/android/src/main/java/com/pythonnative/runtime/PythonHost.kt +20 -0
  80. pythonnative/native/android/src/main/java/com/pythonnative/runtime/animation/AnimationGraph.kt +108 -0
  81. pythonnative/native/android/src/main/java/com/pythonnative/runtime/animation/AnimationSpecs.kt +141 -0
  82. pythonnative/native/android/src/main/java/com/pythonnative/runtime/animation/PNAnimator.kt +257 -0
  83. pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/CommitState.kt +106 -0
  84. pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/JsonUtil.kt +175 -0
  85. pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/MainThread.kt +40 -0
  86. pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/PNLog.kt +33 -0
  87. pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/PNRegistry.kt +82 -0
  88. pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/PNTransaction.kt +80 -0
  89. pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/TransactionApplier.kt +117 -0
  90. pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/ViewRegistry.kt +74 -0
  91. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/BuiltinComponents.kt +37 -0
  92. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ButtonManager.kt +32 -0
  93. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ComponentManager.kt +213 -0
  94. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ContainerManagers.kt +69 -0
  95. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ControlManagers.kt +186 -0
  96. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/DatePickerManager.kt +123 -0
  97. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ImageLoader.kt +141 -0
  98. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ImageManager.kt +162 -0
  99. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ModalManager.kt +134 -0
  100. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PNColor.kt +201 -0
  101. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PickerManager.kt +86 -0
  102. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PortalManager.kt +55 -0
  103. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PressableManager.kt +122 -0
  104. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ScreenStackManager.kt +110 -0
  105. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ScrollViewManager.kt +214 -0
  106. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/SegmentedControlManager.kt +113 -0
  107. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/StatusBarManager.kt +52 -0
  108. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/TabBarManager.kt +131 -0
  109. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/TextInputManager.kt +250 -0
  110. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/TextManager.kt +233 -0
  111. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ViewStyler.kt +355 -0
  112. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/VirtualListManager.kt +159 -0
  113. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/WebViewManager.kt +149 -0
  114. pythonnative/native/android/src/main/java/com/pythonnative/runtime/gestures/GestureArbiter.kt +233 -0
  115. pythonnative/native/android/src/main/java/com/pythonnative/runtime/gestures/GestureCoordinator.kt +127 -0
  116. pythonnative/native/android/src/main/java/com/pythonnative/runtime/gestures/GestureRecognizers.kt +527 -0
  117. pythonnative/native/android/src/main/java/com/pythonnative/runtime/layout/NativeLayout.kt +145 -0
  118. pythonnative/native/android/src/main/java/com/pythonnative/runtime/layout/YogaNode.kt +29 -0
  119. pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/BuiltinModules.kt +73 -0
  120. pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/DeviceModules.kt +316 -0
  121. pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/HostModule.kt +61 -0
  122. pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/MediaModules.kt +200 -0
  123. pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/NativeModule.kt +158 -0
  124. pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/NotificationsModule.kt +100 -0
  125. pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/PermissionsModule.kt +99 -0
  126. pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/StorageModules.kt +89 -0
  127. pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/SystemModules.kt +178 -0
  128. pythonnative/native/android/src/main/java/com/pythonnative/runtime/plugins/GeneratedPlugins.kt +16 -0
  129. pythonnative/native/android/src/main/java/com/pythonnative/runtime/screens/PNScreenFragment.kt +188 -0
  130. pythonnative/native/android/src/main/java/com/pythonnative/runtime/screens/ScreenRegistry.kt +80 -0
  131. pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNAccessibilityDelegate.kt +48 -0
  132. pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNBorderDrawable.kt +76 -0
  133. pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNEditText.kt +18 -0
  134. pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNFrameLayout.kt +49 -0
  135. pythonnative/native/android/src/test/java/com/pythonnative/runtime/AnimationSpecsTest.kt +75 -0
  136. pythonnative/native/android/src/test/java/com/pythonnative/runtime/GestureArbiterTest.kt +197 -0
  137. pythonnative/native/android/src/test/java/com/pythonnative/runtime/PNColorTest.kt +47 -0
  138. pythonnative/native/android/src/test/java/com/pythonnative/runtime/PNTransactionTest.kt +78 -0
  139. pythonnative/native/android/src/test/java/com/pythonnative/runtime/PromiseTest.kt +89 -0
  140. pythonnative/native/ios/Package.swift +23 -0
  141. pythonnative/native/ios/Sources/PythonNativeKit/Animation/PNAnimationGraph.swift +199 -0
  142. pythonnative/native/ios/Sources/PythonNativeKit/Animation/PNAnimator.swift +312 -0
  143. pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNBridge.swift +255 -0
  144. pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNCommit.swift +104 -0
  145. pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNRegistry.swift +142 -0
  146. pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNTransaction.swift +166 -0
  147. pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNViewRegistry.swift +53 -0
  148. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNButtonManagers.swift +207 -0
  149. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNColor.swift +173 -0
  150. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNComponentManager.swift +183 -0
  151. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNContainerView.swift +56 -0
  152. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNControlManagers.swift +281 -0
  153. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNImageManager.swift +222 -0
  154. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNOverlayManagers.swift +243 -0
  155. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNPressableManager.swift +114 -0
  156. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNScreenStackManager.swift +107 -0
  157. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNScrollViewManager.swift +197 -0
  158. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTabBarManager.swift +106 -0
  159. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTextInputManager.swift +297 -0
  160. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTextManager.swift +230 -0
  161. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTransform.swift +82 -0
  162. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNViewManager.swift +86 -0
  163. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNViewState.swift +87 -0
  164. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNViewStyler.swift +340 -0
  165. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNVirtualListManager.swift +155 -0
  166. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNWebViewManager.swift +124 -0
  167. pythonnative/native/ios/Sources/PythonNativeKit/Generated/NativeModules.swift +1 -0
  168. pythonnative/native/ios/Sources/PythonNativeKit/Generated/NativeProps.swift +3775 -0
  169. pythonnative/native/ios/Sources/PythonNativeKit/Generated/PNContracts.swift +46 -0
  170. pythonnative/native/ios/Sources/PythonNativeKit/Gestures/PNGestureCoordinator.swift +260 -0
  171. pythonnative/native/ios/Sources/PythonNativeKit/Layout/PNLayout.swift +173 -0
  172. pythonnative/native/ios/Sources/PythonNativeKit/Modules/AlertModule.swift +92 -0
  173. pythonnative/native/ios/Sources/PythonNativeKit/Modules/HostModule.swift +80 -0
  174. pythonnative/native/ios/Sources/PythonNativeKit/Modules/LifecycleModules.swift +174 -0
  175. pythonnative/native/ios/Sources/PythonNativeKit/Modules/MediaModules.swift +177 -0
  176. pythonnative/native/ios/Sources/PythonNativeKit/Modules/PNNativeModule.swift +168 -0
  177. pythonnative/native/ios/Sources/PythonNativeKit/Modules/PermissionModules.swift +266 -0
  178. pythonnative/native/ios/Sources/PythonNativeKit/Modules/SystemModules.swift +251 -0
  179. pythonnative/native/ios/Sources/PythonNativeKit/Plugins/PNPluginRegistration.swift +8 -0
  180. pythonnative/native/ios/Sources/PythonNativeKit/Screens/PNScreenRegistry.swift +46 -0
  181. pythonnative/native/ios/Sources/PythonNativeKit/Screens/PNViewController.swift +237 -0
  182. pythonnative/native/ios/Sources/PythonNativeKit/Support/PNCompat.swift +46 -0
  183. pythonnative/native/ios/Sources/PythonNativeKit/Support/PNJSON.swift +173 -0
  184. pythonnative/native/ios/Sources/PythonNativeKit/Support/PNLog.swift +47 -0
  185. pythonnative/native/ios/Sources/PythonNativeKit/Support/PNWindow.swift +51 -0
  186. pythonnative/native/ios/Tests/PythonNativeKitTests/PNAnimationGraphTests.swift +26 -0
  187. pythonnative/native/ios/Tests/PythonNativeKitTests/PNColorTests.swift +50 -0
  188. pythonnative/native/ios/Tests/PythonNativeKitTests/PNCommitTests.swift +86 -0
  189. pythonnative/native/ios/Tests/PythonNativeKitTests/PNGestureTests.swift +101 -0
  190. pythonnative/native/ios/Tests/PythonNativeKitTests/PNManagerTests.swift +126 -0
  191. pythonnative/native/ios/Tests/PythonNativeKitTests/PNModuleTests.swift +111 -0
  192. pythonnative/native/ios/Tests/PythonNativeKitTests/PNTransactionTests.swift +91 -0
  193. pythonnative/native/yoga/LICENSE +21 -0
  194. pythonnative/native/yoga/Package.swift +9 -0
  195. pythonnative/native/yoga/VENDORED.md +2 -0
  196. pythonnative/native/yoga/include/PNStyle.h +10 -0
  197. pythonnative/native/yoga/include/module.modulemap +5 -0
  198. pythonnative/native/yoga/include/yoga/YGConfig.h +158 -0
  199. pythonnative/native/yoga/include/yoga/YGEnums.h +142 -0
  200. pythonnative/native/yoga/include/yoga/YGMacros.h +99 -0
  201. pythonnative/native/yoga/include/yoga/YGNode.h +304 -0
  202. pythonnative/native/yoga/include/yoga/YGNodeLayout.h +35 -0
  203. pythonnative/native/yoga/include/yoga/YGNodeStyle.h +130 -0
  204. pythonnative/native/yoga/include/yoga/YGPixelGrid.h +29 -0
  205. pythonnative/native/yoga/include/yoga/YGValue.h +84 -0
  206. pythonnative/native/yoga/include/yoga/Yoga.h +21 -0
  207. pythonnative/native/yoga/python.cpp +16 -0
  208. pythonnative/native/yoga/style.cpp +272 -0
  209. pythonnative/native/yoga/yoga/CMakeLists.txt +41 -0
  210. pythonnative/native/yoga/yoga/YGConfig.cpp +92 -0
  211. pythonnative/native/yoga/yoga/YGConfig.h +158 -0
  212. pythonnative/native/yoga/yoga/YGEnums.cpp +262 -0
  213. pythonnative/native/yoga/yoga/YGEnums.h +142 -0
  214. pythonnative/native/yoga/yoga/YGMacros.h +99 -0
  215. pythonnative/native/yoga/yoga/YGNode.cpp +366 -0
  216. pythonnative/native/yoga/yoga/YGNode.h +304 -0
  217. pythonnative/native/yoga/yoga/YGNodeLayout.cpp +92 -0
  218. pythonnative/native/yoga/yoga/YGNodeLayout.h +35 -0
  219. pythonnative/native/yoga/yoga/YGNodeStyle.cpp +405 -0
  220. pythonnative/native/yoga/yoga/YGNodeStyle.h +130 -0
  221. pythonnative/native/yoga/yoga/YGPixelGrid.cpp +22 -0
  222. pythonnative/native/yoga/yoga/YGPixelGrid.h +29 -0
  223. pythonnative/native/yoga/yoga/YGValue.cpp +20 -0
  224. pythonnative/native/yoga/yoga/YGValue.h +84 -0
  225. pythonnative/native/yoga/yoga/Yoga.h +21 -0
  226. pythonnative/native/yoga/yoga/algorithm/AbsoluteLayout.cpp +563 -0
  227. pythonnative/native/yoga/yoga/algorithm/AbsoluteLayout.h +41 -0
  228. pythonnative/native/yoga/yoga/algorithm/Align.h +72 -0
  229. pythonnative/native/yoga/yoga/algorithm/Baseline.cpp +78 -0
  230. pythonnative/native/yoga/yoga/algorithm/Baseline.h +21 -0
  231. pythonnative/native/yoga/yoga/algorithm/BoundAxis.h +79 -0
  232. pythonnative/native/yoga/yoga/algorithm/Cache.cpp +121 -0
  233. pythonnative/native/yoga/yoga/algorithm/Cache.h +30 -0
  234. pythonnative/native/yoga/yoga/algorithm/CalculateLayout.cpp +2428 -0
  235. pythonnative/native/yoga/yoga/algorithm/CalculateLayout.h +38 -0
  236. pythonnative/native/yoga/yoga/algorithm/FlexDirection.h +120 -0
  237. pythonnative/native/yoga/yoga/algorithm/FlexLine.cpp +124 -0
  238. pythonnative/native/yoga/yoga/algorithm/FlexLine.h +75 -0
  239. pythonnative/native/yoga/yoga/algorithm/PixelGrid.cpp +132 -0
  240. pythonnative/native/yoga/yoga/algorithm/PixelGrid.h +29 -0
  241. pythonnative/native/yoga/yoga/algorithm/SizingMode.h +73 -0
  242. pythonnative/native/yoga/yoga/algorithm/TrailingPosition.h +44 -0
  243. pythonnative/native/yoga/yoga/config/Config.cpp +135 -0
  244. pythonnative/native/yoga/yoga/config/Config.h +92 -0
  245. pythonnative/native/yoga/yoga/debug/AssertFatal.cpp +53 -0
  246. pythonnative/native/yoga/yoga/debug/AssertFatal.h +29 -0
  247. pythonnative/native/yoga/yoga/debug/Log.cpp +107 -0
  248. pythonnative/native/yoga/yoga/debug/Log.h +34 -0
  249. pythonnative/native/yoga/yoga/enums/Align.h +47 -0
  250. pythonnative/native/yoga/yoga/enums/BoxSizing.h +40 -0
  251. pythonnative/native/yoga/yoga/enums/Dimension.h +40 -0
  252. pythonnative/native/yoga/yoga/enums/Direction.h +41 -0
  253. pythonnative/native/yoga/yoga/enums/Display.h +41 -0
  254. pythonnative/native/yoga/yoga/enums/Edge.h +47 -0
  255. pythonnative/native/yoga/yoga/enums/Errata.h +41 -0
  256. pythonnative/native/yoga/yoga/enums/ExperimentalFeature.h +39 -0
  257. pythonnative/native/yoga/yoga/enums/FlexDirection.h +42 -0
  258. pythonnative/native/yoga/yoga/enums/Gutter.h +41 -0
  259. pythonnative/native/yoga/yoga/enums/Justify.h +44 -0
  260. pythonnative/native/yoga/yoga/enums/LogLevel.h +44 -0
  261. pythonnative/native/yoga/yoga/enums/MeasureMode.h +41 -0
  262. pythonnative/native/yoga/yoga/enums/NodeType.h +40 -0
  263. pythonnative/native/yoga/yoga/enums/Overflow.h +41 -0
  264. pythonnative/native/yoga/yoga/enums/PhysicalEdge.h +21 -0
  265. pythonnative/native/yoga/yoga/enums/PositionType.h +41 -0
  266. pythonnative/native/yoga/yoga/enums/Unit.h +42 -0
  267. pythonnative/native/yoga/yoga/enums/Wrap.h +41 -0
  268. pythonnative/native/yoga/yoga/enums/YogaEnums.h +85 -0
  269. pythonnative/native/yoga/yoga/event/event.cpp +87 -0
  270. pythonnative/native/yoga/yoga/event/event.h +130 -0
  271. pythonnative/native/yoga/yoga/module.modulemap +21 -0
  272. pythonnative/native/yoga/yoga/node/CachedMeasurement.h +53 -0
  273. pythonnative/native/yoga/yoga/node/LayoutResults.cpp +48 -0
  274. pythonnative/native/yoga/yoga/node/LayoutResults.h +122 -0
  275. pythonnative/native/yoga/yoga/node/LayoutableChildren.h +148 -0
  276. pythonnative/native/yoga/yoga/node/Node.cpp +443 -0
  277. pythonnative/native/yoga/yoga/node/Node.h +337 -0
  278. pythonnative/native/yoga/yoga/numeric/Comparison.h +81 -0
  279. pythonnative/native/yoga/yoga/numeric/FloatOptional.h +93 -0
  280. pythonnative/native/yoga/yoga/style/SmallValueBuffer.h +133 -0
  281. pythonnative/native/yoga/yoga/style/Style.h +757 -0
  282. pythonnative/native/yoga/yoga/style/StyleLength.h +107 -0
  283. pythonnative/native/yoga/yoga/style/StyleValueHandle.h +98 -0
  284. pythonnative/native/yoga/yoga/style/StyleValuePool.h +127 -0
  285. pythonnative/native_modules/__init__.py +124 -0
  286. pythonnative/native_modules/app_state.py +99 -0
  287. pythonnative/native_modules/battery.py +75 -0
  288. pythonnative/native_modules/biometrics.py +42 -0
  289. pythonnative/native_modules/camera.py +65 -0
  290. pythonnative/native_modules/clipboard.py +46 -0
  291. pythonnative/native_modules/fallback.py +324 -0
  292. pythonnative/native_modules/file_system.py +145 -0
  293. pythonnative/native_modules/haptics.py +75 -0
  294. pythonnative/native_modules/linking.py +123 -0
  295. pythonnative/native_modules/location.py +75 -0
  296. pythonnative/native_modules/net_info.py +112 -0
  297. pythonnative/native_modules/notifications.py +129 -0
  298. pythonnative/native_modules/permissions.py +108 -0
  299. pythonnative/native_modules/registry.py +526 -0
  300. pythonnative/native_modules/secure_store.py +52 -0
  301. pythonnative/native_modules/share.py +51 -0
  302. pythonnative/native_views/__init__.py +375 -0
  303. pythonnative/native_views/base.py +316 -0
  304. pythonnative/native_views/bridge_backend.py +277 -0
  305. pythonnative/navigation/__init__.py +103 -0
  306. pythonnative/navigation/container.py +154 -0
  307. pythonnative/navigation/handle.py +540 -0
  308. pythonnative/navigation/hooks.py +133 -0
  309. pythonnative/navigation/host.py +58 -0
  310. pythonnative/navigation/linking.py +200 -0
  311. pythonnative/navigation/navigators.py +659 -0
  312. pythonnative/navigation/screen.py +149 -0
  313. pythonnative/navigation/state.py +269 -0
  314. pythonnative/net.py +248 -0
  315. pythonnative/platform.py +166 -0
  316. pythonnative/platform_metrics.py +252 -0
  317. pythonnative/preview.py +287 -0
  318. pythonnative/profiling.py +101 -0
  319. pythonnative/project/__init__.py +68 -0
  320. pythonnative/project/android.py +557 -0
  321. pythonnative/project/builder.py +817 -0
  322. pythonnative/project/config.py +773 -0
  323. pythonnative/project/deps.py +719 -0
  324. pythonnative/project/devices.py +304 -0
  325. pythonnative/project/doctor.py +283 -0
  326. pythonnative/project/fingerprint.py +171 -0
  327. pythonnative/project/icons.py +247 -0
  328. pythonnative/project/ios.py +325 -0
  329. pythonnative/project/lockfile.py +100 -0
  330. pythonnative/project/permissions.py +361 -0
  331. pythonnative/project/plugins.py +519 -0
  332. pythonnative/project/runtime_assets.py +183 -0
  333. pythonnative/py.typed +0 -0
  334. pythonnative/query.py +153 -0
  335. pythonnative/reconciler/__init__.py +29 -0
  336. pythonnative/reconciler/boundaries.py +375 -0
  337. pythonnative/reconciler/children.py +88 -0
  338. pythonnative/reconciler/core.py +1165 -0
  339. pythonnative/reconciler/layout_pass.py +393 -0
  340. pythonnative/reconciler/vnode.py +266 -0
  341. pythonnative/refresh.py +55 -0
  342. pythonnative/runtime.py +306 -0
  343. pythonnative/scheduler.py +159 -0
  344. pythonnative/sdk/__init__.py +153 -0
  345. pythonnative/sdk/_components.py +427 -0
  346. pythonnative/sdk/builtins.py +91 -0
  347. pythonnative/sdk/codegen.py +149 -0
  348. pythonnative/sdk/module_codegen.py +184 -0
  349. pythonnative/sdk/schema.py +224 -0
  350. pythonnative/sdk/templates/contracts.kt +46 -0
  351. pythonnative/sdk/templates/contracts.swift +46 -0
  352. pythonnative/storage.py +184 -0
  353. pythonnative/style.py +841 -0
  354. pythonnative/suspense.py +183 -0
  355. pythonnative/templates/android_template/app/build.gradle +75 -0
  356. pythonnative/templates/android_template/app/proguard-rules.pro +21 -0
  357. pythonnative/templates/android_template/app/src/androidTest/java/com/pythonnative/android_template/ExampleInstrumentedTest.kt +24 -0
  358. pythonnative/templates/android_template/app/src/debug/AndroidManifest.xml +7 -0
  359. pythonnative/templates/android_template/app/src/main/AndroidManifest.xml +32 -0
  360. pythonnative/templates/android_template/app/src/main/java/com/pythonnative/android_template/MainActivity.kt +130 -0
  361. pythonnative/templates/android_template/app/src/main/java/com/pythonnative/android_template/ScreenFragment.kt +13 -0
  362. pythonnative/templates/android_template/app/src/main/res/drawable/ic_launcher_background.xml +170 -0
  363. pythonnative/templates/android_template/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +30 -0
  364. pythonnative/templates/android_template/app/src/main/res/layout/activity_main.xml +10 -0
  365. pythonnative/templates/android_template/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +6 -0
  366. pythonnative/templates/android_template/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +6 -0
  367. pythonnative/templates/android_template/app/src/main/res/mipmap-hdpi/ic_launcher.webp +0 -0
  368. pythonnative/templates/android_template/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp +0 -0
  369. pythonnative/templates/android_template/app/src/main/res/mipmap-mdpi/ic_launcher.webp +0 -0
  370. pythonnative/templates/android_template/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp +0 -0
  371. pythonnative/templates/android_template/app/src/main/res/mipmap-xhdpi/ic_launcher.webp +0 -0
  372. pythonnative/templates/android_template/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp +0 -0
  373. pythonnative/templates/android_template/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp +0 -0
  374. pythonnative/templates/android_template/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp +0 -0
  375. pythonnative/templates/android_template/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp +0 -0
  376. pythonnative/templates/android_template/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp +0 -0
  377. pythonnative/templates/android_template/app/src/main/res/navigation/nav_graph.xml +22 -0
  378. pythonnative/templates/android_template/app/src/main/res/values/colors.xml +5 -0
  379. pythonnative/templates/android_template/app/src/main/res/values/strings.xml +5 -0
  380. pythonnative/templates/android_template/app/src/main/res/values/themes.xml +9 -0
  381. pythonnative/templates/android_template/app/src/main/res/values-night/themes.xml +7 -0
  382. pythonnative/templates/android_template/app/src/main/res/xml/backup_rules.xml +13 -0
  383. pythonnative/templates/android_template/app/src/main/res/xml/data_extraction_rules.xml +19 -0
  384. pythonnative/templates/android_template/app/src/test/java/com/pythonnative/android_template/ExampleUnitTest.kt +17 -0
  385. pythonnative/templates/android_template/build.gradle +10 -0
  386. pythonnative/templates/android_template/gradle/wrapper/gradle-wrapper.jar +0 -0
  387. pythonnative/templates/android_template/gradle/wrapper/gradle-wrapper.properties +6 -0
  388. pythonnative/templates/android_template/gradle.properties +23 -0
  389. pythonnative/templates/android_template/gradlew +185 -0
  390. pythonnative/templates/android_template/gradlew.bat +89 -0
  391. pythonnative/templates/android_template/settings.gradle +17 -0
  392. pythonnative/templates/ios_template/ios_template/AppDelegate.swift +51 -0
  393. pythonnative/templates/ios_template/ios_template/Assets.xcassets/AccentColor.colorset/Contents.json +11 -0
  394. pythonnative/templates/ios_template/ios_template/Assets.xcassets/AppIcon.appiconset/Contents.json +13 -0
  395. pythonnative/templates/ios_template/ios_template/Assets.xcassets/Contents.json +6 -0
  396. pythonnative/templates/ios_template/ios_template/Base.lproj/LaunchScreen.storyboard +25 -0
  397. pythonnative/templates/ios_template/ios_template/BridgingHeader.h +14 -0
  398. pythonnative/templates/ios_template/ios_template/Info.plist +28 -0
  399. pythonnative/templates/ios_template/ios_template/PythonRuntime.swift +390 -0
  400. pythonnative/templates/ios_template/ios_template/SceneDelegate.swift +61 -0
  401. pythonnative/templates/ios_template/ios_template/ViewController.swift +23 -0
  402. pythonnative/templates/ios_template/ios_template.xcodeproj/project.pbxproj +745 -0
  403. pythonnative/templates/ios_template/ios_template.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  404. pythonnative/templates/ios_template/ios_templateTests/ios_templateTests.swift +36 -0
  405. pythonnative/templates/ios_template/ios_templateUITests/ios_templateUITests.swift +41 -0
  406. pythonnative/templates/ios_template/ios_templateUITests/ios_templateUITestsLaunchTests.swift +32 -0
  407. pythonnative/testing/__init__.py +53 -0
  408. pythonnative/testing/backend.py +276 -0
  409. pythonnative/testing/harness.py +369 -0
  410. pythonnative/utils.py +145 -0
  411. pythonnative-0.40.0.dist-info/DELVEWHEEL +2 -0
  412. pythonnative-0.40.0.dist-info/METADATA +150 -0
  413. pythonnative-0.40.0.dist-info/RECORD +418 -0
  414. pythonnative-0.40.0.dist-info/WHEEL +5 -0
  415. pythonnative-0.40.0.dist-info/entry_points.txt +2 -0
  416. pythonnative-0.40.0.dist-info/licenses/LICENSE +21 -0
  417. pythonnative-0.40.0.dist-info/top_level.txt +1 -0
  418. pythonnative.libs/msvcp140-a4c2229bdc2a2a630acdc095b4d86008.dll +0 -0
@@ -0,0 +1,99 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #pragma once
9
+
10
+ #ifdef __cplusplus
11
+ #include <type_traits>
12
+ #endif
13
+
14
+ #ifdef __cplusplus
15
+ #define YG_EXTERN_C_BEGIN extern "C" {
16
+ #define YG_EXTERN_C_END }
17
+ #else
18
+ #define YG_EXTERN_C_BEGIN
19
+ #define YG_EXTERN_C_END
20
+ #endif
21
+
22
+ #if defined(__cplusplus)
23
+ #define YG_DEPRECATED(message) [[deprecated(message)]]
24
+ #elif defined(_MSC_VER)
25
+ #define YG_DEPRECATED(message) __declspec(deprecated(message))
26
+ #else
27
+ #define YG_DEPRECATED(message) __attribute__((deprecated(message)))
28
+ #endif
29
+
30
+ #ifdef _WINDLL
31
+ #define YG_EXPORT __declspec(dllexport)
32
+ #elif !defined(_MSC_VER)
33
+ #define YG_EXPORT __attribute__((visibility("default")))
34
+ #else
35
+ #define YG_EXPORT
36
+ #endif
37
+
38
+ #ifdef __OBJC__
39
+ #if __has_include(<Foundation/Foundation.h>)
40
+ #import <Foundation/Foundation.h>
41
+ #endif
42
+ #endif
43
+
44
+ #ifdef NS_ENUM
45
+ // Cannot use NSInteger as NSInteger has a different size than int (which is the
46
+ // default type of a enum). Therefor when linking the Yoga C library into obj-c
47
+ // the header is a mismatch for the Yoga ABI.
48
+ #define YG_ENUM_BEGIN(name) NS_ENUM(int, name)
49
+ #define YG_ENUM_END(name)
50
+ #else
51
+ #define YG_ENUM_BEGIN(name) enum name
52
+ #define YG_ENUM_END(name) name
53
+ #endif
54
+
55
+ #ifdef __cplusplus
56
+ #define YG_DEFINE_ENUM_FLAG_OPERATORS(name) \
57
+ extern "C++" { \
58
+ constexpr name operator~(name a) { \
59
+ return static_cast<name>( \
60
+ ~static_cast<std::underlying_type<name>::type>(a)); \
61
+ } \
62
+ constexpr name operator|(name a, name b) { \
63
+ return static_cast<name>( \
64
+ static_cast<std::underlying_type<name>::type>(a) | \
65
+ static_cast<std::underlying_type<name>::type>(b)); \
66
+ } \
67
+ constexpr name operator&(name a, name b) { \
68
+ return static_cast<name>( \
69
+ static_cast<std::underlying_type<name>::type>(a) & \
70
+ static_cast<std::underlying_type<name>::type>(b)); \
71
+ } \
72
+ constexpr name operator^(name a, name b) { \
73
+ return static_cast<name>( \
74
+ static_cast<std::underlying_type<name>::type>(a) ^ \
75
+ static_cast<std::underlying_type<name>::type>(b)); \
76
+ } \
77
+ inline name& operator|=(name& a, name b) { \
78
+ return reinterpret_cast<name&>( \
79
+ reinterpret_cast<std::underlying_type<name>::type&>(a) |= \
80
+ static_cast<std::underlying_type<name>::type>(b)); \
81
+ } \
82
+ inline name& operator&=(name& a, name b) { \
83
+ return reinterpret_cast<name&>( \
84
+ reinterpret_cast<std::underlying_type<name>::type&>(a) &= \
85
+ static_cast<std::underlying_type<name>::type>(b)); \
86
+ } \
87
+ inline name& operator^=(name& a, name b) { \
88
+ return reinterpret_cast<name&>( \
89
+ reinterpret_cast<std::underlying_type<name>::type&>(a) ^= \
90
+ static_cast<std::underlying_type<name>::type>(b)); \
91
+ } \
92
+ }
93
+ #else
94
+ #define YG_DEFINE_ENUM_FLAG_OPERATORS(name)
95
+ #endif
96
+
97
+ #define YG_ENUM_DECL(NAME, ...) \
98
+ typedef YG_ENUM_BEGIN(NAME){__VA_ARGS__} YG_ENUM_END(NAME); \
99
+ YG_EXPORT const char* NAME##ToString(NAME);
@@ -0,0 +1,366 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #include <yoga/Yoga.h>
9
+
10
+ #include <yoga/algorithm/Cache.h>
11
+ #include <yoga/algorithm/CalculateLayout.h>
12
+ #include <yoga/debug/AssertFatal.h>
13
+ #include <yoga/debug/Log.h>
14
+ #include <yoga/event/event.h>
15
+ #include <yoga/node/Node.h>
16
+
17
+ using namespace facebook;
18
+ using namespace facebook::yoga;
19
+
20
+ YGNodeRef YGNodeNew(void) {
21
+ return YGNodeNewWithConfig(YGConfigGetDefault());
22
+ }
23
+
24
+ YGNodeRef YGNodeNewWithConfig(const YGConfigConstRef config) {
25
+ auto* node = new yoga::Node{resolveRef(config)};
26
+ yoga::assertFatal(
27
+ config != nullptr, "Tried to construct YGNode with null config");
28
+ Event::publish<Event::NodeAllocation>(node, {config});
29
+
30
+ return node;
31
+ }
32
+
33
+ YGNodeRef YGNodeClone(YGNodeConstRef oldNodeRef) {
34
+ auto oldNode = resolveRef(oldNodeRef);
35
+ const auto node = new yoga::Node(*oldNode);
36
+ Event::publish<Event::NodeAllocation>(node, {node->getConfig()});
37
+ node->setOwner(nullptr);
38
+ return node;
39
+ }
40
+
41
+ void YGNodeFree(const YGNodeRef nodeRef) {
42
+ const auto node = resolveRef(nodeRef);
43
+
44
+ if (auto owner = node->getOwner()) {
45
+ owner->removeChild(node);
46
+ node->setOwner(nullptr);
47
+ }
48
+
49
+ const size_t childCount = node->getChildCount();
50
+ for (size_t i = 0; i < childCount; i++) {
51
+ auto child = node->getChild(i);
52
+ child->setOwner(nullptr);
53
+ }
54
+
55
+ node->clearChildren();
56
+
57
+ Event::publish<Event::NodeDeallocation>(node, {YGNodeGetConfig(node)});
58
+ delete resolveRef(node);
59
+ }
60
+
61
+ void YGNodeFreeRecursive(YGNodeRef rootRef) {
62
+ const auto root = resolveRef(rootRef);
63
+
64
+ size_t skipped = 0;
65
+ while (root->getChildCount() > skipped) {
66
+ const auto child = root->getChild(skipped);
67
+ if (child->getOwner() != root) {
68
+ // Don't free shared nodes that we don't own.
69
+ skipped += 1;
70
+ } else {
71
+ YGNodeRemoveChild(root, child);
72
+ YGNodeFreeRecursive(child);
73
+ }
74
+ }
75
+ YGNodeFree(root);
76
+ }
77
+
78
+ void YGNodeFinalize(const YGNodeRef node) {
79
+ Event::publish<Event::NodeDeallocation>(node, {YGNodeGetConfig(node)});
80
+ delete resolveRef(node);
81
+ }
82
+
83
+ void YGNodeReset(YGNodeRef node) {
84
+ resolveRef(node)->reset();
85
+ }
86
+
87
+ void YGNodeCalculateLayout(
88
+ const YGNodeRef node,
89
+ const float ownerWidth,
90
+ const float ownerHeight,
91
+ const YGDirection ownerDirection) {
92
+ yoga::calculateLayout(
93
+ resolveRef(node), ownerWidth, ownerHeight, scopedEnum(ownerDirection));
94
+ }
95
+
96
+ bool YGNodeGetHasNewLayout(YGNodeConstRef node) {
97
+ return resolveRef(node)->getHasNewLayout();
98
+ }
99
+
100
+ void YGNodeSetHasNewLayout(YGNodeRef node, bool hasNewLayout) {
101
+ resolveRef(node)->setHasNewLayout(hasNewLayout);
102
+ }
103
+
104
+ bool YGNodeIsDirty(YGNodeConstRef node) {
105
+ return resolveRef(node)->isDirty();
106
+ }
107
+
108
+ void YGNodeMarkDirty(const YGNodeRef nodeRef) {
109
+ const auto node = resolveRef(nodeRef);
110
+
111
+ yoga::assertFatalWithNode(
112
+ node,
113
+ node->hasMeasureFunc(),
114
+ "Only leaf nodes with custom measure functions "
115
+ "should manually mark themselves as dirty");
116
+
117
+ node->markDirtyAndPropagate();
118
+ }
119
+
120
+ void YGNodeSetDirtiedFunc(YGNodeRef node, YGDirtiedFunc dirtiedFunc) {
121
+ resolveRef(node)->setDirtiedFunc(dirtiedFunc);
122
+ }
123
+
124
+ YGDirtiedFunc YGNodeGetDirtiedFunc(YGNodeConstRef node) {
125
+ return resolveRef(node)->getDirtiedFunc();
126
+ }
127
+
128
+ void YGNodeInsertChild(
129
+ const YGNodeRef ownerRef,
130
+ const YGNodeRef childRef,
131
+ const size_t index) {
132
+ auto owner = resolveRef(ownerRef);
133
+ auto child = resolveRef(childRef);
134
+
135
+ yoga::assertFatalWithNode(
136
+ owner,
137
+ child->getOwner() == nullptr,
138
+ "Child already has a owner, it must be removed first.");
139
+
140
+ yoga::assertFatalWithNode(
141
+ owner,
142
+ !owner->hasMeasureFunc(),
143
+ "Cannot add child: Nodes with measure functions cannot have children.");
144
+
145
+ owner->insertChild(child, index);
146
+ child->setOwner(owner);
147
+ owner->markDirtyAndPropagate();
148
+ }
149
+
150
+ void YGNodeSwapChild(
151
+ const YGNodeRef ownerRef,
152
+ const YGNodeRef childRef,
153
+ const size_t index) {
154
+ auto owner = resolveRef(ownerRef);
155
+ auto child = resolveRef(childRef);
156
+
157
+ owner->replaceChild(child, index);
158
+ child->setOwner(owner);
159
+ }
160
+
161
+ void YGNodeRemoveChild(
162
+ const YGNodeRef ownerRef,
163
+ const YGNodeRef excludedChildRef) {
164
+ auto owner = resolveRef(ownerRef);
165
+ auto excludedChild = resolveRef(excludedChildRef);
166
+
167
+ if (owner->getChildCount() == 0) {
168
+ // This is an empty set. Nothing to remove.
169
+ return;
170
+ }
171
+
172
+ // Children may be shared between parents, which is indicated by not having an
173
+ // owner. We only want to reset the child completely if it is owned
174
+ // exclusively by one node.
175
+ auto childOwner = excludedChild->getOwner();
176
+ if (owner->removeChild(excludedChild)) {
177
+ if (owner == childOwner) {
178
+ excludedChild->setLayout({}); // layout is no longer valid
179
+ excludedChild->setOwner(nullptr);
180
+ }
181
+ owner->markDirtyAndPropagate();
182
+ }
183
+ }
184
+
185
+ void YGNodeRemoveAllChildren(const YGNodeRef ownerRef) {
186
+ auto owner = resolveRef(ownerRef);
187
+
188
+ const size_t childCount = owner->getChildCount();
189
+ if (childCount == 0) {
190
+ // This is an empty set already. Nothing to do.
191
+ return;
192
+ }
193
+ auto* firstChild = owner->getChild(0);
194
+ if (firstChild->getOwner() == owner) {
195
+ // If the first child has this node as its owner, we assume that this child
196
+ // set is unique.
197
+ for (size_t i = 0; i < childCount; i++) {
198
+ yoga::Node* oldChild = owner->getChild(i);
199
+ oldChild->setLayout({}); // layout is no longer valid
200
+ oldChild->setOwner(nullptr);
201
+ }
202
+ owner->clearChildren();
203
+ owner->markDirtyAndPropagate();
204
+ return;
205
+ }
206
+ // Otherwise, we are not the owner of the child set. We don't have to do
207
+ // anything to clear it.
208
+ owner->setChildren({});
209
+ owner->markDirtyAndPropagate();
210
+ }
211
+
212
+ void YGNodeSetChildren(
213
+ const YGNodeRef ownerRef,
214
+ const YGNodeRef* childrenRefs,
215
+ const size_t count) {
216
+ auto owner = resolveRef(ownerRef);
217
+ auto children = reinterpret_cast<yoga::Node* const*>(childrenRefs);
218
+
219
+ if (owner == nullptr) {
220
+ return;
221
+ }
222
+
223
+ const std::vector<yoga::Node*> childrenVector = {children, children + count};
224
+ if (childrenVector.empty()) {
225
+ if (owner->getChildCount() > 0) {
226
+ for (auto* child : owner->getChildren()) {
227
+ child->setLayout({});
228
+ child->setOwner(nullptr);
229
+ }
230
+ owner->setChildren({});
231
+ owner->markDirtyAndPropagate();
232
+ }
233
+ } else {
234
+ if (owner->getChildCount() > 0) {
235
+ for (auto* oldChild : owner->getChildren()) {
236
+ // Our new children may have nodes in common with the old children. We
237
+ // don't reset these common nodes.
238
+ if (std::find(childrenVector.begin(), childrenVector.end(), oldChild) ==
239
+ childrenVector.end()) {
240
+ oldChild->setLayout({});
241
+ oldChild->setOwner(nullptr);
242
+ }
243
+ }
244
+ }
245
+ owner->setChildren(childrenVector);
246
+ for (yoga::Node* child : childrenVector) {
247
+ child->setOwner(owner);
248
+ }
249
+ owner->markDirtyAndPropagate();
250
+ }
251
+ }
252
+
253
+ YGNodeRef YGNodeGetChild(const YGNodeRef nodeRef, const size_t index) {
254
+ const auto node = resolveRef(nodeRef);
255
+
256
+ if (index < node->getChildren().size()) {
257
+ return node->getChild(index);
258
+ }
259
+ return nullptr;
260
+ }
261
+
262
+ size_t YGNodeGetChildCount(const YGNodeConstRef node) {
263
+ return resolveRef(node)->getChildren().size();
264
+ }
265
+
266
+ YGNodeRef YGNodeGetOwner(const YGNodeRef node) {
267
+ return resolveRef(node)->getOwner();
268
+ }
269
+
270
+ YGNodeRef YGNodeGetParent(const YGNodeRef node) {
271
+ return resolveRef(node)->getOwner();
272
+ }
273
+
274
+ void YGNodeSetConfig(YGNodeRef node, YGConfigRef config) {
275
+ resolveRef(node)->setConfig(resolveRef(config));
276
+ }
277
+
278
+ YGConfigConstRef YGNodeGetConfig(YGNodeRef node) {
279
+ return resolveRef(node)->getConfig();
280
+ }
281
+
282
+ void YGNodeSetContext(YGNodeRef node, void* context) {
283
+ return resolveRef(node)->setContext(context);
284
+ }
285
+
286
+ void* YGNodeGetContext(YGNodeConstRef node) {
287
+ return resolveRef(node)->getContext();
288
+ }
289
+
290
+ void YGNodeSetMeasureFunc(YGNodeRef node, YGMeasureFunc measureFunc) {
291
+ resolveRef(node)->setMeasureFunc(measureFunc);
292
+ }
293
+
294
+ bool YGNodeHasMeasureFunc(YGNodeConstRef node) {
295
+ return resolveRef(node)->hasMeasureFunc();
296
+ }
297
+
298
+ void YGNodeSetBaselineFunc(YGNodeRef node, YGBaselineFunc baselineFunc) {
299
+ resolveRef(node)->setBaselineFunc(baselineFunc);
300
+ }
301
+
302
+ bool YGNodeHasBaselineFunc(YGNodeConstRef node) {
303
+ return resolveRef(node)->hasBaselineFunc();
304
+ }
305
+
306
+ void YGNodeSetIsReferenceBaseline(YGNodeRef nodeRef, bool isReferenceBaseline) {
307
+ const auto node = resolveRef(nodeRef);
308
+ if (node->isReferenceBaseline() != isReferenceBaseline) {
309
+ node->setIsReferenceBaseline(isReferenceBaseline);
310
+ node->markDirtyAndPropagate();
311
+ }
312
+ }
313
+
314
+ bool YGNodeIsReferenceBaseline(YGNodeConstRef node) {
315
+ return resolveRef(node)->isReferenceBaseline();
316
+ }
317
+
318
+ void YGNodeSetNodeType(YGNodeRef node, YGNodeType nodeType) {
319
+ return resolveRef(node)->setNodeType(scopedEnum(nodeType));
320
+ }
321
+
322
+ YGNodeType YGNodeGetNodeType(YGNodeConstRef node) {
323
+ return unscopedEnum(resolveRef(node)->getNodeType());
324
+ }
325
+
326
+ void YGNodeSetAlwaysFormsContainingBlock(
327
+ YGNodeRef node,
328
+ bool alwaysFormsContainingBlock) {
329
+ resolveRef(node)->setAlwaysFormsContainingBlock(alwaysFormsContainingBlock);
330
+ }
331
+
332
+ bool YGNodeGetAlwaysFormsContainingBlock(YGNodeConstRef node) {
333
+ return resolveRef(node)->alwaysFormsContainingBlock();
334
+ }
335
+
336
+ // TODO: This leaks internal details to the public API. Remove after removing
337
+ // ComponentKit usage of it.
338
+ bool YGNodeCanUseCachedMeasurement(
339
+ YGMeasureMode widthMode,
340
+ float availableWidth,
341
+ YGMeasureMode heightMode,
342
+ float availableHeight,
343
+ YGMeasureMode lastWidthMode,
344
+ float lastAvailableWidth,
345
+ YGMeasureMode lastHeightMode,
346
+ float lastAvailableHeight,
347
+ float lastComputedWidth,
348
+ float lastComputedHeight,
349
+ float marginRow,
350
+ float marginColumn,
351
+ YGConfigRef config) {
352
+ return yoga::canUseCachedMeasurement(
353
+ sizingMode(scopedEnum(widthMode)),
354
+ availableWidth,
355
+ sizingMode(scopedEnum(heightMode)),
356
+ availableHeight,
357
+ sizingMode(scopedEnum(lastWidthMode)),
358
+ lastAvailableWidth,
359
+ sizingMode(scopedEnum(lastHeightMode)),
360
+ lastAvailableHeight,
361
+ lastComputedWidth,
362
+ lastComputedHeight,
363
+ marginRow,
364
+ marginColumn,
365
+ resolveRef(config));
366
+ }