pythonnative 0.40.0__cp313-cp313-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (418) hide show
  1. pythonnative/__init__.py +411 -0
  2. pythonnative/_ios_log.py +92 -0
  3. pythonnative/_yoga.cp313-win_amd64.pyd +0 -0
  4. pythonnative/alerts.py +236 -0
  5. pythonnative/animated.py +1687 -0
  6. pythonnative/animation_graph.py +78 -0
  7. pythonnative/appearance.py +124 -0
  8. pythonnative/bootstrap.py +100 -0
  9. pythonnative/bridge/__init__.py +302 -0
  10. pythonnative/bridge/android.py +78 -0
  11. pythonnative/bridge/codec.py +170 -0
  12. pythonnative/bridge/commits.py +114 -0
  13. pythonnative/bridge/fake.py +243 -0
  14. pythonnative/bridge/ios.py +138 -0
  15. pythonnative/bridge/web.py +489 -0
  16. pythonnative/cli/__init__.py +7 -0
  17. pythonnative/cli/pn.py +1214 -0
  18. pythonnative/component.py +271 -0
  19. pythonnative/components/__init__.py +111 -0
  20. pythonnative/components/_base.py +166 -0
  21. pythonnative/components/controls.py +521 -0
  22. pythonnative/components/layout.py +518 -0
  23. pythonnative/components/lists.py +785 -0
  24. pythonnative/components/media.py +204 -0
  25. pythonnative/components/overlays.py +107 -0
  26. pythonnative/components/pressable.py +252 -0
  27. pythonnative/components/structural.py +167 -0
  28. pythonnative/components/text.py +291 -0
  29. pythonnative/devclient.py +824 -0
  30. pythonnative/devserver/__init__.py +34 -0
  31. pythonnative/devserver/server.py +718 -0
  32. pythonnative/devserver/static/animation_graph.js +82 -0
  33. pythonnative/devserver/static/bridge.js +147 -0
  34. pythonnative/devserver/static/colors.js +70 -0
  35. pythonnative/devserver/static/host.js +552 -0
  36. pythonnative/devserver/static/index.html +60 -0
  37. pythonnative/devserver/static/layout.js +85 -0
  38. pythonnative/devserver/static/preview.css +415 -0
  39. pythonnative/devserver/static/renderer.js +1994 -0
  40. pythonnative/devserver/static/shell.js +345 -0
  41. pythonnative/devserver/static/yoga/LICENSE +21 -0
  42. pythonnative/devserver/static/yoga/binaries/yoga-wasm-base64-esm.js +75 -0
  43. pythonnative/devserver/static/yoga/src/generated/YGEnums.d.ts +189 -0
  44. pythonnative/devserver/static/yoga/src/generated/YGEnums.js +211 -0
  45. pythonnative/devserver/static/yoga/src/generated/YGEnums.js.map +1 -0
  46. pythonnative/devserver/static/yoga/src/index.d.ts +12 -0
  47. pythonnative/devserver/static/yoga/src/index.js +16 -0
  48. pythonnative/devserver/static/yoga/src/index.js.map +1 -0
  49. pythonnative/devserver/static/yoga/src/load.d.ts +11 -0
  50. pythonnative/devserver/static/yoga/src/load.js +17 -0
  51. pythonnative/devserver/static/yoga/src/load.js.map +1 -0
  52. pythonnative/devserver/static/yoga/src/wrapAssembly.d.ts +155 -0
  53. pythonnative/devserver/static/yoga/src/wrapAssembly.js +125 -0
  54. pythonnative/devserver/static/yoga/src/wrapAssembly.js.map +1 -0
  55. pythonnative/devserver/watcher.py +267 -0
  56. pythonnative/devserver/ws.py +421 -0
  57. pythonnative/diagnostics.py +241 -0
  58. pythonnative/element.py +159 -0
  59. pythonnative/equality.py +19 -0
  60. pythonnative/events.py +231 -0
  61. pythonnative/gestures.py +1333 -0
  62. pythonnative/hooks.py +1621 -0
  63. pythonnative/hosts/__init__.py +63 -0
  64. pythonnative/hosts/base.py +596 -0
  65. pythonnative/hosts/native.py +302 -0
  66. pythonnative/hot_reload.py +585 -0
  67. pythonnative/layout.py +328 -0
  68. pythonnative/mutations.py +142 -0
  69. pythonnative/native/android/build.gradle +52 -0
  70. pythonnative/native/android/gradle.properties +3 -0
  71. pythonnative/native/android/settings.gradle +12 -0
  72. pythonnative/native/android/src/main/AndroidManifest.xml +11 -0
  73. pythonnative/native/android/src/main/cpp/CMakeLists.txt +9 -0
  74. pythonnative/native/android/src/main/cpp/yoga_jni.cpp +52 -0
  75. pythonnative/native/android/src/main/java/com/pythonnative/generated/NativeModules.kt +5 -0
  76. pythonnative/native/android/src/main/java/com/pythonnative/generated/NativeProps.kt +3705 -0
  77. pythonnative/native/android/src/main/java/com/pythonnative/generated/PNContracts.kt +129 -0
  78. pythonnative/native/android/src/main/java/com/pythonnative/runtime/PNBridge.kt +261 -0
  79. pythonnative/native/android/src/main/java/com/pythonnative/runtime/PythonHost.kt +20 -0
  80. pythonnative/native/android/src/main/java/com/pythonnative/runtime/animation/AnimationGraph.kt +108 -0
  81. pythonnative/native/android/src/main/java/com/pythonnative/runtime/animation/AnimationSpecs.kt +141 -0
  82. pythonnative/native/android/src/main/java/com/pythonnative/runtime/animation/PNAnimator.kt +257 -0
  83. pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/CommitState.kt +106 -0
  84. pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/JsonUtil.kt +175 -0
  85. pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/MainThread.kt +40 -0
  86. pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/PNLog.kt +33 -0
  87. pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/PNRegistry.kt +82 -0
  88. pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/PNTransaction.kt +80 -0
  89. pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/TransactionApplier.kt +117 -0
  90. pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/ViewRegistry.kt +74 -0
  91. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/BuiltinComponents.kt +37 -0
  92. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ButtonManager.kt +32 -0
  93. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ComponentManager.kt +213 -0
  94. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ContainerManagers.kt +69 -0
  95. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ControlManagers.kt +186 -0
  96. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/DatePickerManager.kt +123 -0
  97. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ImageLoader.kt +141 -0
  98. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ImageManager.kt +162 -0
  99. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ModalManager.kt +134 -0
  100. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PNColor.kt +201 -0
  101. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PickerManager.kt +86 -0
  102. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PortalManager.kt +55 -0
  103. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PressableManager.kt +122 -0
  104. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ScreenStackManager.kt +110 -0
  105. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ScrollViewManager.kt +214 -0
  106. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/SegmentedControlManager.kt +113 -0
  107. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/StatusBarManager.kt +52 -0
  108. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/TabBarManager.kt +131 -0
  109. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/TextInputManager.kt +250 -0
  110. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/TextManager.kt +233 -0
  111. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ViewStyler.kt +355 -0
  112. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/VirtualListManager.kt +159 -0
  113. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/WebViewManager.kt +149 -0
  114. pythonnative/native/android/src/main/java/com/pythonnative/runtime/gestures/GestureArbiter.kt +233 -0
  115. pythonnative/native/android/src/main/java/com/pythonnative/runtime/gestures/GestureCoordinator.kt +127 -0
  116. pythonnative/native/android/src/main/java/com/pythonnative/runtime/gestures/GestureRecognizers.kt +527 -0
  117. pythonnative/native/android/src/main/java/com/pythonnative/runtime/layout/NativeLayout.kt +145 -0
  118. pythonnative/native/android/src/main/java/com/pythonnative/runtime/layout/YogaNode.kt +29 -0
  119. pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/BuiltinModules.kt +73 -0
  120. pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/DeviceModules.kt +316 -0
  121. pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/HostModule.kt +61 -0
  122. pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/MediaModules.kt +200 -0
  123. pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/NativeModule.kt +158 -0
  124. pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/NotificationsModule.kt +100 -0
  125. pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/PermissionsModule.kt +99 -0
  126. pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/StorageModules.kt +89 -0
  127. pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/SystemModules.kt +178 -0
  128. pythonnative/native/android/src/main/java/com/pythonnative/runtime/plugins/GeneratedPlugins.kt +16 -0
  129. pythonnative/native/android/src/main/java/com/pythonnative/runtime/screens/PNScreenFragment.kt +188 -0
  130. pythonnative/native/android/src/main/java/com/pythonnative/runtime/screens/ScreenRegistry.kt +80 -0
  131. pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNAccessibilityDelegate.kt +48 -0
  132. pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNBorderDrawable.kt +76 -0
  133. pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNEditText.kt +18 -0
  134. pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNFrameLayout.kt +49 -0
  135. pythonnative/native/android/src/test/java/com/pythonnative/runtime/AnimationSpecsTest.kt +75 -0
  136. pythonnative/native/android/src/test/java/com/pythonnative/runtime/GestureArbiterTest.kt +197 -0
  137. pythonnative/native/android/src/test/java/com/pythonnative/runtime/PNColorTest.kt +47 -0
  138. pythonnative/native/android/src/test/java/com/pythonnative/runtime/PNTransactionTest.kt +78 -0
  139. pythonnative/native/android/src/test/java/com/pythonnative/runtime/PromiseTest.kt +89 -0
  140. pythonnative/native/ios/Package.swift +23 -0
  141. pythonnative/native/ios/Sources/PythonNativeKit/Animation/PNAnimationGraph.swift +199 -0
  142. pythonnative/native/ios/Sources/PythonNativeKit/Animation/PNAnimator.swift +312 -0
  143. pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNBridge.swift +255 -0
  144. pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNCommit.swift +104 -0
  145. pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNRegistry.swift +142 -0
  146. pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNTransaction.swift +166 -0
  147. pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNViewRegistry.swift +53 -0
  148. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNButtonManagers.swift +207 -0
  149. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNColor.swift +173 -0
  150. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNComponentManager.swift +183 -0
  151. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNContainerView.swift +56 -0
  152. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNControlManagers.swift +281 -0
  153. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNImageManager.swift +222 -0
  154. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNOverlayManagers.swift +243 -0
  155. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNPressableManager.swift +114 -0
  156. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNScreenStackManager.swift +107 -0
  157. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNScrollViewManager.swift +197 -0
  158. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTabBarManager.swift +106 -0
  159. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTextInputManager.swift +297 -0
  160. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTextManager.swift +230 -0
  161. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTransform.swift +82 -0
  162. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNViewManager.swift +86 -0
  163. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNViewState.swift +87 -0
  164. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNViewStyler.swift +340 -0
  165. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNVirtualListManager.swift +155 -0
  166. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNWebViewManager.swift +124 -0
  167. pythonnative/native/ios/Sources/PythonNativeKit/Generated/NativeModules.swift +1 -0
  168. pythonnative/native/ios/Sources/PythonNativeKit/Generated/NativeProps.swift +3775 -0
  169. pythonnative/native/ios/Sources/PythonNativeKit/Generated/PNContracts.swift +46 -0
  170. pythonnative/native/ios/Sources/PythonNativeKit/Gestures/PNGestureCoordinator.swift +260 -0
  171. pythonnative/native/ios/Sources/PythonNativeKit/Layout/PNLayout.swift +173 -0
  172. pythonnative/native/ios/Sources/PythonNativeKit/Modules/AlertModule.swift +92 -0
  173. pythonnative/native/ios/Sources/PythonNativeKit/Modules/HostModule.swift +80 -0
  174. pythonnative/native/ios/Sources/PythonNativeKit/Modules/LifecycleModules.swift +174 -0
  175. pythonnative/native/ios/Sources/PythonNativeKit/Modules/MediaModules.swift +177 -0
  176. pythonnative/native/ios/Sources/PythonNativeKit/Modules/PNNativeModule.swift +168 -0
  177. pythonnative/native/ios/Sources/PythonNativeKit/Modules/PermissionModules.swift +266 -0
  178. pythonnative/native/ios/Sources/PythonNativeKit/Modules/SystemModules.swift +251 -0
  179. pythonnative/native/ios/Sources/PythonNativeKit/Plugins/PNPluginRegistration.swift +8 -0
  180. pythonnative/native/ios/Sources/PythonNativeKit/Screens/PNScreenRegistry.swift +46 -0
  181. pythonnative/native/ios/Sources/PythonNativeKit/Screens/PNViewController.swift +237 -0
  182. pythonnative/native/ios/Sources/PythonNativeKit/Support/PNCompat.swift +46 -0
  183. pythonnative/native/ios/Sources/PythonNativeKit/Support/PNJSON.swift +173 -0
  184. pythonnative/native/ios/Sources/PythonNativeKit/Support/PNLog.swift +47 -0
  185. pythonnative/native/ios/Sources/PythonNativeKit/Support/PNWindow.swift +51 -0
  186. pythonnative/native/ios/Tests/PythonNativeKitTests/PNAnimationGraphTests.swift +26 -0
  187. pythonnative/native/ios/Tests/PythonNativeKitTests/PNColorTests.swift +50 -0
  188. pythonnative/native/ios/Tests/PythonNativeKitTests/PNCommitTests.swift +86 -0
  189. pythonnative/native/ios/Tests/PythonNativeKitTests/PNGestureTests.swift +101 -0
  190. pythonnative/native/ios/Tests/PythonNativeKitTests/PNManagerTests.swift +126 -0
  191. pythonnative/native/ios/Tests/PythonNativeKitTests/PNModuleTests.swift +111 -0
  192. pythonnative/native/ios/Tests/PythonNativeKitTests/PNTransactionTests.swift +91 -0
  193. pythonnative/native/yoga/LICENSE +21 -0
  194. pythonnative/native/yoga/Package.swift +9 -0
  195. pythonnative/native/yoga/VENDORED.md +2 -0
  196. pythonnative/native/yoga/include/PNStyle.h +10 -0
  197. pythonnative/native/yoga/include/module.modulemap +5 -0
  198. pythonnative/native/yoga/include/yoga/YGConfig.h +158 -0
  199. pythonnative/native/yoga/include/yoga/YGEnums.h +142 -0
  200. pythonnative/native/yoga/include/yoga/YGMacros.h +99 -0
  201. pythonnative/native/yoga/include/yoga/YGNode.h +304 -0
  202. pythonnative/native/yoga/include/yoga/YGNodeLayout.h +35 -0
  203. pythonnative/native/yoga/include/yoga/YGNodeStyle.h +130 -0
  204. pythonnative/native/yoga/include/yoga/YGPixelGrid.h +29 -0
  205. pythonnative/native/yoga/include/yoga/YGValue.h +84 -0
  206. pythonnative/native/yoga/include/yoga/Yoga.h +21 -0
  207. pythonnative/native/yoga/python.cpp +16 -0
  208. pythonnative/native/yoga/style.cpp +272 -0
  209. pythonnative/native/yoga/yoga/CMakeLists.txt +41 -0
  210. pythonnative/native/yoga/yoga/YGConfig.cpp +92 -0
  211. pythonnative/native/yoga/yoga/YGConfig.h +158 -0
  212. pythonnative/native/yoga/yoga/YGEnums.cpp +262 -0
  213. pythonnative/native/yoga/yoga/YGEnums.h +142 -0
  214. pythonnative/native/yoga/yoga/YGMacros.h +99 -0
  215. pythonnative/native/yoga/yoga/YGNode.cpp +366 -0
  216. pythonnative/native/yoga/yoga/YGNode.h +304 -0
  217. pythonnative/native/yoga/yoga/YGNodeLayout.cpp +92 -0
  218. pythonnative/native/yoga/yoga/YGNodeLayout.h +35 -0
  219. pythonnative/native/yoga/yoga/YGNodeStyle.cpp +405 -0
  220. pythonnative/native/yoga/yoga/YGNodeStyle.h +130 -0
  221. pythonnative/native/yoga/yoga/YGPixelGrid.cpp +22 -0
  222. pythonnative/native/yoga/yoga/YGPixelGrid.h +29 -0
  223. pythonnative/native/yoga/yoga/YGValue.cpp +20 -0
  224. pythonnative/native/yoga/yoga/YGValue.h +84 -0
  225. pythonnative/native/yoga/yoga/Yoga.h +21 -0
  226. pythonnative/native/yoga/yoga/algorithm/AbsoluteLayout.cpp +563 -0
  227. pythonnative/native/yoga/yoga/algorithm/AbsoluteLayout.h +41 -0
  228. pythonnative/native/yoga/yoga/algorithm/Align.h +72 -0
  229. pythonnative/native/yoga/yoga/algorithm/Baseline.cpp +78 -0
  230. pythonnative/native/yoga/yoga/algorithm/Baseline.h +21 -0
  231. pythonnative/native/yoga/yoga/algorithm/BoundAxis.h +79 -0
  232. pythonnative/native/yoga/yoga/algorithm/Cache.cpp +121 -0
  233. pythonnative/native/yoga/yoga/algorithm/Cache.h +30 -0
  234. pythonnative/native/yoga/yoga/algorithm/CalculateLayout.cpp +2428 -0
  235. pythonnative/native/yoga/yoga/algorithm/CalculateLayout.h +38 -0
  236. pythonnative/native/yoga/yoga/algorithm/FlexDirection.h +120 -0
  237. pythonnative/native/yoga/yoga/algorithm/FlexLine.cpp +124 -0
  238. pythonnative/native/yoga/yoga/algorithm/FlexLine.h +75 -0
  239. pythonnative/native/yoga/yoga/algorithm/PixelGrid.cpp +132 -0
  240. pythonnative/native/yoga/yoga/algorithm/PixelGrid.h +29 -0
  241. pythonnative/native/yoga/yoga/algorithm/SizingMode.h +73 -0
  242. pythonnative/native/yoga/yoga/algorithm/TrailingPosition.h +44 -0
  243. pythonnative/native/yoga/yoga/config/Config.cpp +135 -0
  244. pythonnative/native/yoga/yoga/config/Config.h +92 -0
  245. pythonnative/native/yoga/yoga/debug/AssertFatal.cpp +53 -0
  246. pythonnative/native/yoga/yoga/debug/AssertFatal.h +29 -0
  247. pythonnative/native/yoga/yoga/debug/Log.cpp +107 -0
  248. pythonnative/native/yoga/yoga/debug/Log.h +34 -0
  249. pythonnative/native/yoga/yoga/enums/Align.h +47 -0
  250. pythonnative/native/yoga/yoga/enums/BoxSizing.h +40 -0
  251. pythonnative/native/yoga/yoga/enums/Dimension.h +40 -0
  252. pythonnative/native/yoga/yoga/enums/Direction.h +41 -0
  253. pythonnative/native/yoga/yoga/enums/Display.h +41 -0
  254. pythonnative/native/yoga/yoga/enums/Edge.h +47 -0
  255. pythonnative/native/yoga/yoga/enums/Errata.h +41 -0
  256. pythonnative/native/yoga/yoga/enums/ExperimentalFeature.h +39 -0
  257. pythonnative/native/yoga/yoga/enums/FlexDirection.h +42 -0
  258. pythonnative/native/yoga/yoga/enums/Gutter.h +41 -0
  259. pythonnative/native/yoga/yoga/enums/Justify.h +44 -0
  260. pythonnative/native/yoga/yoga/enums/LogLevel.h +44 -0
  261. pythonnative/native/yoga/yoga/enums/MeasureMode.h +41 -0
  262. pythonnative/native/yoga/yoga/enums/NodeType.h +40 -0
  263. pythonnative/native/yoga/yoga/enums/Overflow.h +41 -0
  264. pythonnative/native/yoga/yoga/enums/PhysicalEdge.h +21 -0
  265. pythonnative/native/yoga/yoga/enums/PositionType.h +41 -0
  266. pythonnative/native/yoga/yoga/enums/Unit.h +42 -0
  267. pythonnative/native/yoga/yoga/enums/Wrap.h +41 -0
  268. pythonnative/native/yoga/yoga/enums/YogaEnums.h +85 -0
  269. pythonnative/native/yoga/yoga/event/event.cpp +87 -0
  270. pythonnative/native/yoga/yoga/event/event.h +130 -0
  271. pythonnative/native/yoga/yoga/module.modulemap +21 -0
  272. pythonnative/native/yoga/yoga/node/CachedMeasurement.h +53 -0
  273. pythonnative/native/yoga/yoga/node/LayoutResults.cpp +48 -0
  274. pythonnative/native/yoga/yoga/node/LayoutResults.h +122 -0
  275. pythonnative/native/yoga/yoga/node/LayoutableChildren.h +148 -0
  276. pythonnative/native/yoga/yoga/node/Node.cpp +443 -0
  277. pythonnative/native/yoga/yoga/node/Node.h +337 -0
  278. pythonnative/native/yoga/yoga/numeric/Comparison.h +81 -0
  279. pythonnative/native/yoga/yoga/numeric/FloatOptional.h +93 -0
  280. pythonnative/native/yoga/yoga/style/SmallValueBuffer.h +133 -0
  281. pythonnative/native/yoga/yoga/style/Style.h +757 -0
  282. pythonnative/native/yoga/yoga/style/StyleLength.h +107 -0
  283. pythonnative/native/yoga/yoga/style/StyleValueHandle.h +98 -0
  284. pythonnative/native/yoga/yoga/style/StyleValuePool.h +127 -0
  285. pythonnative/native_modules/__init__.py +124 -0
  286. pythonnative/native_modules/app_state.py +99 -0
  287. pythonnative/native_modules/battery.py +75 -0
  288. pythonnative/native_modules/biometrics.py +42 -0
  289. pythonnative/native_modules/camera.py +65 -0
  290. pythonnative/native_modules/clipboard.py +46 -0
  291. pythonnative/native_modules/fallback.py +324 -0
  292. pythonnative/native_modules/file_system.py +145 -0
  293. pythonnative/native_modules/haptics.py +75 -0
  294. pythonnative/native_modules/linking.py +123 -0
  295. pythonnative/native_modules/location.py +75 -0
  296. pythonnative/native_modules/net_info.py +112 -0
  297. pythonnative/native_modules/notifications.py +129 -0
  298. pythonnative/native_modules/permissions.py +108 -0
  299. pythonnative/native_modules/registry.py +526 -0
  300. pythonnative/native_modules/secure_store.py +52 -0
  301. pythonnative/native_modules/share.py +51 -0
  302. pythonnative/native_views/__init__.py +375 -0
  303. pythonnative/native_views/base.py +316 -0
  304. pythonnative/native_views/bridge_backend.py +277 -0
  305. pythonnative/navigation/__init__.py +103 -0
  306. pythonnative/navigation/container.py +154 -0
  307. pythonnative/navigation/handle.py +540 -0
  308. pythonnative/navigation/hooks.py +133 -0
  309. pythonnative/navigation/host.py +58 -0
  310. pythonnative/navigation/linking.py +200 -0
  311. pythonnative/navigation/navigators.py +659 -0
  312. pythonnative/navigation/screen.py +149 -0
  313. pythonnative/navigation/state.py +269 -0
  314. pythonnative/net.py +248 -0
  315. pythonnative/platform.py +166 -0
  316. pythonnative/platform_metrics.py +252 -0
  317. pythonnative/preview.py +287 -0
  318. pythonnative/profiling.py +101 -0
  319. pythonnative/project/__init__.py +68 -0
  320. pythonnative/project/android.py +557 -0
  321. pythonnative/project/builder.py +817 -0
  322. pythonnative/project/config.py +773 -0
  323. pythonnative/project/deps.py +719 -0
  324. pythonnative/project/devices.py +304 -0
  325. pythonnative/project/doctor.py +283 -0
  326. pythonnative/project/fingerprint.py +171 -0
  327. pythonnative/project/icons.py +247 -0
  328. pythonnative/project/ios.py +325 -0
  329. pythonnative/project/lockfile.py +100 -0
  330. pythonnative/project/permissions.py +361 -0
  331. pythonnative/project/plugins.py +519 -0
  332. pythonnative/project/runtime_assets.py +183 -0
  333. pythonnative/py.typed +0 -0
  334. pythonnative/query.py +153 -0
  335. pythonnative/reconciler/__init__.py +29 -0
  336. pythonnative/reconciler/boundaries.py +375 -0
  337. pythonnative/reconciler/children.py +88 -0
  338. pythonnative/reconciler/core.py +1165 -0
  339. pythonnative/reconciler/layout_pass.py +393 -0
  340. pythonnative/reconciler/vnode.py +266 -0
  341. pythonnative/refresh.py +55 -0
  342. pythonnative/runtime.py +306 -0
  343. pythonnative/scheduler.py +159 -0
  344. pythonnative/sdk/__init__.py +153 -0
  345. pythonnative/sdk/_components.py +427 -0
  346. pythonnative/sdk/builtins.py +91 -0
  347. pythonnative/sdk/codegen.py +149 -0
  348. pythonnative/sdk/module_codegen.py +184 -0
  349. pythonnative/sdk/schema.py +224 -0
  350. pythonnative/sdk/templates/contracts.kt +46 -0
  351. pythonnative/sdk/templates/contracts.swift +46 -0
  352. pythonnative/storage.py +184 -0
  353. pythonnative/style.py +841 -0
  354. pythonnative/suspense.py +183 -0
  355. pythonnative/templates/android_template/app/build.gradle +75 -0
  356. pythonnative/templates/android_template/app/proguard-rules.pro +21 -0
  357. pythonnative/templates/android_template/app/src/androidTest/java/com/pythonnative/android_template/ExampleInstrumentedTest.kt +24 -0
  358. pythonnative/templates/android_template/app/src/debug/AndroidManifest.xml +7 -0
  359. pythonnative/templates/android_template/app/src/main/AndroidManifest.xml +32 -0
  360. pythonnative/templates/android_template/app/src/main/java/com/pythonnative/android_template/MainActivity.kt +130 -0
  361. pythonnative/templates/android_template/app/src/main/java/com/pythonnative/android_template/ScreenFragment.kt +13 -0
  362. pythonnative/templates/android_template/app/src/main/res/drawable/ic_launcher_background.xml +170 -0
  363. pythonnative/templates/android_template/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +30 -0
  364. pythonnative/templates/android_template/app/src/main/res/layout/activity_main.xml +10 -0
  365. pythonnative/templates/android_template/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +6 -0
  366. pythonnative/templates/android_template/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +6 -0
  367. pythonnative/templates/android_template/app/src/main/res/mipmap-hdpi/ic_launcher.webp +0 -0
  368. pythonnative/templates/android_template/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp +0 -0
  369. pythonnative/templates/android_template/app/src/main/res/mipmap-mdpi/ic_launcher.webp +0 -0
  370. pythonnative/templates/android_template/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp +0 -0
  371. pythonnative/templates/android_template/app/src/main/res/mipmap-xhdpi/ic_launcher.webp +0 -0
  372. pythonnative/templates/android_template/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp +0 -0
  373. pythonnative/templates/android_template/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp +0 -0
  374. pythonnative/templates/android_template/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp +0 -0
  375. pythonnative/templates/android_template/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp +0 -0
  376. pythonnative/templates/android_template/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp +0 -0
  377. pythonnative/templates/android_template/app/src/main/res/navigation/nav_graph.xml +22 -0
  378. pythonnative/templates/android_template/app/src/main/res/values/colors.xml +5 -0
  379. pythonnative/templates/android_template/app/src/main/res/values/strings.xml +5 -0
  380. pythonnative/templates/android_template/app/src/main/res/values/themes.xml +9 -0
  381. pythonnative/templates/android_template/app/src/main/res/values-night/themes.xml +7 -0
  382. pythonnative/templates/android_template/app/src/main/res/xml/backup_rules.xml +13 -0
  383. pythonnative/templates/android_template/app/src/main/res/xml/data_extraction_rules.xml +19 -0
  384. pythonnative/templates/android_template/app/src/test/java/com/pythonnative/android_template/ExampleUnitTest.kt +17 -0
  385. pythonnative/templates/android_template/build.gradle +10 -0
  386. pythonnative/templates/android_template/gradle/wrapper/gradle-wrapper.jar +0 -0
  387. pythonnative/templates/android_template/gradle/wrapper/gradle-wrapper.properties +6 -0
  388. pythonnative/templates/android_template/gradle.properties +23 -0
  389. pythonnative/templates/android_template/gradlew +185 -0
  390. pythonnative/templates/android_template/gradlew.bat +89 -0
  391. pythonnative/templates/android_template/settings.gradle +17 -0
  392. pythonnative/templates/ios_template/ios_template/AppDelegate.swift +51 -0
  393. pythonnative/templates/ios_template/ios_template/Assets.xcassets/AccentColor.colorset/Contents.json +11 -0
  394. pythonnative/templates/ios_template/ios_template/Assets.xcassets/AppIcon.appiconset/Contents.json +13 -0
  395. pythonnative/templates/ios_template/ios_template/Assets.xcassets/Contents.json +6 -0
  396. pythonnative/templates/ios_template/ios_template/Base.lproj/LaunchScreen.storyboard +25 -0
  397. pythonnative/templates/ios_template/ios_template/BridgingHeader.h +14 -0
  398. pythonnative/templates/ios_template/ios_template/Info.plist +28 -0
  399. pythonnative/templates/ios_template/ios_template/PythonRuntime.swift +390 -0
  400. pythonnative/templates/ios_template/ios_template/SceneDelegate.swift +61 -0
  401. pythonnative/templates/ios_template/ios_template/ViewController.swift +23 -0
  402. pythonnative/templates/ios_template/ios_template.xcodeproj/project.pbxproj +745 -0
  403. pythonnative/templates/ios_template/ios_template.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  404. pythonnative/templates/ios_template/ios_templateTests/ios_templateTests.swift +36 -0
  405. pythonnative/templates/ios_template/ios_templateUITests/ios_templateUITests.swift +41 -0
  406. pythonnative/templates/ios_template/ios_templateUITests/ios_templateUITestsLaunchTests.swift +32 -0
  407. pythonnative/testing/__init__.py +53 -0
  408. pythonnative/testing/backend.py +276 -0
  409. pythonnative/testing/harness.py +369 -0
  410. pythonnative/utils.py +145 -0
  411. pythonnative-0.40.0.dist-info/DELVEWHEEL +2 -0
  412. pythonnative-0.40.0.dist-info/METADATA +150 -0
  413. pythonnative-0.40.0.dist-info/RECORD +418 -0
  414. pythonnative-0.40.0.dist-info/WHEEL +5 -0
  415. pythonnative-0.40.0.dist-info/entry_points.txt +2 -0
  416. pythonnative-0.40.0.dist-info/licenses/LICENSE +21 -0
  417. pythonnative-0.40.0.dist-info/top_level.txt +1 -0
  418. pythonnative.libs/msvcp140-a4c2229bdc2a2a630acdc095b4d86008.dll +0 -0
