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.
- pythonnative/__init__.py +411 -0
- pythonnative/_ios_log.py +92 -0
- pythonnative/_yoga.cp313-win_amd64.pyd +0 -0
- pythonnative/alerts.py +236 -0
- pythonnative/animated.py +1687 -0
- pythonnative/animation_graph.py +78 -0
- pythonnative/appearance.py +124 -0
- pythonnative/bootstrap.py +100 -0
- pythonnative/bridge/__init__.py +302 -0
- pythonnative/bridge/android.py +78 -0
- pythonnative/bridge/codec.py +170 -0
- pythonnative/bridge/commits.py +114 -0
- pythonnative/bridge/fake.py +243 -0
- pythonnative/bridge/ios.py +138 -0
- pythonnative/bridge/web.py +489 -0
- pythonnative/cli/__init__.py +7 -0
- pythonnative/cli/pn.py +1214 -0
- pythonnative/component.py +271 -0
- pythonnative/components/__init__.py +111 -0
- pythonnative/components/_base.py +166 -0
- pythonnative/components/controls.py +521 -0
- pythonnative/components/layout.py +518 -0
- pythonnative/components/lists.py +785 -0
- pythonnative/components/media.py +204 -0
- pythonnative/components/overlays.py +107 -0
- pythonnative/components/pressable.py +252 -0
- pythonnative/components/structural.py +167 -0
- pythonnative/components/text.py +291 -0
- pythonnative/devclient.py +824 -0
- pythonnative/devserver/__init__.py +34 -0
- pythonnative/devserver/server.py +718 -0
- pythonnative/devserver/static/animation_graph.js +82 -0
- pythonnative/devserver/static/bridge.js +147 -0
- pythonnative/devserver/static/colors.js +70 -0
- pythonnative/devserver/static/host.js +552 -0
- pythonnative/devserver/static/index.html +60 -0
- pythonnative/devserver/static/layout.js +85 -0
- pythonnative/devserver/static/preview.css +415 -0
- pythonnative/devserver/static/renderer.js +1994 -0
- pythonnative/devserver/static/shell.js +345 -0
- pythonnative/devserver/static/yoga/LICENSE +21 -0
- pythonnative/devserver/static/yoga/binaries/yoga-wasm-base64-esm.js +75 -0
- pythonnative/devserver/static/yoga/src/generated/YGEnums.d.ts +189 -0
- pythonnative/devserver/static/yoga/src/generated/YGEnums.js +211 -0
- pythonnative/devserver/static/yoga/src/generated/YGEnums.js.map +1 -0
- pythonnative/devserver/static/yoga/src/index.d.ts +12 -0
- pythonnative/devserver/static/yoga/src/index.js +16 -0
- pythonnative/devserver/static/yoga/src/index.js.map +1 -0
- pythonnative/devserver/static/yoga/src/load.d.ts +11 -0
- pythonnative/devserver/static/yoga/src/load.js +17 -0
- pythonnative/devserver/static/yoga/src/load.js.map +1 -0
- pythonnative/devserver/static/yoga/src/wrapAssembly.d.ts +155 -0
- pythonnative/devserver/static/yoga/src/wrapAssembly.js +125 -0
- pythonnative/devserver/static/yoga/src/wrapAssembly.js.map +1 -0
- pythonnative/devserver/watcher.py +267 -0
- pythonnative/devserver/ws.py +421 -0
- pythonnative/diagnostics.py +241 -0
- pythonnative/element.py +159 -0
- pythonnative/equality.py +19 -0
- pythonnative/events.py +231 -0
- pythonnative/gestures.py +1333 -0
- pythonnative/hooks.py +1621 -0
- pythonnative/hosts/__init__.py +63 -0
- pythonnative/hosts/base.py +596 -0
- pythonnative/hosts/native.py +302 -0
- pythonnative/hot_reload.py +585 -0
- pythonnative/layout.py +328 -0
- pythonnative/mutations.py +142 -0
- pythonnative/native/android/build.gradle +52 -0
- pythonnative/native/android/gradle.properties +3 -0
- pythonnative/native/android/settings.gradle +12 -0
- pythonnative/native/android/src/main/AndroidManifest.xml +11 -0
- pythonnative/native/android/src/main/cpp/CMakeLists.txt +9 -0
- pythonnative/native/android/src/main/cpp/yoga_jni.cpp +52 -0
- pythonnative/native/android/src/main/java/com/pythonnative/generated/NativeModules.kt +5 -0
- pythonnative/native/android/src/main/java/com/pythonnative/generated/NativeProps.kt +3705 -0
- pythonnative/native/android/src/main/java/com/pythonnative/generated/PNContracts.kt +129 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/PNBridge.kt +261 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/PythonHost.kt +20 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/animation/AnimationGraph.kt +108 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/animation/AnimationSpecs.kt +141 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/animation/PNAnimator.kt +257 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/CommitState.kt +106 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/JsonUtil.kt +175 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/MainThread.kt +40 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/PNLog.kt +33 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/PNRegistry.kt +82 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/PNTransaction.kt +80 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/TransactionApplier.kt +117 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/ViewRegistry.kt +74 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/BuiltinComponents.kt +37 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ButtonManager.kt +32 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ComponentManager.kt +213 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ContainerManagers.kt +69 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ControlManagers.kt +186 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/DatePickerManager.kt +123 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ImageLoader.kt +141 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ImageManager.kt +162 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ModalManager.kt +134 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PNColor.kt +201 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PickerManager.kt +86 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PortalManager.kt +55 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PressableManager.kt +122 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ScreenStackManager.kt +110 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ScrollViewManager.kt +214 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/SegmentedControlManager.kt +113 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/StatusBarManager.kt +52 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/TabBarManager.kt +131 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/TextInputManager.kt +250 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/TextManager.kt +233 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ViewStyler.kt +355 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/VirtualListManager.kt +159 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/WebViewManager.kt +149 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/gestures/GestureArbiter.kt +233 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/gestures/GestureCoordinator.kt +127 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/gestures/GestureRecognizers.kt +527 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/layout/NativeLayout.kt +145 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/layout/YogaNode.kt +29 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/BuiltinModules.kt +73 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/DeviceModules.kt +316 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/HostModule.kt +61 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/MediaModules.kt +200 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/NativeModule.kt +158 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/NotificationsModule.kt +100 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/PermissionsModule.kt +99 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/StorageModules.kt +89 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/SystemModules.kt +178 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/plugins/GeneratedPlugins.kt +16 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/screens/PNScreenFragment.kt +188 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/screens/ScreenRegistry.kt +80 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNAccessibilityDelegate.kt +48 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNBorderDrawable.kt +76 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNEditText.kt +18 -0
- pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNFrameLayout.kt +49 -0
- pythonnative/native/android/src/test/java/com/pythonnative/runtime/AnimationSpecsTest.kt +75 -0
- pythonnative/native/android/src/test/java/com/pythonnative/runtime/GestureArbiterTest.kt +197 -0
- pythonnative/native/android/src/test/java/com/pythonnative/runtime/PNColorTest.kt +47 -0
- pythonnative/native/android/src/test/java/com/pythonnative/runtime/PNTransactionTest.kt +78 -0
- pythonnative/native/android/src/test/java/com/pythonnative/runtime/PromiseTest.kt +89 -0
- pythonnative/native/ios/Package.swift +23 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Animation/PNAnimationGraph.swift +199 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Animation/PNAnimator.swift +312 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNBridge.swift +255 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNCommit.swift +104 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNRegistry.swift +142 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNTransaction.swift +166 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNViewRegistry.swift +53 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Components/PNButtonManagers.swift +207 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Components/PNColor.swift +173 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Components/PNComponentManager.swift +183 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Components/PNContainerView.swift +56 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Components/PNControlManagers.swift +281 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Components/PNImageManager.swift +222 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Components/PNOverlayManagers.swift +243 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Components/PNPressableManager.swift +114 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Components/PNScreenStackManager.swift +107 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Components/PNScrollViewManager.swift +197 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTabBarManager.swift +106 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTextInputManager.swift +297 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTextManager.swift +230 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTransform.swift +82 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Components/PNViewManager.swift +86 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Components/PNViewState.swift +87 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Components/PNViewStyler.swift +340 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Components/PNVirtualListManager.swift +155 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Components/PNWebViewManager.swift +124 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Generated/NativeModules.swift +1 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Generated/NativeProps.swift +3775 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Generated/PNContracts.swift +46 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Gestures/PNGestureCoordinator.swift +260 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Layout/PNLayout.swift +173 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Modules/AlertModule.swift +92 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Modules/HostModule.swift +80 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Modules/LifecycleModules.swift +174 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Modules/MediaModules.swift +177 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Modules/PNNativeModule.swift +168 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Modules/PermissionModules.swift +266 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Modules/SystemModules.swift +251 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Plugins/PNPluginRegistration.swift +8 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Screens/PNScreenRegistry.swift +46 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Screens/PNViewController.swift +237 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Support/PNCompat.swift +46 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Support/PNJSON.swift +173 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Support/PNLog.swift +47 -0
- pythonnative/native/ios/Sources/PythonNativeKit/Support/PNWindow.swift +51 -0
- pythonnative/native/ios/Tests/PythonNativeKitTests/PNAnimationGraphTests.swift +26 -0
- pythonnative/native/ios/Tests/PythonNativeKitTests/PNColorTests.swift +50 -0
- pythonnative/native/ios/Tests/PythonNativeKitTests/PNCommitTests.swift +86 -0
- pythonnative/native/ios/Tests/PythonNativeKitTests/PNGestureTests.swift +101 -0
- pythonnative/native/ios/Tests/PythonNativeKitTests/PNManagerTests.swift +126 -0
- pythonnative/native/ios/Tests/PythonNativeKitTests/PNModuleTests.swift +111 -0
- pythonnative/native/ios/Tests/PythonNativeKitTests/PNTransactionTests.swift +91 -0
- pythonnative/native/yoga/LICENSE +21 -0
- pythonnative/native/yoga/Package.swift +9 -0
- pythonnative/native/yoga/VENDORED.md +2 -0
- pythonnative/native/yoga/include/PNStyle.h +10 -0
- pythonnative/native/yoga/include/module.modulemap +5 -0
- pythonnative/native/yoga/include/yoga/YGConfig.h +158 -0
- pythonnative/native/yoga/include/yoga/YGEnums.h +142 -0
- pythonnative/native/yoga/include/yoga/YGMacros.h +99 -0
- pythonnative/native/yoga/include/yoga/YGNode.h +304 -0
- pythonnative/native/yoga/include/yoga/YGNodeLayout.h +35 -0
- pythonnative/native/yoga/include/yoga/YGNodeStyle.h +130 -0
- pythonnative/native/yoga/include/yoga/YGPixelGrid.h +29 -0
- pythonnative/native/yoga/include/yoga/YGValue.h +84 -0
- pythonnative/native/yoga/include/yoga/Yoga.h +21 -0
- pythonnative/native/yoga/python.cpp +16 -0
- pythonnative/native/yoga/style.cpp +272 -0
- pythonnative/native/yoga/yoga/CMakeLists.txt +41 -0
- pythonnative/native/yoga/yoga/YGConfig.cpp +92 -0
- pythonnative/native/yoga/yoga/YGConfig.h +158 -0
- pythonnative/native/yoga/yoga/YGEnums.cpp +262 -0
- pythonnative/native/yoga/yoga/YGEnums.h +142 -0
- pythonnative/native/yoga/yoga/YGMacros.h +99 -0
- pythonnative/native/yoga/yoga/YGNode.cpp +366 -0
- pythonnative/native/yoga/yoga/YGNode.h +304 -0
- pythonnative/native/yoga/yoga/YGNodeLayout.cpp +92 -0
- pythonnative/native/yoga/yoga/YGNodeLayout.h +35 -0
- pythonnative/native/yoga/yoga/YGNodeStyle.cpp +405 -0
- pythonnative/native/yoga/yoga/YGNodeStyle.h +130 -0
- pythonnative/native/yoga/yoga/YGPixelGrid.cpp +22 -0
- pythonnative/native/yoga/yoga/YGPixelGrid.h +29 -0
- pythonnative/native/yoga/yoga/YGValue.cpp +20 -0
- pythonnative/native/yoga/yoga/YGValue.h +84 -0
- pythonnative/native/yoga/yoga/Yoga.h +21 -0
- pythonnative/native/yoga/yoga/algorithm/AbsoluteLayout.cpp +563 -0
- pythonnative/native/yoga/yoga/algorithm/AbsoluteLayout.h +41 -0
- pythonnative/native/yoga/yoga/algorithm/Align.h +72 -0
- pythonnative/native/yoga/yoga/algorithm/Baseline.cpp +78 -0
- pythonnative/native/yoga/yoga/algorithm/Baseline.h +21 -0
- pythonnative/native/yoga/yoga/algorithm/BoundAxis.h +79 -0
- pythonnative/native/yoga/yoga/algorithm/Cache.cpp +121 -0
- pythonnative/native/yoga/yoga/algorithm/Cache.h +30 -0
- pythonnative/native/yoga/yoga/algorithm/CalculateLayout.cpp +2428 -0
- pythonnative/native/yoga/yoga/algorithm/CalculateLayout.h +38 -0
- pythonnative/native/yoga/yoga/algorithm/FlexDirection.h +120 -0
- pythonnative/native/yoga/yoga/algorithm/FlexLine.cpp +124 -0
- pythonnative/native/yoga/yoga/algorithm/FlexLine.h +75 -0
- pythonnative/native/yoga/yoga/algorithm/PixelGrid.cpp +132 -0
- pythonnative/native/yoga/yoga/algorithm/PixelGrid.h +29 -0
- pythonnative/native/yoga/yoga/algorithm/SizingMode.h +73 -0
- pythonnative/native/yoga/yoga/algorithm/TrailingPosition.h +44 -0
- pythonnative/native/yoga/yoga/config/Config.cpp +135 -0
- pythonnative/native/yoga/yoga/config/Config.h +92 -0
- pythonnative/native/yoga/yoga/debug/AssertFatal.cpp +53 -0
- pythonnative/native/yoga/yoga/debug/AssertFatal.h +29 -0
- pythonnative/native/yoga/yoga/debug/Log.cpp +107 -0
- pythonnative/native/yoga/yoga/debug/Log.h +34 -0
- pythonnative/native/yoga/yoga/enums/Align.h +47 -0
- pythonnative/native/yoga/yoga/enums/BoxSizing.h +40 -0
- pythonnative/native/yoga/yoga/enums/Dimension.h +40 -0
- pythonnative/native/yoga/yoga/enums/Direction.h +41 -0
- pythonnative/native/yoga/yoga/enums/Display.h +41 -0
- pythonnative/native/yoga/yoga/enums/Edge.h +47 -0
- pythonnative/native/yoga/yoga/enums/Errata.h +41 -0
- pythonnative/native/yoga/yoga/enums/ExperimentalFeature.h +39 -0
- pythonnative/native/yoga/yoga/enums/FlexDirection.h +42 -0
- pythonnative/native/yoga/yoga/enums/Gutter.h +41 -0
- pythonnative/native/yoga/yoga/enums/Justify.h +44 -0
- pythonnative/native/yoga/yoga/enums/LogLevel.h +44 -0
- pythonnative/native/yoga/yoga/enums/MeasureMode.h +41 -0
- pythonnative/native/yoga/yoga/enums/NodeType.h +40 -0
- pythonnative/native/yoga/yoga/enums/Overflow.h +41 -0
- pythonnative/native/yoga/yoga/enums/PhysicalEdge.h +21 -0
- pythonnative/native/yoga/yoga/enums/PositionType.h +41 -0
- pythonnative/native/yoga/yoga/enums/Unit.h +42 -0
- pythonnative/native/yoga/yoga/enums/Wrap.h +41 -0
- pythonnative/native/yoga/yoga/enums/YogaEnums.h +85 -0
- pythonnative/native/yoga/yoga/event/event.cpp +87 -0
- pythonnative/native/yoga/yoga/event/event.h +130 -0
- pythonnative/native/yoga/yoga/module.modulemap +21 -0
- pythonnative/native/yoga/yoga/node/CachedMeasurement.h +53 -0
- pythonnative/native/yoga/yoga/node/LayoutResults.cpp +48 -0
- pythonnative/native/yoga/yoga/node/LayoutResults.h +122 -0
- pythonnative/native/yoga/yoga/node/LayoutableChildren.h +148 -0
- pythonnative/native/yoga/yoga/node/Node.cpp +443 -0
- pythonnative/native/yoga/yoga/node/Node.h +337 -0
- pythonnative/native/yoga/yoga/numeric/Comparison.h +81 -0
- pythonnative/native/yoga/yoga/numeric/FloatOptional.h +93 -0
- pythonnative/native/yoga/yoga/style/SmallValueBuffer.h +133 -0
- pythonnative/native/yoga/yoga/style/Style.h +757 -0
- pythonnative/native/yoga/yoga/style/StyleLength.h +107 -0
- pythonnative/native/yoga/yoga/style/StyleValueHandle.h +98 -0
- pythonnative/native/yoga/yoga/style/StyleValuePool.h +127 -0
- pythonnative/native_modules/__init__.py +124 -0
- pythonnative/native_modules/app_state.py +99 -0
- pythonnative/native_modules/battery.py +75 -0
- pythonnative/native_modules/biometrics.py +42 -0
- pythonnative/native_modules/camera.py +65 -0
- pythonnative/native_modules/clipboard.py +46 -0
- pythonnative/native_modules/fallback.py +324 -0
- pythonnative/native_modules/file_system.py +145 -0
- pythonnative/native_modules/haptics.py +75 -0
- pythonnative/native_modules/linking.py +123 -0
- pythonnative/native_modules/location.py +75 -0
- pythonnative/native_modules/net_info.py +112 -0
- pythonnative/native_modules/notifications.py +129 -0
- pythonnative/native_modules/permissions.py +108 -0
- pythonnative/native_modules/registry.py +526 -0
- pythonnative/native_modules/secure_store.py +52 -0
- pythonnative/native_modules/share.py +51 -0
- pythonnative/native_views/__init__.py +375 -0
- pythonnative/native_views/base.py +316 -0
- pythonnative/native_views/bridge_backend.py +277 -0
- pythonnative/navigation/__init__.py +103 -0
- pythonnative/navigation/container.py +154 -0
- pythonnative/navigation/handle.py +540 -0
- pythonnative/navigation/hooks.py +133 -0
- pythonnative/navigation/host.py +58 -0
- pythonnative/navigation/linking.py +200 -0
- pythonnative/navigation/navigators.py +659 -0
- pythonnative/navigation/screen.py +149 -0
- pythonnative/navigation/state.py +269 -0
- pythonnative/net.py +248 -0
- pythonnative/platform.py +166 -0
- pythonnative/platform_metrics.py +252 -0
- pythonnative/preview.py +287 -0
- pythonnative/profiling.py +101 -0
- pythonnative/project/__init__.py +68 -0
- pythonnative/project/android.py +557 -0
- pythonnative/project/builder.py +817 -0
- pythonnative/project/config.py +773 -0
- pythonnative/project/deps.py +719 -0
- pythonnative/project/devices.py +304 -0
- pythonnative/project/doctor.py +283 -0
- pythonnative/project/fingerprint.py +171 -0
- pythonnative/project/icons.py +247 -0
- pythonnative/project/ios.py +325 -0
- pythonnative/project/lockfile.py +100 -0
- pythonnative/project/permissions.py +361 -0
- pythonnative/project/plugins.py +519 -0
- pythonnative/project/runtime_assets.py +183 -0
- pythonnative/py.typed +0 -0
- pythonnative/query.py +153 -0
- pythonnative/reconciler/__init__.py +29 -0
- pythonnative/reconciler/boundaries.py +375 -0
- pythonnative/reconciler/children.py +88 -0
- pythonnative/reconciler/core.py +1165 -0
- pythonnative/reconciler/layout_pass.py +393 -0
- pythonnative/reconciler/vnode.py +266 -0
- pythonnative/refresh.py +55 -0
- pythonnative/runtime.py +306 -0
- pythonnative/scheduler.py +159 -0
- pythonnative/sdk/__init__.py +153 -0
- pythonnative/sdk/_components.py +427 -0
- pythonnative/sdk/builtins.py +91 -0
- pythonnative/sdk/codegen.py +149 -0
- pythonnative/sdk/module_codegen.py +184 -0
- pythonnative/sdk/schema.py +224 -0
- pythonnative/sdk/templates/contracts.kt +46 -0
- pythonnative/sdk/templates/contracts.swift +46 -0
- pythonnative/storage.py +184 -0
- pythonnative/style.py +841 -0
- pythonnative/suspense.py +183 -0
- pythonnative/templates/android_template/app/build.gradle +75 -0
- pythonnative/templates/android_template/app/proguard-rules.pro +21 -0
- pythonnative/templates/android_template/app/src/androidTest/java/com/pythonnative/android_template/ExampleInstrumentedTest.kt +24 -0
- pythonnative/templates/android_template/app/src/debug/AndroidManifest.xml +7 -0
- pythonnative/templates/android_template/app/src/main/AndroidManifest.xml +32 -0
- pythonnative/templates/android_template/app/src/main/java/com/pythonnative/android_template/MainActivity.kt +130 -0
- pythonnative/templates/android_template/app/src/main/java/com/pythonnative/android_template/ScreenFragment.kt +13 -0
- pythonnative/templates/android_template/app/src/main/res/drawable/ic_launcher_background.xml +170 -0
- pythonnative/templates/android_template/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +30 -0
- pythonnative/templates/android_template/app/src/main/res/layout/activity_main.xml +10 -0
- pythonnative/templates/android_template/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +6 -0
- pythonnative/templates/android_template/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +6 -0
- pythonnative/templates/android_template/app/src/main/res/mipmap-hdpi/ic_launcher.webp +0 -0
- pythonnative/templates/android_template/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp +0 -0
- pythonnative/templates/android_template/app/src/main/res/mipmap-mdpi/ic_launcher.webp +0 -0
- pythonnative/templates/android_template/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp +0 -0
- pythonnative/templates/android_template/app/src/main/res/mipmap-xhdpi/ic_launcher.webp +0 -0
- pythonnative/templates/android_template/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp +0 -0
- pythonnative/templates/android_template/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp +0 -0
- pythonnative/templates/android_template/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp +0 -0
- pythonnative/templates/android_template/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp +0 -0
- pythonnative/templates/android_template/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp +0 -0
- pythonnative/templates/android_template/app/src/main/res/navigation/nav_graph.xml +22 -0
- pythonnative/templates/android_template/app/src/main/res/values/colors.xml +5 -0
- pythonnative/templates/android_template/app/src/main/res/values/strings.xml +5 -0
- pythonnative/templates/android_template/app/src/main/res/values/themes.xml +9 -0
- pythonnative/templates/android_template/app/src/main/res/values-night/themes.xml +7 -0
- pythonnative/templates/android_template/app/src/main/res/xml/backup_rules.xml +13 -0
- pythonnative/templates/android_template/app/src/main/res/xml/data_extraction_rules.xml +19 -0
- pythonnative/templates/android_template/app/src/test/java/com/pythonnative/android_template/ExampleUnitTest.kt +17 -0
- pythonnative/templates/android_template/build.gradle +10 -0
- pythonnative/templates/android_template/gradle/wrapper/gradle-wrapper.jar +0 -0
- pythonnative/templates/android_template/gradle/wrapper/gradle-wrapper.properties +6 -0
- pythonnative/templates/android_template/gradle.properties +23 -0
- pythonnative/templates/android_template/gradlew +185 -0
- pythonnative/templates/android_template/gradlew.bat +89 -0
- pythonnative/templates/android_template/settings.gradle +17 -0
- pythonnative/templates/ios_template/ios_template/AppDelegate.swift +51 -0
- pythonnative/templates/ios_template/ios_template/Assets.xcassets/AccentColor.colorset/Contents.json +11 -0
- pythonnative/templates/ios_template/ios_template/Assets.xcassets/AppIcon.appiconset/Contents.json +13 -0
- pythonnative/templates/ios_template/ios_template/Assets.xcassets/Contents.json +6 -0
- pythonnative/templates/ios_template/ios_template/Base.lproj/LaunchScreen.storyboard +25 -0
- pythonnative/templates/ios_template/ios_template/BridgingHeader.h +14 -0
- pythonnative/templates/ios_template/ios_template/Info.plist +28 -0
- pythonnative/templates/ios_template/ios_template/PythonRuntime.swift +390 -0
- pythonnative/templates/ios_template/ios_template/SceneDelegate.swift +61 -0
- pythonnative/templates/ios_template/ios_template/ViewController.swift +23 -0
- pythonnative/templates/ios_template/ios_template.xcodeproj/project.pbxproj +745 -0
- pythonnative/templates/ios_template/ios_template.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- pythonnative/templates/ios_template/ios_templateTests/ios_templateTests.swift +36 -0
- pythonnative/templates/ios_template/ios_templateUITests/ios_templateUITests.swift +41 -0
- pythonnative/templates/ios_template/ios_templateUITests/ios_templateUITestsLaunchTests.swift +32 -0
- pythonnative/testing/__init__.py +53 -0
- pythonnative/testing/backend.py +276 -0
- pythonnative/testing/harness.py +369 -0
- pythonnative/utils.py +145 -0
- pythonnative-0.40.0.dist-info/DELVEWHEEL +2 -0
- pythonnative-0.40.0.dist-info/METADATA +150 -0
- pythonnative-0.40.0.dist-info/RECORD +418 -0
- pythonnative-0.40.0.dist-info/WHEEL +5 -0
- pythonnative-0.40.0.dist-info/entry_points.txt +2 -0
- pythonnative-0.40.0.dist-info/licenses/LICENSE +21 -0
- pythonnative-0.40.0.dist-info/top_level.txt +1 -0
- pythonnative.libs/msvcp140-a4c2229bdc2a2a630acdc095b4d86008.dll +0 -0
|
@@ -0,0 +1,130 @@
|
|
|
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
|
+
#include <yoga/Yoga.h>
|
|
11
|
+
|
|
12
|
+
#include <array>
|
|
13
|
+
#include <cstdint>
|
|
14
|
+
#include <functional>
|
|
15
|
+
#include <vector>
|
|
16
|
+
|
|
17
|
+
namespace facebook::yoga {
|
|
18
|
+
|
|
19
|
+
enum struct LayoutType : int {
|
|
20
|
+
kLayout = 0,
|
|
21
|
+
kMeasure = 1,
|
|
22
|
+
kCachedLayout = 2,
|
|
23
|
+
kCachedMeasure = 3
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
enum struct LayoutPassReason : int {
|
|
27
|
+
kInitial = 0,
|
|
28
|
+
kAbsLayout = 1,
|
|
29
|
+
kStretch = 2,
|
|
30
|
+
kMultilineStretch = 3,
|
|
31
|
+
kFlexLayout = 4,
|
|
32
|
+
kMeasureChild = 5,
|
|
33
|
+
kAbsMeasureChild = 6,
|
|
34
|
+
kFlexMeasure = 7,
|
|
35
|
+
COUNT
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
struct LayoutData {
|
|
39
|
+
int layouts;
|
|
40
|
+
int measures;
|
|
41
|
+
uint32_t maxMeasureCache;
|
|
42
|
+
int cachedLayouts;
|
|
43
|
+
int cachedMeasures;
|
|
44
|
+
int measureCallbacks;
|
|
45
|
+
std::array<int, static_cast<uint8_t>(LayoutPassReason::COUNT)>
|
|
46
|
+
measureCallbackReasonsCount;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const char* LayoutPassReasonToString(LayoutPassReason value);
|
|
50
|
+
|
|
51
|
+
struct YG_EXPORT Event {
|
|
52
|
+
enum Type {
|
|
53
|
+
NodeAllocation,
|
|
54
|
+
NodeDeallocation,
|
|
55
|
+
NodeLayout,
|
|
56
|
+
LayoutPassStart,
|
|
57
|
+
LayoutPassEnd,
|
|
58
|
+
MeasureCallbackStart,
|
|
59
|
+
MeasureCallbackEnd,
|
|
60
|
+
NodeBaselineStart,
|
|
61
|
+
NodeBaselineEnd,
|
|
62
|
+
};
|
|
63
|
+
class Data;
|
|
64
|
+
using Subscriber = void(YGNodeConstRef, Type, Data);
|
|
65
|
+
using Subscribers = std::vector<std::function<Subscriber>>;
|
|
66
|
+
|
|
67
|
+
template <Type E>
|
|
68
|
+
struct TypedData {};
|
|
69
|
+
|
|
70
|
+
class Data {
|
|
71
|
+
const void* data_;
|
|
72
|
+
|
|
73
|
+
public:
|
|
74
|
+
template <Type E>
|
|
75
|
+
explicit Data(const TypedData<E>& data) : data_{&data} {}
|
|
76
|
+
|
|
77
|
+
template <Type E>
|
|
78
|
+
const TypedData<E>& get() const {
|
|
79
|
+
return *static_cast<const TypedData<E>*>(data_);
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
static void reset();
|
|
84
|
+
|
|
85
|
+
static void subscribe(std::function<Subscriber>&& subscriber);
|
|
86
|
+
|
|
87
|
+
template <Type E>
|
|
88
|
+
static void publish(YGNodeConstRef node, const TypedData<E>& eventData = {}) {
|
|
89
|
+
publish(node, E, Data{eventData});
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
private:
|
|
93
|
+
static void publish(
|
|
94
|
+
YGNodeConstRef /*node*/,
|
|
95
|
+
Type /*eventType*/,
|
|
96
|
+
const Data& /*eventData*/);
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
template <>
|
|
100
|
+
struct Event::TypedData<Event::NodeAllocation> {
|
|
101
|
+
YGConfigConstRef config;
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
template <>
|
|
105
|
+
struct Event::TypedData<Event::NodeDeallocation> {
|
|
106
|
+
YGConfigConstRef config;
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
template <>
|
|
110
|
+
struct Event::TypedData<Event::LayoutPassEnd> {
|
|
111
|
+
LayoutData* layoutData;
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
template <>
|
|
115
|
+
struct Event::TypedData<Event::MeasureCallbackEnd> {
|
|
116
|
+
float width;
|
|
117
|
+
YGMeasureMode widthMeasureMode;
|
|
118
|
+
float height;
|
|
119
|
+
YGMeasureMode heightMeasureMode;
|
|
120
|
+
float measuredWidth;
|
|
121
|
+
float measuredHeight;
|
|
122
|
+
const LayoutPassReason reason;
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
template <>
|
|
126
|
+
struct Event::TypedData<Event::NodeLayout> {
|
|
127
|
+
LayoutType layoutType;
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
} // namespace facebook::yoga
|
|
@@ -0,0 +1,21 @@
|
|
|
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
|
+
module yoga [system] {
|
|
9
|
+
module core {
|
|
10
|
+
header "YGConfig.h"
|
|
11
|
+
header "YGEnums.h"
|
|
12
|
+
header "YGMacros.h"
|
|
13
|
+
header "YGNode.h"
|
|
14
|
+
header "YGNodeLayout.h"
|
|
15
|
+
header "YGNodeStyle.h"
|
|
16
|
+
header "YGPixelGrid.h"
|
|
17
|
+
header "YGValue.h"
|
|
18
|
+
header "Yoga.h"
|
|
19
|
+
export *
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
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
|
+
#include <cmath>
|
|
11
|
+
|
|
12
|
+
#include <yoga/Yoga.h>
|
|
13
|
+
|
|
14
|
+
#include <yoga/algorithm/SizingMode.h>
|
|
15
|
+
#include <yoga/numeric/Comparison.h>
|
|
16
|
+
|
|
17
|
+
namespace facebook::yoga {
|
|
18
|
+
|
|
19
|
+
struct CachedMeasurement {
|
|
20
|
+
float availableWidth{-1};
|
|
21
|
+
float availableHeight{-1};
|
|
22
|
+
SizingMode widthSizingMode{SizingMode::MaxContent};
|
|
23
|
+
SizingMode heightSizingMode{SizingMode::MaxContent};
|
|
24
|
+
|
|
25
|
+
float computedWidth{-1};
|
|
26
|
+
float computedHeight{-1};
|
|
27
|
+
|
|
28
|
+
bool operator==(CachedMeasurement measurement) const {
|
|
29
|
+
bool isEqual = widthSizingMode == measurement.widthSizingMode &&
|
|
30
|
+
heightSizingMode == measurement.heightSizingMode;
|
|
31
|
+
|
|
32
|
+
if (!yoga::isUndefined(availableWidth) ||
|
|
33
|
+
!yoga::isUndefined(measurement.availableWidth)) {
|
|
34
|
+
isEqual = isEqual && availableWidth == measurement.availableWidth;
|
|
35
|
+
}
|
|
36
|
+
if (!yoga::isUndefined(availableHeight) ||
|
|
37
|
+
!yoga::isUndefined(measurement.availableHeight)) {
|
|
38
|
+
isEqual = isEqual && availableHeight == measurement.availableHeight;
|
|
39
|
+
}
|
|
40
|
+
if (!yoga::isUndefined(computedWidth) ||
|
|
41
|
+
!yoga::isUndefined(measurement.computedWidth)) {
|
|
42
|
+
isEqual = isEqual && computedWidth == measurement.computedWidth;
|
|
43
|
+
}
|
|
44
|
+
if (!yoga::isUndefined(computedHeight) ||
|
|
45
|
+
!yoga::isUndefined(measurement.computedHeight)) {
|
|
46
|
+
isEqual = isEqual && computedHeight == measurement.computedHeight;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return isEqual;
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
} // namespace facebook::yoga
|
|
@@ -0,0 +1,48 @@
|
|
|
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 <cmath>
|
|
9
|
+
|
|
10
|
+
#include <yoga/node/LayoutResults.h>
|
|
11
|
+
#include <yoga/numeric/Comparison.h>
|
|
12
|
+
|
|
13
|
+
namespace facebook::yoga {
|
|
14
|
+
|
|
15
|
+
bool LayoutResults::operator==(LayoutResults layout) const {
|
|
16
|
+
bool isEqual = yoga::inexactEquals(position_, layout.position_) &&
|
|
17
|
+
yoga::inexactEquals(dimensions_, layout.dimensions_) &&
|
|
18
|
+
yoga::inexactEquals(margin_, layout.margin_) &&
|
|
19
|
+
yoga::inexactEquals(border_, layout.border_) &&
|
|
20
|
+
yoga::inexactEquals(padding_, layout.padding_) &&
|
|
21
|
+
direction() == layout.direction() &&
|
|
22
|
+
hadOverflow() == layout.hadOverflow() &&
|
|
23
|
+
lastOwnerDirection == layout.lastOwnerDirection &&
|
|
24
|
+
configVersion == layout.configVersion &&
|
|
25
|
+
nextCachedMeasurementsIndex == layout.nextCachedMeasurementsIndex &&
|
|
26
|
+
cachedLayout == layout.cachedLayout &&
|
|
27
|
+
computedFlexBasis == layout.computedFlexBasis;
|
|
28
|
+
|
|
29
|
+
for (uint32_t i = 0; i < LayoutResults::MaxCachedMeasurements && isEqual;
|
|
30
|
+
++i) {
|
|
31
|
+
isEqual = isEqual && cachedMeasurements[i] == layout.cachedMeasurements[i];
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if (!yoga::isUndefined(measuredDimensions_[0]) ||
|
|
35
|
+
!yoga::isUndefined(layout.measuredDimensions_[0])) {
|
|
36
|
+
isEqual =
|
|
37
|
+
isEqual && (measuredDimensions_[0] == layout.measuredDimensions_[0]);
|
|
38
|
+
}
|
|
39
|
+
if (!yoga::isUndefined(measuredDimensions_[1]) ||
|
|
40
|
+
!yoga::isUndefined(layout.measuredDimensions_[1])) {
|
|
41
|
+
isEqual =
|
|
42
|
+
isEqual && (measuredDimensions_[1] == layout.measuredDimensions_[1]);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return isEqual;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
} // namespace facebook::yoga
|
|
@@ -0,0 +1,122 @@
|
|
|
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
|
+
#include <array>
|
|
11
|
+
|
|
12
|
+
#include <yoga/debug/AssertFatal.h>
|
|
13
|
+
#include <yoga/enums/Dimension.h>
|
|
14
|
+
#include <yoga/enums/Direction.h>
|
|
15
|
+
#include <yoga/enums/Edge.h>
|
|
16
|
+
#include <yoga/enums/PhysicalEdge.h>
|
|
17
|
+
#include <yoga/node/CachedMeasurement.h>
|
|
18
|
+
#include <yoga/numeric/FloatOptional.h>
|
|
19
|
+
|
|
20
|
+
namespace facebook::yoga {
|
|
21
|
+
|
|
22
|
+
struct LayoutResults {
|
|
23
|
+
// This value was chosen based on empirical data:
|
|
24
|
+
// 98% of analyzed layouts require less than 8 entries.
|
|
25
|
+
static constexpr int32_t MaxCachedMeasurements = 8;
|
|
26
|
+
|
|
27
|
+
uint32_t computedFlexBasisGeneration = 0;
|
|
28
|
+
FloatOptional computedFlexBasis = {};
|
|
29
|
+
|
|
30
|
+
// Instead of recomputing the entire layout every single time, we cache some
|
|
31
|
+
// information to break early when nothing changed
|
|
32
|
+
uint32_t generationCount = 0;
|
|
33
|
+
uint32_t configVersion = 0;
|
|
34
|
+
Direction lastOwnerDirection = Direction::Inherit;
|
|
35
|
+
|
|
36
|
+
uint32_t nextCachedMeasurementsIndex = 0;
|
|
37
|
+
std::array<CachedMeasurement, MaxCachedMeasurements> cachedMeasurements = {};
|
|
38
|
+
|
|
39
|
+
CachedMeasurement cachedLayout{};
|
|
40
|
+
|
|
41
|
+
Direction direction() const {
|
|
42
|
+
return direction_;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
void setDirection(Direction direction) {
|
|
46
|
+
direction_ = direction;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
bool hadOverflow() const {
|
|
50
|
+
return hadOverflow_;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
void setHadOverflow(bool hadOverflow) {
|
|
54
|
+
hadOverflow_ = hadOverflow;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
float dimension(Dimension axis) const {
|
|
58
|
+
return dimensions_[yoga::to_underlying(axis)];
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
void setDimension(Dimension axis, float dimension) {
|
|
62
|
+
dimensions_[yoga::to_underlying(axis)] = dimension;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
float measuredDimension(Dimension axis) const {
|
|
66
|
+
return measuredDimensions_[yoga::to_underlying(axis)];
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
void setMeasuredDimension(Dimension axis, float dimension) {
|
|
70
|
+
measuredDimensions_[yoga::to_underlying(axis)] = dimension;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
float position(PhysicalEdge physicalEdge) const {
|
|
74
|
+
return position_[yoga::to_underlying(physicalEdge)];
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
void setPosition(PhysicalEdge physicalEdge, float dimension) {
|
|
78
|
+
position_[yoga::to_underlying(physicalEdge)] = dimension;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
float margin(PhysicalEdge physicalEdge) const {
|
|
82
|
+
return margin_[yoga::to_underlying(physicalEdge)];
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
void setMargin(PhysicalEdge physicalEdge, float dimension) {
|
|
86
|
+
margin_[yoga::to_underlying(physicalEdge)] = dimension;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
float border(PhysicalEdge physicalEdge) const {
|
|
90
|
+
return border_[yoga::to_underlying(physicalEdge)];
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
void setBorder(PhysicalEdge physicalEdge, float dimension) {
|
|
94
|
+
border_[yoga::to_underlying(physicalEdge)] = dimension;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
float padding(PhysicalEdge physicalEdge) const {
|
|
98
|
+
return padding_[yoga::to_underlying(physicalEdge)];
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
void setPadding(PhysicalEdge physicalEdge, float dimension) {
|
|
102
|
+
padding_[yoga::to_underlying(physicalEdge)] = dimension;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
bool operator==(LayoutResults layout) const;
|
|
106
|
+
bool operator!=(LayoutResults layout) const {
|
|
107
|
+
return !(*this == layout);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
private:
|
|
111
|
+
Direction direction_ : bitCount<Direction>() = Direction::Inherit;
|
|
112
|
+
bool hadOverflow_ : 1 = false;
|
|
113
|
+
|
|
114
|
+
std::array<float, 2> dimensions_ = {{YGUndefined, YGUndefined}};
|
|
115
|
+
std::array<float, 2> measuredDimensions_ = {{YGUndefined, YGUndefined}};
|
|
116
|
+
std::array<float, 4> position_ = {};
|
|
117
|
+
std::array<float, 4> margin_ = {};
|
|
118
|
+
std::array<float, 4> border_ = {};
|
|
119
|
+
std::array<float, 4> padding_ = {};
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
} // namespace facebook::yoga
|
|
@@ -0,0 +1,148 @@
|
|
|
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
|
+
#include <cstdint>
|
|
11
|
+
#include <forward_list>
|
|
12
|
+
#include <utility>
|
|
13
|
+
|
|
14
|
+
#include <yoga/enums/Display.h>
|
|
15
|
+
|
|
16
|
+
namespace facebook::yoga {
|
|
17
|
+
|
|
18
|
+
class Node;
|
|
19
|
+
|
|
20
|
+
template <typename T>
|
|
21
|
+
class LayoutableChildren {
|
|
22
|
+
public:
|
|
23
|
+
struct Iterator {
|
|
24
|
+
using iterator_category = std::input_iterator_tag;
|
|
25
|
+
using difference_type = std::ptrdiff_t;
|
|
26
|
+
using value_type = T*;
|
|
27
|
+
using pointer = T*;
|
|
28
|
+
using reference = T*;
|
|
29
|
+
|
|
30
|
+
Iterator() = default;
|
|
31
|
+
|
|
32
|
+
Iterator(const T* node, size_t childIndex)
|
|
33
|
+
: node_(node), childIndex_(childIndex) {}
|
|
34
|
+
|
|
35
|
+
T* operator*() const {
|
|
36
|
+
return node_->getChild(childIndex_);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
Iterator& operator++() {
|
|
40
|
+
next();
|
|
41
|
+
return *this;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
Iterator operator++(int) {
|
|
45
|
+
Iterator tmp = *this;
|
|
46
|
+
++(*this);
|
|
47
|
+
return tmp;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
friend bool operator==(const Iterator& a, const Iterator& b) {
|
|
51
|
+
return a.node_ == b.node_ && a.childIndex_ == b.childIndex_;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
friend bool operator!=(const Iterator& a, const Iterator& b) {
|
|
55
|
+
return a.node_ != b.node_ || a.childIndex_ != b.childIndex_;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
private:
|
|
59
|
+
void next() {
|
|
60
|
+
if (childIndex_ + 1 >= node_->getChildCount()) {
|
|
61
|
+
// if the current node has no more children, try to backtrack and
|
|
62
|
+
// visit its successor
|
|
63
|
+
if (backtrack_.empty()) [[likely]] {
|
|
64
|
+
// if there are no nodes to backtrack to, the last node has been
|
|
65
|
+
// visited
|
|
66
|
+
*this = Iterator{};
|
|
67
|
+
} else {
|
|
68
|
+
// pop and restore the latest backtrack entry
|
|
69
|
+
const auto& back = backtrack_.front();
|
|
70
|
+
node_ = back.first;
|
|
71
|
+
childIndex_ = back.second;
|
|
72
|
+
backtrack_.pop_front();
|
|
73
|
+
|
|
74
|
+
// go to the next node
|
|
75
|
+
next();
|
|
76
|
+
}
|
|
77
|
+
} else {
|
|
78
|
+
// current node has more children to visit, go to next
|
|
79
|
+
++childIndex_;
|
|
80
|
+
// skip all display: contents nodes, possibly going deeper into the
|
|
81
|
+
// tree
|
|
82
|
+
if (node_->getChild(childIndex_)->style().display() ==
|
|
83
|
+
Display::Contents) [[unlikely]] {
|
|
84
|
+
skipContentsNodes();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
void skipContentsNodes() {
|
|
90
|
+
// get the node that would be returned from the iterator
|
|
91
|
+
auto currentNode = node_->getChild(childIndex_);
|
|
92
|
+
while (currentNode->style().display() == Display::Contents &&
|
|
93
|
+
currentNode->getChildCount() > 0) {
|
|
94
|
+
// if it has display: contents set, it shouldn't be returned but its
|
|
95
|
+
// children should in its place push the current node and child index
|
|
96
|
+
// so that the current state can be restored when backtracking
|
|
97
|
+
backtrack_.push_front({node_, childIndex_});
|
|
98
|
+
// traverse the child
|
|
99
|
+
node_ = currentNode;
|
|
100
|
+
childIndex_ = 0;
|
|
101
|
+
|
|
102
|
+
// repeat until a node without display: contents is found in the
|
|
103
|
+
// subtree or a leaf is reached
|
|
104
|
+
currentNode = currentNode->getChild(childIndex_);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// if no node without display: contents was found, try to backtrack
|
|
108
|
+
if (currentNode->style().display() == Display::Contents) {
|
|
109
|
+
next();
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
const T* node_{nullptr};
|
|
114
|
+
size_t childIndex_{0};
|
|
115
|
+
std::forward_list<std::pair<const T*, size_t>> backtrack_;
|
|
116
|
+
|
|
117
|
+
friend LayoutableChildren;
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
explicit LayoutableChildren(const T* node) : node_(node) {
|
|
121
|
+
static_assert(std::input_iterator<LayoutableChildren<T>::Iterator>);
|
|
122
|
+
static_assert(
|
|
123
|
+
std::is_base_of<Node, T>::value,
|
|
124
|
+
"Type parameter of LayoutableChildren must derive from yoga::Node");
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
Iterator begin() const {
|
|
128
|
+
if (node_->getChildCount() > 0) {
|
|
129
|
+
auto result = Iterator(node_, 0);
|
|
130
|
+
if (node_->getChild(0)->style().display() == Display::Contents)
|
|
131
|
+
[[unlikely]] {
|
|
132
|
+
result.skipContentsNodes();
|
|
133
|
+
}
|
|
134
|
+
return result;
|
|
135
|
+
} else {
|
|
136
|
+
return Iterator{};
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
Iterator end() const {
|
|
141
|
+
return Iterator{};
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
private:
|
|
145
|
+
const T* node_;
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
} // namespace facebook::yoga
|