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,167 @@
|
|
|
1
|
+
"""Structural factories: ``Fragment``, ``ErrorBoundary``, and ``Suspense``.
|
|
2
|
+
|
|
3
|
+
These produce elements whose ``type`` is one of the reconciler-owned
|
|
4
|
+
singletons from [`pythonnative.element`][pythonnative.element]
|
|
5
|
+
(``FRAGMENT``, ``ERROR_BOUNDARY``, ``SUSPENSE``) rather than a native
|
|
6
|
+
view name, so they never create a platform view of their own.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from typing import Any, Callable, Dict, Optional
|
|
10
|
+
|
|
11
|
+
from ..element import ERROR_BOUNDARY, FRAGMENT, SUSPENSE, Element
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def Fragment(*children: Optional[Element], key: Optional[str] = None) -> Element:
|
|
15
|
+
"""Group children without adding a wrapping native view.
|
|
16
|
+
|
|
17
|
+
Like React's ``<></>``: groups elements without introducing an
|
|
18
|
+
extra container. Each child mounts as a direct sibling of the
|
|
19
|
+
Fragment's position in the parent's child list. Components may
|
|
20
|
+
also simply return a plain ``list`` of elements; ``Fragment``
|
|
21
|
+
exists for when the group needs a ``key`` (e.g. rendering a list
|
|
22
|
+
of pairs) or when a single expression reads better.
|
|
23
|
+
|
|
24
|
+
```python
|
|
25
|
+
pn.Column(
|
|
26
|
+
pn.Text("Top"),
|
|
27
|
+
pn.Fragment(
|
|
28
|
+
pn.Text("Middle A"),
|
|
29
|
+
pn.Text("Middle B"),
|
|
30
|
+
),
|
|
31
|
+
pn.Text("Bottom"),
|
|
32
|
+
)
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Args:
|
|
36
|
+
*children: Child elements to expose at the parent level.
|
|
37
|
+
``None`` and ``False`` children are dropped, which makes
|
|
38
|
+
conditional rendering with ``cond and pn.Text(...)``
|
|
39
|
+
ergonomic.
|
|
40
|
+
key: Stable identity for keyed reconciliation. A keyed
|
|
41
|
+
Fragment moves all of its children as one unit and
|
|
42
|
+
preserves their state across reorders.
|
|
43
|
+
|
|
44
|
+
Returns:
|
|
45
|
+
An [`Element`][pythonnative.Element] whose type is
|
|
46
|
+
[`FRAGMENT`][pythonnative.element.FRAGMENT].
|
|
47
|
+
"""
|
|
48
|
+
kept = [c for c in children if c is not None and c is not False]
|
|
49
|
+
return Element(FRAGMENT, {}, kept, key=key)
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def ErrorBoundary(
|
|
53
|
+
*children: Element,
|
|
54
|
+
fallback: Optional[Any] = None,
|
|
55
|
+
on_error: Optional[Callable[[BaseException], Any]] = None,
|
|
56
|
+
key: Optional[str] = None,
|
|
57
|
+
) -> Element:
|
|
58
|
+
"""Catch render errors in the wrapped subtree and display ``fallback`` instead.
|
|
59
|
+
|
|
60
|
+
When any descendant raises during render (initial mount, a parent
|
|
61
|
+
re-render, or a local state-driven update), the failed subtree is
|
|
62
|
+
torn down and ``fallback`` is mounted in its place. Without a
|
|
63
|
+
boundary the error propagates to the screen host (which shows the
|
|
64
|
+
dev error overlay in dev mode).
|
|
65
|
+
|
|
66
|
+
``fallback`` may be:
|
|
67
|
+
|
|
68
|
+
- An [`Element`][pythonnative.Element], shown as-is.
|
|
69
|
+
- ``fallback(error) -> Element``.
|
|
70
|
+
- ``fallback(error, reset) -> Element``, where ``reset`` is a
|
|
71
|
+
zero-arg callable that clears the error and remounts the
|
|
72
|
+
original children (fresh state), for retry buttons.
|
|
73
|
+
|
|
74
|
+
Args:
|
|
75
|
+
*children: Subtree to wrap.
|
|
76
|
+
fallback: Fallback content (see above). Required for the
|
|
77
|
+
boundary to actually catch; without it errors propagate
|
|
78
|
+
to the next boundary up.
|
|
79
|
+
on_error: Callback invoked with the exception when the
|
|
80
|
+
boundary catches, before the fallback mounts. Use it for
|
|
81
|
+
error reporting.
|
|
82
|
+
key: Stable identity for keyed reconciliation.
|
|
83
|
+
|
|
84
|
+
Returns:
|
|
85
|
+
An [`Element`][pythonnative.Element] whose type is
|
|
86
|
+
[`ERROR_BOUNDARY`][pythonnative.element.ERROR_BOUNDARY], with
|
|
87
|
+
``fallback`` and ``on_error`` in its props (omitted when
|
|
88
|
+
``None``).
|
|
89
|
+
|
|
90
|
+
Example:
|
|
91
|
+
```python
|
|
92
|
+
import pythonnative as pn
|
|
93
|
+
|
|
94
|
+
pn.ErrorBoundary(
|
|
95
|
+
MyRiskyComponent(),
|
|
96
|
+
fallback=lambda err, reset: pn.Column(
|
|
97
|
+
pn.Text(f"Error: {err}"),
|
|
98
|
+
pn.Button("Retry", on_press=reset),
|
|
99
|
+
),
|
|
100
|
+
on_error=lambda err: log.exception(err),
|
|
101
|
+
)
|
|
102
|
+
```
|
|
103
|
+
"""
|
|
104
|
+
props: Dict[str, Any] = {}
|
|
105
|
+
if fallback is not None:
|
|
106
|
+
props["fallback"] = fallback
|
|
107
|
+
if on_error is not None:
|
|
108
|
+
props["on_error"] = on_error
|
|
109
|
+
return Element(ERROR_BOUNDARY, props, list(children), key=key)
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
def Suspense(
|
|
113
|
+
*children: Element,
|
|
114
|
+
fallback: Optional[Any] = None,
|
|
115
|
+
key: Optional[str] = None,
|
|
116
|
+
) -> Element:
|
|
117
|
+
"""Show ``fallback`` while descendants wait on async work, then swap in the content.
|
|
118
|
+
|
|
119
|
+
A Suspense boundary catches **suspensions** from the subtree it
|
|
120
|
+
wraps: an ``async def`` component body blocking on a pending
|
|
121
|
+
await, or a regular component calling
|
|
122
|
+
[`Resource.read`][pythonnative.suspense.Resource.read] on data that hasn't
|
|
123
|
+
arrived (see [`use_resource`][pythonnative.use_resource] and
|
|
124
|
+
[`lazy`][pythonnative.lazy]). While anything is pending the
|
|
125
|
+
boundary renders ``fallback``; when the awaited work completes it
|
|
126
|
+
retries the content and swaps it in. Suspended components keep
|
|
127
|
+
their hook state across retries, so cached resources aren't
|
|
128
|
+
refetched.
|
|
129
|
+
|
|
130
|
+
Two timing behaviors, matching React:
|
|
131
|
+
|
|
132
|
+
- **Initial mount**: the fallback shows until the content is ready.
|
|
133
|
+
- **Updates**: a component that's already on screen and suspends
|
|
134
|
+
again (its dependencies changed) keeps its previous content
|
|
135
|
+
visible and re-renders when ready; there's no fallback flash.
|
|
136
|
+
|
|
137
|
+
Args:
|
|
138
|
+
*children: Subtree to wrap (the async content).
|
|
139
|
+
fallback: Content shown while suspended: an
|
|
140
|
+
[`Element`][pythonnative.Element] or a zero-arg callable
|
|
141
|
+
returning one. Without it, suspensions propagate to the
|
|
142
|
+
next Suspense boundary up.
|
|
143
|
+
key: Stable identity for keyed reconciliation.
|
|
144
|
+
|
|
145
|
+
Returns:
|
|
146
|
+
An [`Element`][pythonnative.Element] whose type is
|
|
147
|
+
[`SUSPENSE`][pythonnative.element.SUSPENSE], with ``fallback``
|
|
148
|
+
in its props.
|
|
149
|
+
|
|
150
|
+
Example:
|
|
151
|
+
```python
|
|
152
|
+
import pythonnative as pn
|
|
153
|
+
|
|
154
|
+
@pn.component
|
|
155
|
+
async def Profile(user_id: str):
|
|
156
|
+
user = await api.fetch_user(user_id)
|
|
157
|
+
return pn.Text(user.name)
|
|
158
|
+
|
|
159
|
+
@pn.component
|
|
160
|
+
def Screen():
|
|
161
|
+
return pn.Suspense(
|
|
162
|
+
Profile(user_id="42"),
|
|
163
|
+
fallback=pn.ActivityIndicator(),
|
|
164
|
+
)
|
|
165
|
+
```
|
|
166
|
+
"""
|
|
167
|
+
return Element(SUSPENSE, {"fallback": fallback}, list(children), key=key)
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
"""Text-centric leaf factories: ``Text``, ``Button``, and ``TextInput``."""
|
|
2
|
+
|
|
3
|
+
from typing import Any, Callable, Literal, Optional
|
|
4
|
+
|
|
5
|
+
from ..element import Element
|
|
6
|
+
from ..hooks import Ref
|
|
7
|
+
from ..style import (
|
|
8
|
+
AccessibilityState,
|
|
9
|
+
AutoCapitalize,
|
|
10
|
+
Color,
|
|
11
|
+
KeyboardType,
|
|
12
|
+
ReturnKeyType,
|
|
13
|
+
StyleProp,
|
|
14
|
+
)
|
|
15
|
+
from ._base import _flatten_text_spans, _make_element
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def Text(
|
|
19
|
+
*parts: Any,
|
|
20
|
+
style: StyleProp = None,
|
|
21
|
+
accessibility_label: Optional[str] = None,
|
|
22
|
+
accessibility_hint: Optional[str] = None,
|
|
23
|
+
accessibility_role: Optional[str] = None,
|
|
24
|
+
accessible: Optional[bool] = None,
|
|
25
|
+
accessibility_state: Optional[AccessibilityState] = None,
|
|
26
|
+
accessibility_live_region: Optional[Literal["none", "polite", "assertive"]] = None,
|
|
27
|
+
test_id: Optional[str] = None,
|
|
28
|
+
ref: Optional[Ref] = None,
|
|
29
|
+
key: Optional[str] = None,
|
|
30
|
+
) -> Element:
|
|
31
|
+
"""Display a string of text, optionally with styled nested spans.
|
|
32
|
+
|
|
33
|
+
Style properties: ``font_size``, ``color``, ``bold``,
|
|
34
|
+
``font_weight``, ``font_family``, ``italic``, ``text_align``,
|
|
35
|
+
``background_color``, ``max_lines``, ``letter_spacing``,
|
|
36
|
+
``line_height``, ``text_decoration`` (``"underline"`` /
|
|
37
|
+
``"line_through"``), ``border_radius``, ``border_width``,
|
|
38
|
+
``border_color``, ``shadow_*``, ``opacity``, ``transform``, plus
|
|
39
|
+
the common layout props.
|
|
40
|
+
|
|
41
|
+
**Rich text**: pass multiple parts, mixing plain strings and
|
|
42
|
+
nested ``Text`` elements, to render one paragraph with per-span
|
|
43
|
+
styling (a single ``TextView`` / ``UILabel`` natively, so line
|
|
44
|
+
wrapping flows across spans):
|
|
45
|
+
|
|
46
|
+
```python
|
|
47
|
+
pn.Text(
|
|
48
|
+
"Hello, ",
|
|
49
|
+
pn.Text("world", style=pn.style(bold=True, color="#0A84FF")),
|
|
50
|
+
"!",
|
|
51
|
+
style=pn.style(font_size=18),
|
|
52
|
+
)
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Nested spans inherit the outer element's text styling and may
|
|
56
|
+
override ``color``, ``background_color``, ``font_size``,
|
|
57
|
+
``font_family``, ``font_weight``, ``bold``, ``italic``,
|
|
58
|
+
``text_decoration``, and ``letter_spacing``.
|
|
59
|
+
|
|
60
|
+
Args:
|
|
61
|
+
*parts: Text content: a single string, or any mix of strings
|
|
62
|
+
and nested ``Text`` elements for rich text.
|
|
63
|
+
style: Style dict (or list of dicts).
|
|
64
|
+
accessibility_label: Spoken description for screen readers.
|
|
65
|
+
accessibility_hint: Spoken extra detail (iOS only).
|
|
66
|
+
accessibility_role: Semantic role for assistive tech.
|
|
67
|
+
accessible: Override whether the element is exposed to AT.
|
|
68
|
+
accessibility_state: Current widget state for assistive tech,
|
|
69
|
+
e.g. ``{"disabled": True, "selected": False}``. Recognized
|
|
70
|
+
keys: ``disabled``, ``selected``, ``checked``, ``busy``,
|
|
71
|
+
``expanded``.
|
|
72
|
+
accessibility_live_region: How AT announces dynamic changes to
|
|
73
|
+
this view: ``"none"``, ``"polite"``, or ``"assertive"``
|
|
74
|
+
(Android only).
|
|
75
|
+
test_id: Stable identifier for UI tests; exposed as
|
|
76
|
+
``resource-id`` on Android and ``accessibilityIdentifier``
|
|
77
|
+
on iOS.
|
|
78
|
+
ref: Optional [`Ref`][pythonnative.Ref] from ``use_ref()``.
|
|
79
|
+
key: Stable identity for keyed reconciliation.
|
|
80
|
+
|
|
81
|
+
Returns:
|
|
82
|
+
An [`Element`][pythonnative.Element] of type ``"Text"``.
|
|
83
|
+
"""
|
|
84
|
+
rich = any(isinstance(p, Element) for p in parts) or len(parts) > 1
|
|
85
|
+
if rich:
|
|
86
|
+
spans = _flatten_text_spans(parts, {})
|
|
87
|
+
text = "".join(s["text"] for s in spans)
|
|
88
|
+
else:
|
|
89
|
+
spans = None
|
|
90
|
+
text = str(parts[0]) if parts else ""
|
|
91
|
+
return _make_element(
|
|
92
|
+
"Text",
|
|
93
|
+
style=style,
|
|
94
|
+
ref=ref,
|
|
95
|
+
key=key,
|
|
96
|
+
text=text,
|
|
97
|
+
spans=spans,
|
|
98
|
+
accessibility_label=accessibility_label,
|
|
99
|
+
accessibility_hint=accessibility_hint,
|
|
100
|
+
accessibility_role=accessibility_role,
|
|
101
|
+
accessible=accessible,
|
|
102
|
+
accessibility_state=accessibility_state,
|
|
103
|
+
accessibility_live_region=accessibility_live_region,
|
|
104
|
+
test_id=test_id,
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
def Button(
|
|
109
|
+
title: str = "",
|
|
110
|
+
*,
|
|
111
|
+
on_press: Optional[Callable[[], Any]] = None,
|
|
112
|
+
disabled: bool = False,
|
|
113
|
+
style: StyleProp = None,
|
|
114
|
+
accessibility_label: Optional[str] = None,
|
|
115
|
+
accessibility_hint: Optional[str] = None,
|
|
116
|
+
accessibility_role: Optional[str] = None,
|
|
117
|
+
accessible: Optional[bool] = None,
|
|
118
|
+
accessibility_state: Optional[AccessibilityState] = None,
|
|
119
|
+
accessibility_live_region: Optional[Literal["none", "polite", "assertive"]] = None,
|
|
120
|
+
test_id: Optional[str] = None,
|
|
121
|
+
ref: Optional[Ref] = None,
|
|
122
|
+
key: Optional[str] = None,
|
|
123
|
+
) -> Element:
|
|
124
|
+
"""Display a tappable button.
|
|
125
|
+
|
|
126
|
+
Style properties: ``color``, ``background_color``, ``font_size``,
|
|
127
|
+
``border_radius``, ``border_width``, ``border_color``, ``shadow_*``,
|
|
128
|
+
``opacity``, ``transform``, plus the common layout props.
|
|
129
|
+
|
|
130
|
+
Buttons get ``accessibility_role="button"`` by default.
|
|
131
|
+
|
|
132
|
+
Args:
|
|
133
|
+
title: Button label.
|
|
134
|
+
on_press: Callback invoked when the user taps the button.
|
|
135
|
+
disabled: When ``True``, the button is disabled and cannot be
|
|
136
|
+
tapped.
|
|
137
|
+
style: Style dict (or list of dicts).
|
|
138
|
+
accessibility_label: Spoken description for screen readers.
|
|
139
|
+
accessibility_hint: Spoken extra detail (iOS only).
|
|
140
|
+
accessibility_role: Override the default ``"button"`` role.
|
|
141
|
+
accessible: Override whether the element is exposed to AT.
|
|
142
|
+
accessibility_state: Current widget state for assistive tech,
|
|
143
|
+
e.g. ``{"disabled": True, "selected": False}``. Recognized
|
|
144
|
+
keys: ``disabled``, ``selected``, ``checked``, ``busy``,
|
|
145
|
+
``expanded``.
|
|
146
|
+
accessibility_live_region: How AT announces dynamic changes to
|
|
147
|
+
this view: ``"none"``, ``"polite"``, or ``"assertive"``
|
|
148
|
+
(Android only).
|
|
149
|
+
test_id: Stable identifier for UI tests; exposed as
|
|
150
|
+
``resource-id`` on Android and ``accessibilityIdentifier``
|
|
151
|
+
on iOS.
|
|
152
|
+
ref: Optional [`Ref`][pythonnative.Ref] from ``use_ref()``.
|
|
153
|
+
key: Stable identity for keyed reconciliation.
|
|
154
|
+
|
|
155
|
+
Returns:
|
|
156
|
+
An [`Element`][pythonnative.Element] of type ``"Button"``.
|
|
157
|
+
"""
|
|
158
|
+
return _make_element(
|
|
159
|
+
"Button",
|
|
160
|
+
style=style,
|
|
161
|
+
ref=ref,
|
|
162
|
+
key=key,
|
|
163
|
+
title=title,
|
|
164
|
+
on_press=on_press,
|
|
165
|
+
disabled=disabled,
|
|
166
|
+
accessibility_label=accessibility_label,
|
|
167
|
+
accessibility_hint=accessibility_hint,
|
|
168
|
+
accessibility_role=accessibility_role,
|
|
169
|
+
accessible=accessible,
|
|
170
|
+
accessibility_state=accessibility_state,
|
|
171
|
+
accessibility_live_region=accessibility_live_region,
|
|
172
|
+
test_id=test_id,
|
|
173
|
+
_defaults={"accessibility_role": "button"},
|
|
174
|
+
)
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
def TextInput(
|
|
178
|
+
*,
|
|
179
|
+
value: str = "",
|
|
180
|
+
placeholder: Optional[str] = None,
|
|
181
|
+
on_change: Optional[Callable[[str], Any]] = None,
|
|
182
|
+
on_submit: Optional[Callable[[str], Any]] = None,
|
|
183
|
+
secure: bool = False,
|
|
184
|
+
multiline: bool = False,
|
|
185
|
+
keyboard_type: Optional[KeyboardType] = None,
|
|
186
|
+
auto_capitalize: Optional[AutoCapitalize] = None,
|
|
187
|
+
auto_correct: Optional[bool] = None,
|
|
188
|
+
auto_focus: bool = False,
|
|
189
|
+
return_key_type: Optional[ReturnKeyType] = None,
|
|
190
|
+
max_length: Optional[int] = None,
|
|
191
|
+
placeholder_color: Optional[Color] = None,
|
|
192
|
+
editable: bool = True,
|
|
193
|
+
clear_button: bool = False,
|
|
194
|
+
on_focus: Optional[Callable[[], Any]] = None,
|
|
195
|
+
on_blur: Optional[Callable[[], Any]] = None,
|
|
196
|
+
selection_color: Optional[Color] = None,
|
|
197
|
+
text_content_type: Optional[str] = None,
|
|
198
|
+
style: StyleProp = None,
|
|
199
|
+
accessibility_label: Optional[str] = None,
|
|
200
|
+
accessibility_hint: Optional[str] = None,
|
|
201
|
+
accessible: Optional[bool] = None,
|
|
202
|
+
accessibility_state: Optional[AccessibilityState] = None,
|
|
203
|
+
accessibility_live_region: Optional[Literal["none", "polite", "assertive"]] = None,
|
|
204
|
+
test_id: Optional[str] = None,
|
|
205
|
+
ref: Optional[Ref] = None,
|
|
206
|
+
key: Optional[str] = None,
|
|
207
|
+
) -> Element:
|
|
208
|
+
"""Display a text-entry field (single-line by default, or ``multiline``).
|
|
209
|
+
|
|
210
|
+
Style properties: ``font_size``, ``color``, ``background_color``,
|
|
211
|
+
``border_*``, plus the common layout props.
|
|
212
|
+
|
|
213
|
+
Args:
|
|
214
|
+
value: Current text content (controlled-input pattern).
|
|
215
|
+
placeholder: Hint shown when ``value`` is empty.
|
|
216
|
+
on_change: Callback invoked with the new string each keystroke.
|
|
217
|
+
on_submit: Callback invoked when the user submits (Return /
|
|
218
|
+
Done / etc.). Receives the final text.
|
|
219
|
+
secure: When ``True``, characters are masked (use for passwords).
|
|
220
|
+
multiline: When ``True``, allows multiple lines of input.
|
|
221
|
+
keyboard_type: One of ``"default"``, ``"email_address"``,
|
|
222
|
+
``"number_pad"``, ``"decimal_pad"``, ``"phone_pad"``, ``"url"``.
|
|
223
|
+
auto_capitalize: One of ``"none"``, ``"sentences"``, ``"words"``,
|
|
224
|
+
``"characters"``.
|
|
225
|
+
auto_correct: Enable/disable autocorrection.
|
|
226
|
+
auto_focus: Request focus on mount.
|
|
227
|
+
return_key_type: One of ``"default"``, ``"done"``, ``"go"``,
|
|
228
|
+
``"next"``, ``"send"``, ``"search"``.
|
|
229
|
+
max_length: Maximum number of characters allowed.
|
|
230
|
+
placeholder_color: Color used for the placeholder string.
|
|
231
|
+
editable: When ``False``, the field is read-only (still
|
|
232
|
+
selectable).
|
|
233
|
+
clear_button: When ``True``, shows a clear ("x") button while
|
|
234
|
+
editing (iOS ``clearButtonMode``; an inline button on
|
|
235
|
+
Android).
|
|
236
|
+
on_focus: Callback invoked when the field gains focus.
|
|
237
|
+
on_blur: Callback invoked when the field loses focus.
|
|
238
|
+
selection_color: Cursor / selection highlight color.
|
|
239
|
+
text_content_type: Semantic content hint for autofill (e.g.
|
|
240
|
+
``"username"``, ``"password"``, ``"one_time_code"``).
|
|
241
|
+
style: Style dict (or list of dicts).
|
|
242
|
+
accessibility_label: Spoken description for screen readers.
|
|
243
|
+
accessibility_hint: Spoken extra detail (iOS only).
|
|
244
|
+
accessible: Override whether the element is exposed to AT.
|
|
245
|
+
accessibility_state: Current widget state for assistive tech,
|
|
246
|
+
e.g. ``{"disabled": True, "selected": False}``. Recognized
|
|
247
|
+
keys: ``disabled``, ``selected``, ``checked``, ``busy``,
|
|
248
|
+
``expanded``.
|
|
249
|
+
accessibility_live_region: How AT announces dynamic changes to
|
|
250
|
+
this view: ``"none"``, ``"polite"``, or ``"assertive"``
|
|
251
|
+
(Android only).
|
|
252
|
+
test_id: Stable identifier for UI tests; exposed as
|
|
253
|
+
``resource-id`` on Android and ``accessibilityIdentifier``
|
|
254
|
+
on iOS.
|
|
255
|
+
ref: Optional [`Ref`][pythonnative.Ref] from ``use_ref()``.
|
|
256
|
+
key: Stable identity for keyed reconciliation.
|
|
257
|
+
|
|
258
|
+
Returns:
|
|
259
|
+
An [`Element`][pythonnative.Element] of type ``"TextInput"``.
|
|
260
|
+
"""
|
|
261
|
+
return _make_element(
|
|
262
|
+
"TextInput",
|
|
263
|
+
style=style,
|
|
264
|
+
ref=ref,
|
|
265
|
+
key=key,
|
|
266
|
+
value=value,
|
|
267
|
+
placeholder=placeholder,
|
|
268
|
+
on_change=on_change,
|
|
269
|
+
on_submit=on_submit,
|
|
270
|
+
secure=secure or None,
|
|
271
|
+
multiline=multiline or None,
|
|
272
|
+
keyboard_type=keyboard_type,
|
|
273
|
+
auto_capitalize=auto_capitalize,
|
|
274
|
+
auto_correct=auto_correct,
|
|
275
|
+
auto_focus=auto_focus or None,
|
|
276
|
+
return_key_type=return_key_type,
|
|
277
|
+
max_length=max_length,
|
|
278
|
+
placeholder_color=placeholder_color,
|
|
279
|
+
editable=False if editable is False else None,
|
|
280
|
+
clear_button=clear_button or None,
|
|
281
|
+
on_focus=on_focus,
|
|
282
|
+
on_blur=on_blur,
|
|
283
|
+
selection_color=selection_color,
|
|
284
|
+
text_content_type=text_content_type,
|
|
285
|
+
accessibility_label=accessibility_label,
|
|
286
|
+
accessibility_hint=accessibility_hint,
|
|
287
|
+
accessible=accessible,
|
|
288
|
+
accessibility_state=accessibility_state,
|
|
289
|
+
accessibility_live_region=accessibility_live_region,
|
|
290
|
+
test_id=test_id,
|
|
291
|
+
)
|