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,443 @@
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 <algorithm>
9
+ #include <cstddef>
10
+ #include <iostream>
11
+
12
+ #include <yoga/algorithm/FlexDirection.h>
13
+ #include <yoga/debug/AssertFatal.h>
14
+ #include <yoga/debug/Log.h>
15
+ #include <yoga/node/Node.h>
16
+ #include <yoga/numeric/Comparison.h>
17
+
18
+ namespace facebook::yoga {
19
+
20
+ Node::Node() : Node{&Config::getDefault()} {}
21
+
22
+ Node::Node(const yoga::Config* config) : config_{config} {
23
+ yoga::assertFatal(
24
+ config != nullptr, "Attempting to construct Node with null config");
25
+
26
+ if (config->useWebDefaults()) {
27
+ useWebDefaults();
28
+ }
29
+ }
30
+
31
+ Node::Node(Node&& node) noexcept
32
+ : hasNewLayout_(node.hasNewLayout_),
33
+ isReferenceBaseline_(node.isReferenceBaseline_),
34
+ isDirty_(node.isDirty_),
35
+ alwaysFormsContainingBlock_(node.alwaysFormsContainingBlock_),
36
+ nodeType_(node.nodeType_),
37
+ context_(node.context_),
38
+ measureFunc_(node.measureFunc_),
39
+ baselineFunc_(node.baselineFunc_),
40
+ dirtiedFunc_(node.dirtiedFunc_),
41
+ style_(std::move(node.style_)),
42
+ layout_(node.layout_),
43
+ lineIndex_(node.lineIndex_),
44
+ contentsChildrenCount_(node.contentsChildrenCount_),
45
+ owner_(node.owner_),
46
+ children_(std::move(node.children_)),
47
+ config_(node.config_),
48
+ processedDimensions_(node.processedDimensions_) {
49
+ for (auto c : children_) {
50
+ c->setOwner(this);
51
+ }
52
+ }
53
+
54
+ YGSize Node::measure(
55
+ float availableWidth,
56
+ MeasureMode widthMode,
57
+ float availableHeight,
58
+ MeasureMode heightMode) {
59
+ const auto size = measureFunc_(
60
+ this,
61
+ availableWidth,
62
+ unscopedEnum(widthMode),
63
+ availableHeight,
64
+ unscopedEnum(heightMode));
65
+
66
+ if (yoga::isUndefined(size.height) || size.height < 0 ||
67
+ yoga::isUndefined(size.width) || size.width < 0) {
68
+ yoga::log(
69
+ this,
70
+ LogLevel::Warn,
71
+ "Measure function returned an invalid dimension to Yoga: [width=%f, height=%f]",
72
+ size.width,
73
+ size.height);
74
+ return {
75
+ .width = maxOrDefined(0.0f, size.width),
76
+ .height = maxOrDefined(0.0f, size.height)};
77
+ }
78
+
79
+ return size;
80
+ }
81
+
82
+ float Node::baseline(float width, float height) const {
83
+ return baselineFunc_(this, width, height);
84
+ }
85
+
86
+ float Node::dimensionWithMargin(
87
+ const FlexDirection axis,
88
+ const float widthSize) {
89
+ return getLayout().measuredDimension(dimension(axis)) +
90
+ style_.computeMarginForAxis(axis, widthSize);
91
+ }
92
+
93
+ bool Node::isLayoutDimensionDefined(const FlexDirection axis) {
94
+ const float value = getLayout().measuredDimension(dimension(axis));
95
+ return yoga::isDefined(value) && value >= 0.0f;
96
+ }
97
+
98
+ // Setters
99
+
100
+ void Node::setMeasureFunc(YGMeasureFunc measureFunc) {
101
+ if (measureFunc == nullptr) {
102
+ // TODO: t18095186 Move nodeType to opt-in function and mark appropriate
103
+ // places in Litho
104
+ setNodeType(NodeType::Default);
105
+ } else {
106
+ yoga::assertFatalWithNode(
107
+ this,
108
+ children_.empty(),
109
+ "Cannot set measure function: Nodes with measure functions cannot have "
110
+ "children.");
111
+ // TODO: t18095186 Move nodeType to opt-in function and mark appropriate
112
+ // places in Litho
113
+ setNodeType(NodeType::Text);
114
+ }
115
+
116
+ measureFunc_ = measureFunc;
117
+ }
118
+
119
+ void Node::replaceChild(Node* child, size_t index) {
120
+ auto previousChild = children_[index];
121
+ if (previousChild->style().display() == Display::Contents &&
122
+ child->style().display() != Display::Contents) {
123
+ contentsChildrenCount_--;
124
+ } else if (
125
+ previousChild->style().display() != Display::Contents &&
126
+ child->style().display() == Display::Contents) {
127
+ contentsChildrenCount_++;
128
+ }
129
+
130
+ children_[index] = child;
131
+ }
132
+
133
+ void Node::replaceChild(Node* oldChild, Node* newChild) {
134
+ if (oldChild->style().display() == Display::Contents &&
135
+ newChild->style().display() != Display::Contents) {
136
+ contentsChildrenCount_--;
137
+ } else if (
138
+ oldChild->style().display() != Display::Contents &&
139
+ newChild->style().display() == Display::Contents) {
140
+ contentsChildrenCount_++;
141
+ }
142
+
143
+ std::replace(children_.begin(), children_.end(), oldChild, newChild);
144
+ }
145
+
146
+ void Node::insertChild(Node* child, size_t index) {
147
+ if (child->style().display() == Display::Contents) {
148
+ contentsChildrenCount_++;
149
+ }
150
+
151
+ children_.insert(children_.begin() + static_cast<ptrdiff_t>(index), child);
152
+ }
153
+
154
+ void Node::setConfig(yoga::Config* config) {
155
+ yoga::assertFatal(
156
+ config != nullptr, "Attempting to set a null config on a Node");
157
+ yoga::assertFatalWithConfig(
158
+ config,
159
+ config->useWebDefaults() == config_->useWebDefaults(),
160
+ "UseWebDefaults may not be changed after constructing a Node");
161
+
162
+ if (yoga::configUpdateInvalidatesLayout(*config_, *config)) {
163
+ markDirtyAndPropagate();
164
+ layout_.configVersion = 0;
165
+ } else {
166
+ // If the config is functionally the same, then align the configVersion so
167
+ // that we can reuse the layout cache
168
+ layout_.configVersion = config->getVersion();
169
+ }
170
+
171
+ config_ = config;
172
+ }
173
+
174
+ void Node::setDirty(bool isDirty) {
175
+ if (static_cast<int>(isDirty) == isDirty_) {
176
+ return;
177
+ }
178
+ isDirty_ = isDirty;
179
+ if (isDirty && (dirtiedFunc_ != nullptr)) {
180
+ dirtiedFunc_(this);
181
+ }
182
+ }
183
+
184
+ bool Node::removeChild(Node* child) {
185
+ auto p = std::find(children_.begin(), children_.end(), child);
186
+ if (p != children_.end()) {
187
+ if (child->style().display() == Display::Contents) {
188
+ contentsChildrenCount_--;
189
+ }
190
+
191
+ children_.erase(p);
192
+ return true;
193
+ }
194
+ return false;
195
+ }
196
+
197
+ void Node::removeChild(size_t index) {
198
+ if (children_[index]->style().display() == Display::Contents) {
199
+ contentsChildrenCount_--;
200
+ }
201
+
202
+ children_.erase(children_.begin() + static_cast<ptrdiff_t>(index));
203
+ }
204
+
205
+ void Node::setLayoutDirection(Direction direction) {
206
+ layout_.setDirection(direction);
207
+ }
208
+
209
+ void Node::setLayoutMargin(float margin, PhysicalEdge edge) {
210
+ layout_.setMargin(edge, margin);
211
+ }
212
+
213
+ void Node::setLayoutBorder(float border, PhysicalEdge edge) {
214
+ layout_.setBorder(edge, border);
215
+ }
216
+
217
+ void Node::setLayoutPadding(float padding, PhysicalEdge edge) {
218
+ layout_.setPadding(edge, padding);
219
+ }
220
+
221
+ void Node::setLayoutLastOwnerDirection(Direction direction) {
222
+ layout_.lastOwnerDirection = direction;
223
+ }
224
+
225
+ void Node::setLayoutComputedFlexBasis(const FloatOptional computedFlexBasis) {
226
+ layout_.computedFlexBasis = computedFlexBasis;
227
+ }
228
+
229
+ void Node::setLayoutPosition(float position, PhysicalEdge edge) {
230
+ layout_.setPosition(edge, position);
231
+ }
232
+
233
+ void Node::setLayoutComputedFlexBasisGeneration(
234
+ uint32_t computedFlexBasisGeneration) {
235
+ layout_.computedFlexBasisGeneration = computedFlexBasisGeneration;
236
+ }
237
+
238
+ void Node::setLayoutMeasuredDimension(
239
+ float measuredDimension,
240
+ Dimension dimension) {
241
+ layout_.setMeasuredDimension(dimension, measuredDimension);
242
+ }
243
+
244
+ void Node::setLayoutHadOverflow(bool hadOverflow) {
245
+ layout_.setHadOverflow(hadOverflow);
246
+ }
247
+
248
+ void Node::setLayoutDimension(float LengthValue, Dimension dimension) {
249
+ layout_.setDimension(dimension, LengthValue);
250
+ }
251
+
252
+ // If both left and right are defined, then use left. Otherwise return +left or
253
+ // -right depending on which is defined. Ignore statically positioned nodes as
254
+ // insets do not apply to them.
255
+ float Node::relativePosition(
256
+ FlexDirection axis,
257
+ Direction direction,
258
+ float axisSize) const {
259
+ if (style_.positionType() == PositionType::Static) {
260
+ return 0;
261
+ }
262
+ if (style_.isInlineStartPositionDefined(axis, direction) &&
263
+ !style_.isInlineStartPositionAuto(axis, direction)) {
264
+ return style_.computeInlineStartPosition(axis, direction, axisSize);
265
+ }
266
+
267
+ return -1 * style_.computeInlineEndPosition(axis, direction, axisSize);
268
+ }
269
+
270
+ void Node::setPosition(
271
+ const Direction direction,
272
+ const float ownerWidth,
273
+ const float ownerHeight) {
274
+ /* Root nodes should be always layouted as LTR, so we don't return negative
275
+ * values. */
276
+ const Direction directionRespectingRoot =
277
+ owner_ != nullptr ? direction : Direction::LTR;
278
+ const FlexDirection mainAxis =
279
+ yoga::resolveDirection(style_.flexDirection(), directionRespectingRoot);
280
+ const FlexDirection crossAxis =
281
+ yoga::resolveCrossDirection(mainAxis, directionRespectingRoot);
282
+
283
+ // In the case of position static these are just 0. See:
284
+ // https://www.w3.org/TR/css-position-3/#valdef-position-static
285
+ const float relativePositionMain = relativePosition(
286
+ mainAxis,
287
+ directionRespectingRoot,
288
+ isRow(mainAxis) ? ownerWidth : ownerHeight);
289
+ const float relativePositionCross = relativePosition(
290
+ crossAxis,
291
+ directionRespectingRoot,
292
+ isRow(mainAxis) ? ownerHeight : ownerWidth);
293
+
294
+ const auto mainAxisLeadingEdge = inlineStartEdge(mainAxis, direction);
295
+ const auto mainAxisTrailingEdge = inlineEndEdge(mainAxis, direction);
296
+ const auto crossAxisLeadingEdge = inlineStartEdge(crossAxis, direction);
297
+ const auto crossAxisTrailingEdge = inlineEndEdge(crossAxis, direction);
298
+
299
+ setLayoutPosition(
300
+ (style_.computeInlineStartMargin(mainAxis, direction, ownerWidth) +
301
+ relativePositionMain),
302
+ mainAxisLeadingEdge);
303
+ setLayoutPosition(
304
+ (style_.computeInlineEndMargin(mainAxis, direction, ownerWidth) +
305
+ relativePositionMain),
306
+ mainAxisTrailingEdge);
307
+ setLayoutPosition(
308
+ (style_.computeInlineStartMargin(crossAxis, direction, ownerWidth) +
309
+ relativePositionCross),
310
+ crossAxisLeadingEdge);
311
+ setLayoutPosition(
312
+ (style_.computeInlineEndMargin(crossAxis, direction, ownerWidth) +
313
+ relativePositionCross),
314
+ crossAxisTrailingEdge);
315
+ }
316
+
317
+ Style::Length Node::processFlexBasis() const {
318
+ Style::Length flexBasis = style_.flexBasis();
319
+ if (flexBasis.unit() != Unit::Auto && flexBasis.unit() != Unit::Undefined) {
320
+ return flexBasis;
321
+ }
322
+ if (style_.flex().isDefined() && style_.flex().unwrap() > 0.0f) {
323
+ return config_->useWebDefaults() ? StyleLength::ofAuto()
324
+ : StyleLength::points(0);
325
+ }
326
+ return StyleLength::ofAuto();
327
+ }
328
+
329
+ FloatOptional Node::resolveFlexBasis(
330
+ Direction direction,
331
+ FlexDirection flexDirection,
332
+ float referenceLength,
333
+ float ownerWidth) const {
334
+ FloatOptional value = processFlexBasis().resolve(referenceLength);
335
+ if (style_.boxSizing() == BoxSizing::BorderBox) {
336
+ return value;
337
+ }
338
+
339
+ Dimension dim = dimension(flexDirection);
340
+ FloatOptional dimensionPaddingAndBorder = FloatOptional{
341
+ style_.computePaddingAndBorderForDimension(direction, dim, ownerWidth)};
342
+
343
+ return value +
344
+ (dimensionPaddingAndBorder.isDefined() ? dimensionPaddingAndBorder
345
+ : FloatOptional{0.0});
346
+ }
347
+
348
+ void Node::processDimensions() {
349
+ for (auto dim : {Dimension::Width, Dimension::Height}) {
350
+ if (style_.maxDimension(dim).isDefined() &&
351
+ yoga::inexactEquals(
352
+ style_.maxDimension(dim), style_.minDimension(dim))) {
353
+ processedDimensions_[yoga::to_underlying(dim)] = style_.maxDimension(dim);
354
+ } else {
355
+ processedDimensions_[yoga::to_underlying(dim)] = style_.dimension(dim);
356
+ }
357
+ }
358
+ }
359
+
360
+ Direction Node::resolveDirection(const Direction ownerDirection) {
361
+ if (style_.direction() == Direction::Inherit) {
362
+ return ownerDirection != Direction::Inherit ? ownerDirection
363
+ : Direction::LTR;
364
+ } else {
365
+ return style_.direction();
366
+ }
367
+ }
368
+
369
+ void Node::clearChildren() {
370
+ children_.clear();
371
+ children_.shrink_to_fit();
372
+ }
373
+
374
+ // Other Methods
375
+
376
+ void Node::cloneChildrenIfNeeded() {
377
+ size_t i = 0;
378
+ for (Node*& child : children_) {
379
+ if (child->getOwner() != this) {
380
+ child = resolveRef(config_->cloneNode(child, this, i));
381
+ child->setOwner(this);
382
+ }
383
+ i += 1;
384
+ }
385
+ }
386
+
387
+ void Node::markDirtyAndPropagate() {
388
+ if (!isDirty_) {
389
+ setDirty(true);
390
+ setLayoutComputedFlexBasis(FloatOptional());
391
+ if (owner_ != nullptr) {
392
+ owner_->markDirtyAndPropagate();
393
+ }
394
+ }
395
+ }
396
+
397
+ float Node::resolveFlexGrow() const {
398
+ // Root nodes flexGrow should always be 0
399
+ if (owner_ == nullptr) {
400
+ return 0.0;
401
+ }
402
+ if (style_.flexGrow().isDefined()) {
403
+ return style_.flexGrow().unwrap();
404
+ }
405
+ if (style_.flex().isDefined() && style_.flex().unwrap() > 0.0f) {
406
+ return style_.flex().unwrap();
407
+ }
408
+ return Style::DefaultFlexGrow;
409
+ }
410
+
411
+ float Node::resolveFlexShrink() const {
412
+ if (owner_ == nullptr) {
413
+ return 0.0;
414
+ }
415
+ if (style_.flexShrink().isDefined()) {
416
+ return style_.flexShrink().unwrap();
417
+ }
418
+ if (!config_->useWebDefaults() && style_.flex().isDefined() &&
419
+ style_.flex().unwrap() < 0.0f) {
420
+ return -style_.flex().unwrap();
421
+ }
422
+ return config_->useWebDefaults() ? Style::WebDefaultFlexShrink
423
+ : Style::DefaultFlexShrink;
424
+ }
425
+
426
+ bool Node::isNodeFlexible() {
427
+ return (
428
+ (style_.positionType() != PositionType::Absolute) &&
429
+ (resolveFlexGrow() != 0 || resolveFlexShrink() != 0));
430
+ }
431
+
432
+ void Node::reset() {
433
+ yoga::assertFatalWithNode(
434
+ this,
435
+ children_.empty(),
436
+ "Cannot reset a node which still has children attached");
437
+ yoga::assertFatalWithNode(
438
+ this, owner_ == nullptr, "Cannot reset a node still attached to a owner");
439
+
440
+ *this = Node{getConfig()};
441
+ }
442
+
443
+ } // namespace facebook::yoga