@@ -0,0 +1,415 @@
1
+ /* PythonNative browser preview: the shell around the phone frame plus
2
+ the base styles every rendered view relies on. Rendered views are
3
+ positioned absolutely by the Python layout engine (frames arrive in
4
+ points, which map 1:1 to CSS px inside the frame). */
5
+
6
+ :root {
7
+ --pn-bg: #f2f2f7;
8
+ --pn-fg: #1c1c1e;
9
+ --pn-muted: #6e6e73;
10
+ --pn-panel: #ffffff;
11
+ --pn-border: #d8d8dc;
12
+ --pn-accent: #007aff;
13
+ --pn-danger: #ff3b30;
14
+ --pn-ok: #34c759;
15
+ --pn-font: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
16
+ --pn-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
17
+ }
18
+
19
+ body.pn-dark-shell {
20
+ --pn-bg: #111114;
21
+ --pn-fg: #f2f2f7;
22
+ --pn-muted: #98989d;
23
+ --pn-panel: #1c1c1e;
24
+ --pn-border: #3a3a3c;
25
+ }
26
+
27
+ html, body {
28
+ margin: 0;
29
+ height: 100%;
30
+ background: var(--pn-bg);
31
+ color: var(--pn-fg);
32
+ font: 13px/1.4 var(--pn-font);
33
+ }
34
+
35
+ body {
36
+ display: flex;
37
+ flex-direction: column;
38
+ overflow: hidden;
39
+ }
40
+
41
+ .pn-hidden { display: none !important; }
42
+ .pn-muted { color: var(--pn-muted); }
43
+
44
+ /* ---- toolbar ------------------------------------------------------- */
45
+
46
+ #pn-toolbar {
47
+ display: flex;
48
+ align-items: center;
49
+ justify-content: space-between;
50
+ gap: 12px;
51
+ padding: 6px 12px;
52
+ background: var(--pn-panel);
53
+ border-bottom: 1px solid var(--pn-border);
54
+ flex: 0 0 auto;
55
+ user-select: none;
56
+ }
57
+
58
+ .pn-brand { display: flex; align-items: center; gap: 8px; }
59
+ .pn-dot {
60
+ width: 9px; height: 9px; border-radius: 50%;
61
+ background: var(--pn-danger);
62
+ box-shadow: 0 0 0 2px rgba(255, 59, 48, 0.2);
63
+ }
64
+ .pn-dot.pn-connected { background: var(--pn-ok); box-shadow: 0 0 0 2px rgba(52, 199, 89, 0.25); }
65
+
66
+ .pn-controls { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
67
+ .pn-controls label { display: flex; align-items: center; gap: 4px; color: var(--pn-muted); }
68
+ .pn-controls button, .pn-controls select, .pn-console-bar button {
69
+ font: inherit;
70
+ color: var(--pn-fg);
71
+ background: var(--pn-bg);
72
+ border: 1px solid var(--pn-border);
73
+ border-radius: 6px;
74
+ padding: 3px 9px;
75
+ cursor: pointer;
76
+ }
77
+ .pn-controls button:hover { border-color: var(--pn-accent); }
78
+
79
+ /* ---- stage + frame -------------------------------------------------- */
80
+
81
+ #pn-stage {
82
+ flex: 1 1 auto;
83
+ position: relative;
84
+ display: flex;
85
+ align-items: center;
86
+ justify-content: center;
87
+ overflow: hidden;
88
+ padding: 16px;
89
+ }
90
+
91
+ .pn-frame {
92
+ position: relative;
93
+ background: #000;
94
+ border-radius: 44px;
95
+ box-shadow: 0 20px 60px rgba(0, 0, 0, 0.35), inset 0 0 0 10px #1a1a1a;
96
+ padding: 12px;
97
+ transform-origin: center center;
98
+ box-sizing: content-box;
99
+ }
100
+ .pn-frame.pn-frame-flat {
101
+ border-radius: 0;
102
+ box-shadow: none;
103
+ padding: 0;
104
+ background: transparent;
105
+ }
106
+
107
+ .pn-statusbar {
108
+ position: absolute;
109
+ left: 12px; right: 12px; top: 12px;
110
+ height: 47px;
111
+ display: flex;
112
+ align-items: flex-end;
113
+ justify-content: space-between;
114
+ padding: 0 28px 10px 28px;
115
+ box-sizing: border-box;
116
+ font-weight: 600;
117
+ font-size: 15px;
118
+ color: #000;
119
+ pointer-events: none;
120
+ z-index: 5;
121
+ border-radius: 32px 32px 0 0;
122
+ }
123
+ .pn-frame.pn-frame-flat .pn-statusbar { left: 0; right: 0; top: 0; border-radius: 0; }
124
+ .pn-statusbar.pn-light-content { color: #fff; }
125
+ .pn-statusbar.pn-hidden-bar { visibility: hidden; }
126
+
127
+ .pn-screens, .pn-overlays {
128
+ position: absolute;
129
+ left: 12px; top: 12px;
130
+ overflow: hidden;
131
+ border-radius: 32px;
132
+ background: #fff;
133
+ }
134
+ .pn-frame.pn-frame-flat .pn-screens, .pn-frame.pn-frame-flat .pn-overlays { left: 0; top: 0; border-radius: 0; }
135
+ .pn-overlays { background: transparent; pointer-events: none; z-index: 20; }
136
+ .pn-overlays > * { pointer-events: auto; }
137
+ .pn-dark .pn-screens { background: #000; }
138
+
139
+ .pn-home {
140
+ position: absolute;
141
+ left: 50%; bottom: 20px;
142
+ width: 134px; height: 5px;
143
+ margin-left: -67px;
144
+ border-radius: 3px;
145
+ background: rgba(0, 0, 0, 0.75);
146
+ pointer-events: none;
147
+ z-index: 6;
148
+ }
149
+ .pn-dark .pn-home { background: rgba(255, 255, 255, 0.85); }
150
+
151
+ /* ---- screens -------------------------------------------------------- */
152
+
153
+ .pn-screen {
154
+ position: absolute;
155
+ inset: 0;
156
+ background: #fff;
157
+ overflow: hidden;
158
+ transition: transform 260ms cubic-bezier(0.2, 0.8, 0.2, 1);
159
+ }
160
+ .pn-dark .pn-screen { background: #000; }
161
+ .pn-screen.pn-enter { transform: translateX(100%); }
162
+ .pn-screen.pn-under { transform: translateX(-30%); }
163
+
164
+ .pn-header {
165
+ position: absolute;
166
+ left: 0; right: 0;
167
+ height: 44px;
168
+ display: flex;
169
+ align-items: center;
170
+ justify-content: center;
171
+ border-bottom: 1px solid rgba(0, 0, 0, 0.15);
172
+ background: rgba(249, 249, 249, 0.94);
173
+ backdrop-filter: blur(20px);
174
+ color: #000;
175
+ font-size: 17px;
176
+ font-weight: 600;
177
+ z-index: 3;
178
+ user-select: none;
179
+ }
180
+ .pn-dark .pn-header { background: rgba(29, 29, 31, 0.94); border-bottom-color: rgba(255, 255, 255, 0.15); color: #fff; }
181
+ .pn-header .pn-back {
182
+ position: absolute;
183
+ left: 8px; top: 0; bottom: 0;
184
+ display: flex; align-items: center;
185
+ color: var(--pn-accent);
186
+ font-weight: 400;
187
+ cursor: pointer;
188
+ background: none; border: 0; font-size: 17px; padding: 0 4px;
189
+ }
190
+ .pn-header .pn-back::before { content: "‹"; font-size: 30px; line-height: 1; margin-right: 4px; margin-top: -4px; }
191
+ .pn-header .pn-title { max-width: 60%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
192
+
193
+ .pn-content {
194
+ position: absolute;
195
+ left: 0; right: 0; bottom: 0;
196
+ overflow: hidden;
197
+ }
198
+
199
+ /* ---- rendered views ------------------------------------------------- */
200
+
201
+ .pn-view {
202
+ position: absolute;
203
+ box-sizing: border-box;
204
+ margin: 0;
205
+ left: 0; top: 0;
206
+ font: 17px/1.25 var(--pn-font);
207
+ color: #000;
208
+ -webkit-font-smoothing: antialiased;
209
+ }
210
+ .pn-dark .pn-view { color: #fff; }
211
+ .pn-root { left: 0; top: 0; }
212
+
213
+ .pn-text {
214
+ white-space: pre-wrap;
215
+ overflow-wrap: break-word;
216
+ user-select: none;
217
+ cursor: default;
218
+ }
219
+ .pn-text.pn-selectable { user-select: text; cursor: text; }
220
+ .pn-text.pn-clamp {
221
+ display: -webkit-box;
222
+ -webkit-box-orient: vertical;
223
+ overflow: hidden;
224
+ }
225
+ .pn-text.pn-clamp-1 { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
226
+
227
+ .pn-button, .pn-dark .pn-button {
228
+ display: flex; align-items: center; justify-content: center;
229
+ border: 0; background: transparent; color: var(--pn-accent);
230
+ font: 17px var(--pn-font);
231
+ cursor: pointer;
232
+ border-radius: 8px;
233
+ white-space: nowrap;
234
+ padding: 0 12px;
235
+ touch-action: manipulation;
236
+ }
237
+ .pn-button:active { opacity: 0.4; }
238
+ .pn-button:disabled { opacity: 0.35; cursor: default; }
239
+
240
+ .pn-input {
241
+ font: 17px var(--pn-font);
242
+ color: inherit;
243
+ background: #fff;
244
+ border: 1px solid #c7c7cc;
245
+ border-radius: 5px;
246
+ padding: 0 8px;
247
+ outline: none;
248
+ resize: none;
249
+ box-sizing: border-box;
250
+ }
251
+ .pn-dark .pn-input { background: #1c1c1e; border-color: #3a3a3c; }
252
+ .pn-input:focus { border-color: var(--pn-accent); }
253
+ textarea.pn-input { padding: 8px; line-height: 1.3; }
254
+
255
+ .pn-image-wrap { overflow: hidden; }
256
+ .pn-image-wrap img { display: block; width: 100%; height: 100%; object-fit: contain; pointer-events: none; }
257
+ .pn-image-tint { position: absolute; inset: 0; -webkit-mask-size: contain; mask-size: contain; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; -webkit-mask-position: center; mask-position: center; }
258
+
259
+ .pn-switch {
260
+ width: 51px; height: 31px; border-radius: 16px;
261
+ background: #e9e9ea; position: relative; cursor: pointer;
262
+ transition: background-color 150ms;
263
+ }
264
+ .pn-dark .pn-switch { background: #39393d; }
265
+ .pn-switch .pn-knob {
266
+ position: absolute; top: 2px; left: 2px; width: 27px; height: 27px; border-radius: 50%;
267
+ background: #fff; box-shadow: 0 3px 8px rgba(0,0,0,0.15), 0 1px 1px rgba(0,0,0,0.16);
268
+ transition: transform 150ms;
269
+ }
270
+ .pn-switch.pn-on .pn-knob { transform: translateX(20px); }
271
+ .pn-switch.pn-disabled { opacity: 0.5; cursor: default; }
272
+
273
+ .pn-slider { -webkit-appearance: none; appearance: none; background: transparent; margin: 0; height: 34px; cursor: pointer; }
274
+ .pn-slider::-webkit-slider-runnable-track { height: 4px; border-radius: 2px; background: var(--pn-track, #e5e5ea); }
275
+ .pn-slider::-webkit-slider-thumb { -webkit-appearance: none; width: 28px; height: 28px; border-radius: 50%; background: var(--pn-thumb, #fff); margin-top: -12px; box-shadow: 0 3px 8px rgba(0,0,0,0.2); }
276
+ .pn-slider::-moz-range-track { height: 4px; border-radius: 2px; background: var(--pn-track, #e5e5ea); }
277
+ .pn-slider::-moz-range-thumb { width: 28px; height: 28px; border-radius: 50%; background: var(--pn-thumb, #fff); border: 0; box-shadow: 0 3px 8px rgba(0,0,0,0.2); }
278
+
279
+ .pn-spinner {
280
+ display: inline-block;
281
+ border-radius: 50%;
282
+ border: 2px solid rgba(128, 128, 128, 0.25);
283
+ border-top-color: #8e8e93;
284
+ animation: pn-spin 0.8s linear infinite;
285
+ box-sizing: border-box;
286
+ }
287
+ @keyframes pn-spin { to { transform: rotate(360deg); } }
288
+
289
+ .pn-progress { background: #e5e5ea; border-radius: 2px; overflow: hidden; height: 4px; }
290
+ .pn-progress > div { height: 100%; background: var(--pn-accent); width: 0; transition: width 120ms linear; }
291
+
292
+ .pn-scroll { overflow: auto; -webkit-overflow-scrolling: touch; overscroll-behavior: contain; }
293
+ .pn-scroll.pn-no-indicator { scrollbar-width: none; }
294
+ .pn-scroll.pn-no-indicator::-webkit-scrollbar { display: none; }
295
+ .pn-scroll.pn-paging { scroll-snap-type: both mandatory; }
296
+ .pn-scroll.pn-scroll-disabled { overflow: hidden; }
297
+ .pn-scroll-content { position: relative; min-width: 100%; min-height: 100%; }
298
+ .pn-refresh { position: absolute; left: 0; right: 0; top: 0; height: 40px; display: flex; align-items: center; justify-content: center; z-index: 2; }
299
+
300
+ .pn-pressable { cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
301
+ .pn-pressable.pn-disabled { cursor: default; }
302
+
303
+ .pn-checkbox { display: flex; align-items: center; gap: 8px; cursor: pointer; user-select: none; white-space: nowrap; }
304
+ .pn-checkbox .pn-box { width: 22px; height: 22px; border-radius: 6px; border: 2px solid #8e8e93; box-sizing: border-box; display: flex; align-items: center; justify-content: center; color: #fff; font-size: 15px; }
305
+ .pn-checkbox.pn-on .pn-box { background: var(--pn-check, var(--pn-accent)); border-color: var(--pn-check, var(--pn-accent)); }
306
+ .pn-checkbox.pn-disabled { opacity: 0.5; cursor: default; }
307
+
308
+ .pn-segmented { display: flex; background: rgba(118, 118, 128, 0.12); border-radius: 9px; padding: 2px; height: 32px; box-sizing: border-box; }
309
+ .pn-segmented button { flex: 1; border: 0; background: transparent; font: 13px/1 var(--pn-font); font-weight: 500; color: inherit; border-radius: 7px; cursor: pointer; white-space: nowrap; padding: 0 10px; }
310
+ .pn-segmented button.pn-selected { background: #fff; box-shadow: 0 3px 8px rgba(0,0,0,0.12); }
311
+ .pn-dark .pn-segmented button.pn-selected { background: #636366; }
312
+
313
+ .pn-select, .pn-date {
314
+ font: 17px var(--pn-font); color: inherit;
315
+ background: rgba(118, 118, 128, 0.12); border: 0; border-radius: 8px; padding: 0 10px; height: 36px; box-sizing: border-box;
316
+ }
317
+
318
+ .pn-tabbar {
319
+ display: flex; align-items: flex-start;
320
+ background: rgba(249, 249, 249, 0.94); border-top: 1px solid rgba(0,0,0,0.15);
321
+ backdrop-filter: blur(20px);
322
+ }
323
+ .pn-dark .pn-tabbar { background: rgba(29, 29, 31, 0.94); border-top-color: rgba(255,255,255,0.15); }
324
+ .pn-tabbar button {
325
+ flex: 1; height: 49px; border: 0; background: transparent; color: #8e8e93;
326
+ display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px;
327
+ font: 10px var(--pn-font); cursor: pointer; position: relative;
328
+ }
329
+ .pn-tabbar button .pn-tab-icon { font-size: 22px; line-height: 1; }
330
+ .pn-tabbar button.pn-active { color: var(--pn-tab-active, var(--pn-accent)); }
331
+ .pn-tabbar .pn-badge { position: absolute; top: 4px; left: 50%; margin-left: 6px; background: var(--pn-danger); color: #fff; border-radius: 9px; min-width: 18px; height: 18px; font-size: 12px; line-height: 18px; text-align: center; padding: 0 5px; }
332
+
333
+ .pn-modal-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,0.4); display: flex; align-items: flex-end; justify-content: center; }
334
+ .pn-modal-backdrop.pn-transparent { background: transparent; }
335
+ .pn-modal-sheet { position: relative; width: 100%; height: calc(100% - 44px); background: #fff; border-radius: 12px 12px 0 0; overflow: hidden; }
336
+ .pn-dark .pn-modal-sheet { background: #1c1c1e; }
337
+ .pn-modal-sheet.pn-full { height: 100%; border-radius: 0; }
338
+ .pn-modal-sheet.pn-form { height: 70%; width: 90%; margin-bottom: 15%; border-radius: 12px; }
339
+ .pn-modal-sheet.pn-overlay { background: transparent; height: 100%; border-radius: 0; }
340
+
341
+ .pn-placeholder {
342
+ border: 1px dashed #ff9500; color: #ff9500; font: 11px var(--pn-mono);
343
+ display: flex; align-items: center; justify-content: center; text-align: center; overflow: hidden;
344
+ }
345
+
346
+ .pn-webview { border: 0; width: 100%; height: 100%; background: #fff; }
347
+
348
+ .pn-vlist { overflow: auto; }
349
+ .pn-vlist-spacer { position: relative; width: 100%; }
350
+ .pn-vlist-row { position: absolute; left: 0; right: 0; overflow: hidden; }
351
+ .pn-vlist-row.pn-separator { border-bottom: 1px solid rgba(60, 60, 67, 0.29); }
352
+
353
+ /* ---- alert -------------------------------------------------------- */
354
+
355
+ .pn-alert-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,0.35); display: flex; align-items: center; justify-content: center; z-index: 50; }
356
+ .pn-alert-backdrop.pn-sheet { align-items: flex-end; padding: 8px; box-sizing: border-box; }
357
+ .pn-alert {
358
+ width: 270px; background: rgba(249, 249, 249, 0.97); border-radius: 14px; overflow: hidden;
359
+ text-align: center; font-size: 13px; color: #000; box-shadow: 0 10px 40px rgba(0,0,0,0.3);
360
+ }
361
+ .pn-dark .pn-alert { background: rgba(37, 37, 37, 0.97); color: #fff; }
362
+ .pn-alert.pn-sheet { width: 100%; border-radius: 13px; }
363
+ .pn-alert .pn-alert-body { padding: 18px 16px 14px; }
364
+ .pn-alert h2 { margin: 0 0 4px; font-size: 17px; font-weight: 600; }
365
+ .pn-alert p { margin: 0; }
366
+ .pn-alert .pn-alert-buttons { display: flex; border-top: 1px solid rgba(60,60,67,0.29); }
367
+ .pn-alert .pn-alert-buttons.pn-vertical { flex-direction: column; }
368
+ .pn-alert button {
369
+ flex: 1; min-height: 44px; border: 0; background: transparent; color: var(--pn-accent);
370
+ font: 17px var(--pn-font); cursor: pointer; border-right: 1px solid rgba(60,60,67,0.29);
371
+ }
372
+ .pn-alert .pn-vertical button { border-right: 0; border-bottom: 1px solid rgba(60,60,67,0.29); }
373
+ .pn-alert button:last-child { border-right: 0; border-bottom: 0; }
374
+ .pn-alert button.pn-cancel { font-weight: 600; }
375
+ .pn-alert button.pn-destructive { color: var(--pn-danger); }
376
+ .pn-alert button:hover { background: rgba(0,0,0,0.04); }
377
+
378
+ /* ---- connect / console / toasts -------------------------------------- */
379
+
380
+ .pn-connect {
381
+ position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
382
+ background: var(--pn-bg); z-index: 100;
383
+ }
384
+ .pn-connect-card { text-align: center; max-width: 420px; }
385
+ .pn-connect-card h1 { font-size: 20px; font-weight: 600; margin: 0 0 8px; }
386
+ .pn-connect-card code { font-family: var(--pn-mono); background: var(--pn-panel); padding: 1px 6px; border-radius: 4px; }
387
+ .pn-connect-card p { color: var(--pn-muted); margin: 0; }
388
+
389
+ .pn-console {
390
+ flex: 0 0 200px; display: flex; flex-direction: column;
391
+ background: var(--pn-panel); border-top: 1px solid var(--pn-border);
392
+ font: 12px/1.5 var(--pn-mono);
393
+ }
394
+ .pn-console-bar { display: flex; justify-content: space-between; align-items: center; padding: 4px 10px; border-bottom: 1px solid var(--pn-border); font-family: var(--pn-font); }
395
+ .pn-console-lines { flex: 1; overflow: auto; padding: 4px 10px; white-space: pre-wrap; }
396
+ .pn-console-lines .pn-line-error { color: var(--pn-danger); }
397
+ .pn-console-lines .pn-line-info { color: var(--pn-muted); }
398
+ .pn-console-lines .pn-line-ok { color: var(--pn-ok); }
399
+
400
+ .pn-toasts { position: fixed; left: 50%; bottom: 24px; transform: translateX(-50%); display: flex; flex-direction: column; gap: 6px; z-index: 200; pointer-events: none; }
401
+ .pn-toast {
402
+ background: rgba(28, 28, 30, 0.92); color: #fff; padding: 8px 14px; border-radius: 10px; font-size: 13px;
403
+ box-shadow: 0 6px 24px rgba(0,0,0,0.3); animation: pn-toast-in 160ms ease-out; max-width: 70vw;
404
+ }
405
+ .pn-toast.pn-toast-error { background: rgba(191, 26, 26, 0.95); white-space: pre-wrap; font-family: var(--pn-mono); font-size: 12px; text-align: left; pointer-events: auto; }
406
+ .pn-toast.pn-toast-ok { background: rgba(36, 138, 61, 0.95); }
407
+ @keyframes pn-toast-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
408
+
409
+ .pn-measure {
410
+ position: absolute; left: -100000px; top: 0;
411
+ visibility: hidden; pointer-events: none;
412
+ width: auto; height: auto;
413
+ font: 17px/1.25 var(--pn-font);
414
+ }
415
+ .pn-measure > * { position: static !important; left: auto !important; top: auto !important; width: auto !important; height: auto !important; display: inline-block; }