peachsim 0.1.1644 → 0.1.1653

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 (608) hide show
  1. package/README.md +12 -0
  2. package/cli/app-catalog.ts +1 -1
  3. package/cli/app-fonts.ts +11 -80
  4. package/cli/app-splash.ts +18 -12
  5. package/cli/bridge-flow-runner.ts +11 -7
  6. package/cli/cloud-client.ts +10 -13
  7. package/cli/command-registry.ts +13 -4
  8. package/cli/commands/box.ts +4 -4
  9. package/cli/commands/control.ts +93 -53
  10. package/cli/commands/coverage-parser.ts +67 -0
  11. package/cli/commands/coverage.ts +550 -0
  12. package/cli/commands/debug.ts +9 -18
  13. package/cli/commands/desktop.ts +19 -7
  14. package/cli/commands/device.ts +14 -9
  15. package/cli/commands/guest-host.ts +6 -10
  16. package/cli/commands/inspect/core.ts +81 -17
  17. package/cli/commands/inspect.ts +13 -8
  18. package/cli/commands/kotlin.ts +2 -2
  19. package/cli/commands/maestro-compare.ts +1 -1
  20. package/cli/commands/platform.ts +20 -11
  21. package/cli/commands/preview.ts +16 -18
  22. package/cli/commands/runtime.ts +3 -2
  23. package/cli/commands/screenshot-layers.ts +1 -1
  24. package/cli/commands/screenshot.ts +1 -1
  25. package/cli/commands/serve.ts +5 -1
  26. package/cli/commands/support.ts +4 -4
  27. package/cli/commands/three-mode.ts +22 -15
  28. package/cli/commands/upload.ts +44 -45
  29. package/cli/current-sim.ts +38 -0
  30. package/cli/desktop-companion.ts +36 -8
  31. package/cli/device-option.ts +1 -1
  32. package/cli/drivers/playwright.ts +1 -0
  33. package/cli/drivers/types.ts +4 -0
  34. package/cli/help-core.ts +1 -1
  35. package/cli/internal-child.ts +2 -1
  36. package/cli/main.ts +9 -3
  37. package/cli/outbound-endpoints.ts +11 -3
  38. package/cli/output-redaction.ts +39 -14
  39. package/cli/remote-simulators.ts +4 -1
  40. package/cli/scene-video.ts +5 -2
  41. package/cli/send-to-box.ts +7 -10
  42. package/cli/telemetry.ts +1 -1
  43. package/cli/ws-bridge.ts +8 -1
  44. package/detox/attempt-events.cjs +3 -1
  45. package/detox/attempt-events.d.cts +1 -1
  46. package/detox/expectations.ts +108 -99
  47. package/detox/frame-offset.d.mts +6 -0
  48. package/detox/frame-offset.mjs +35 -0
  49. package/detox/gestures.ts +6 -18
  50. package/detox/index.ts +169 -101
  51. package/detox/jest-preset.cjs +1 -3
  52. package/detox/jest-transform.cjs +4 -0
  53. package/detox/matchers.ts +3 -0
  54. package/detox/motion-change.cjs +46 -114
  55. package/detox/motion-change.d.cts +5 -27
  56. package/dist-lib/agent-daemon-client.cjs +1 -1
  57. package/dist-lib/agent-events.cjs +1 -1
  58. package/dist-lib/attached-projects.cjs +1 -1
  59. package/dist-lib/auth/shared-session.cjs +1 -1
  60. package/dist-lib/backend-origin.cjs +1 -1
  61. package/dist-lib/beta.cjs +1 -1
  62. package/dist-lib/beta.mjs +1 -1
  63. package/dist-lib/bridge-constants.cjs +1 -1
  64. package/dist-lib/bridge-contract-input.cjs +65 -1
  65. package/dist-lib/bridge-contract-input.mjs +63 -1
  66. package/dist-lib/bridge-contract.cjs +19 -1
  67. package/dist-lib/bridge-contract.mjs +17 -1
  68. package/dist-lib/bundle-channel.cjs +38091 -14846
  69. package/dist-lib/capture-contract.cjs +1 -1
  70. package/dist-lib/capture-contract.mjs +1 -1
  71. package/dist-lib/cloud-contract.cjs +1 -1
  72. package/dist-lib/cloud-contract.mjs +1 -1
  73. package/dist-lib/cloud-test-args.cjs +1 -1
  74. package/dist-lib/cloud-test-args.mjs +1 -1
  75. package/dist-lib/cloud.cjs +1 -1
  76. package/dist-lib/cloud.mjs +1 -1
  77. package/dist-lib/config.cjs +1 -1
  78. package/dist-lib/config.mjs +5 -3
  79. package/dist-lib/detox/index.cjs +1244 -4509
  80. package/dist-lib/detox/jest-preset.cjs +1 -3
  81. package/dist-lib/detox/jest-transform.cjs +4 -0
  82. package/dist-lib/dev-bundle-resolution.cjs +28 -24
  83. package/dist-lib/expo-swift-bundle.cjs +35049 -13125
  84. package/dist-lib/expo-swift-metadata.cjs +1 -1
  85. package/dist-lib/expo-swift-metadata.mjs +1 -1
  86. package/dist-lib/home-paths.cjs +1 -1
  87. package/dist-lib/host/bridge-host.cjs +45112 -63143
  88. package/dist-lib/host/fetch-proxy-handler.cjs +3544 -11
  89. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  90. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  91. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  92. package/dist-lib/host/websocket-proxy.cjs +1 -1
  93. package/dist-lib/index.cjs +1909 -2029
  94. package/dist-lib/jump-to-source-babel.cjs +1 -1
  95. package/dist-lib/jump-to-source-native.cjs +1 -1
  96. package/dist-lib/kotlin-host.cjs +2 -2
  97. package/dist-lib/menu.cjs +1 -1
  98. package/dist-lib/menu.mjs +1 -1
  99. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  100. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  101. package/dist-lib/metro-production-bundle.cjs +1 -1
  102. package/dist-lib/metro-production-bundle.mjs +1 -1
  103. package/dist-lib/metro.cjs +380 -522
  104. package/dist-lib/native-app-identity-project.cjs +39 -252
  105. package/dist-lib/native-app-identity-project.mjs +1174 -11
  106. package/dist-lib/native-app-identity.cjs +8 -3
  107. package/dist-lib/native-app-identity.mjs +8 -3
  108. package/dist-lib/native-firebase-metadata.cjs +1 -1
  109. package/dist-lib/native-firebase-metadata.mjs +1 -1
  110. package/dist-lib/plist.cjs +2 -244
  111. package/dist-lib/plist.mjs +1 -1
  112. package/dist-lib/profiles.cjs +1 -1
  113. package/dist-lib/public-brand.cjs +1 -1
  114. package/dist-lib/public-origins-lib-esm.json +290 -0
  115. package/dist-lib/public-origins-lib-static.json +1 -0
  116. package/dist-lib/public-origins-lib.json +1852 -0
  117. package/dist-lib/react-native-host-modules.cjs +1 -1
  118. package/dist-lib/react-native-host-modules.mjs +1 -1
  119. package/dist-lib/scripts/dev-server-scanner.cjs +14 -253
  120. package/dist-lib/sdk.cjs +83 -16
  121. package/dist-lib/sdk.mjs +81 -15
  122. package/dist-lib/skills.cjs +50546 -75098
  123. package/dist-lib/swift-compile.cjs +25897 -1070
  124. package/dist-lib/swift-compile.mjs +25866 -1033
  125. package/dist-lib/swift-package.cjs +79 -1
  126. package/dist-lib/swift-package.mjs +75 -1
  127. package/dist-lib/swift-submit.cjs +1 -1
  128. package/dist-lib/swift-submit.mjs +1 -1
  129. package/dist-lib/swift-toolchain.cjs +1 -1
  130. package/dist-lib/swift.cjs +1 -1
  131. package/dist-lib/vite-swift.cjs +34273 -12349
  132. package/dist-lib/vite.cjs +373 -298
  133. package/dist-lib/worklet-executable.cjs +1 -1
  134. package/dist-lib/worklet-executable.mjs +1 -1
  135. package/dist-types/packages/peach-compat/src/engine-config.d.ts +2 -0
  136. package/dist-types/packages/peach-compat/src/stubs/form-sheet-spring.d.ts +9 -0
  137. package/dist-types/packages/peach-compat/src/stubs/native-evaluation-lease.d.ts +47 -0
  138. package/dist-types/packages/peach-compat/src/stubs/native-seams/react-native-cookies.d.ts +113 -0
  139. package/dist-types/packages/peach-compat/src/stubs/native-seams/react-native-gesture-handler.d.ts +154 -0
  140. package/dist-types/packages/peach-compat/src/stubs/screen-transition-math.d.ts +756 -0
  141. package/dist-types/packages/peach-compat/src/stubs/transition-scalar.d.ts +25 -0
  142. package/dist-types/packages/peach-engine/src/billing/plans.d.ts +64 -0
  143. package/dist-types/packages/peach-engine/src/browser-page-target.d.ts +2 -0
  144. package/dist-types/packages/peach-engine/src/bundle-platform-url.d.ts +3 -0
  145. package/dist-types/packages/peach-engine/src/capture/browser-accessibility-host.d.ts +3 -0
  146. package/dist-types/packages/peach-engine/src/capture/browser-composite.d.ts +55 -0
  147. package/dist-types/packages/peach-engine/src/capture/browserAccessibilityContract.d.ts +27 -0
  148. package/dist-types/packages/peach-engine/src/capture/nativeScreenCaptureContract.d.ts +22 -0
  149. package/dist-types/packages/peach-engine/src/cli-companion.d.ts +36 -0
  150. package/dist-types/packages/peach-engine/src/components/native-ui/webview-frame-bridge.d.ts +34 -0
  151. package/dist-types/packages/peach-engine/src/config.d.ts +5 -0
  152. package/dist-types/packages/peach-engine/src/engine/android-stretch-effect.d.ts +57 -0
  153. package/dist-types/packages/peach-engine/src/engine/animated-driven-style.d.ts +47 -0
  154. package/dist-types/packages/peach-engine/src/engine/animated-value.d.ts +5 -0
  155. package/dist-types/packages/peach-engine/src/engine/animated.d.ts +195 -0
  156. package/dist-types/packages/peach-engine/src/engine/animation-clockContract.d.ts +15 -0
  157. package/dist-types/packages/peach-engine/src/engine/animation-graph.d.ts +148 -0
  158. package/dist-types/packages/peach-engine/src/engine/app-catalog-wire.d.ts +10 -0
  159. package/dist-types/packages/peach-engine/src/engine/app-font-registry.d.ts +87 -0
  160. package/dist-types/packages/peach-engine/src/engine/attributed-paragraph-paint.d.ts +7 -0
  161. package/dist-types/packages/peach-engine/src/engine/attributed-paragraph.d.ts +123 -0
  162. package/dist-types/packages/peach-engine/src/engine/audioContract.d.ts +16 -0
  163. package/dist-types/packages/peach-engine/src/engine/canvaskit-api.d.ts +93 -0
  164. package/dist-types/packages/peach-engine/src/engine/canvaskit-renderer.d.ts +216 -0
  165. package/dist-types/packages/peach-engine/src/engine/config-plugin-fonts.d.ts +40 -0
  166. package/dist-types/packages/peach-engine/src/engine/config-plugin-splash.d.ts +25 -0
  167. package/dist-types/packages/peach-engine/src/engine/cull-visibility.d.ts +44 -0
  168. package/dist-types/packages/peach-engine/src/engine/damage-rect.d.ts +19 -0
  169. package/dist-types/packages/peach-engine/src/engine/engine-resource.d.ts +6 -0
  170. package/dist-types/packages/peach-engine/src/engine/expo-manifest.d.ts +5 -0
  171. package/dist-types/packages/peach-engine/src/engine/fiber-debug-metadata.d.ts +30 -0
  172. package/dist-types/packages/peach-engine/src/engine/font-config.d.ts +139 -0
  173. package/dist-types/packages/peach-engine/src/engine/generated/sf-pro-font.d.ts +1 -0
  174. package/dist-types/packages/peach-engine/src/engine/glass-material.d.ts +31 -0
  175. package/dist-types/packages/peach-engine/src/engine/host-composite.d.ts +100 -0
  176. package/dist-types/packages/peach-engine/src/engine/hosted-semantics.d.ts +49 -0
  177. package/dist-types/packages/peach-engine/src/engine/image-audit.d.ts +70 -0
  178. package/dist-types/packages/peach-engine/src/engine/image-loader.d.ts +350 -0
  179. package/dist-types/packages/peach-engine/src/engine/inspect-info.d.ts +27 -0
  180. package/dist-types/packages/peach-engine/src/engine/inspect-outline.d.ts +14 -0
  181. package/dist-types/packages/peach-engine/src/engine/inspect-visibility.d.ts +33 -0
  182. package/dist-types/packages/peach-engine/src/engine/ios-fast-scroll.d.ts +16 -0
  183. package/dist-types/packages/peach-engine/src/engine/layout-sab.d.ts +43 -0
  184. package/dist-types/packages/peach-engine/src/engine/liquid-glass-rect.d.ts +23 -0
  185. package/dist-types/packages/peach-engine/src/engine/liquid-glass-shaders.d.ts +9 -0
  186. package/dist-types/packages/peach-engine/src/engine/liquid-glass.d.ts +283 -0
  187. package/dist-types/packages/peach-engine/src/engine/live-object-counts.d.ts +6 -0
  188. package/dist-types/packages/peach-engine/src/engine/lottie-runtime.d.ts +32 -0
  189. package/dist-types/packages/peach-engine/src/engine/lottie-types.d.ts +138 -0
  190. package/dist-types/packages/peach-engine/src/engine/memory-counts.d.ts +27 -0
  191. package/dist-types/packages/peach-engine/src/engine/metalDirectContract.d.ts +108 -0
  192. package/dist-types/packages/peach-engine/src/engine/metalShaderContract.d.ts +217 -0
  193. package/dist-types/packages/peach-engine/src/engine/native-animation-driver.d.ts +112 -0
  194. package/dist-types/packages/peach-engine/src/engine/native-animation-graph.d.ts +62 -0
  195. package/dist-types/packages/peach-engine/src/engine/native-layout.d.ts +133 -0
  196. package/dist-types/packages/peach-engine/src/engine/native-resources.d.ts +26 -0
  197. package/dist-types/packages/peach-engine/src/engine/nativeReanimatedContract.d.ts +25 -0
  198. package/dist-types/packages/peach-engine/src/engine/nativeReplayContract.d.ts +64 -0
  199. package/dist-types/packages/peach-engine/src/engine/node.d.ts +589 -0
  200. package/dist-types/packages/peach-engine/src/engine/paint-boundary-types.d.ts +112 -0
  201. package/dist-types/packages/peach-engine/src/engine/paint-boundary.d.ts +57 -0
  202. package/dist-types/packages/peach-engine/src/engine/portalContract.d.ts +21 -0
  203. package/dist-types/packages/peach-engine/src/engine/portals.d.ts +20 -0
  204. package/dist-types/packages/peach-engine/src/engine/render-damage.d.ts +107 -0
  205. package/dist-types/packages/peach-engine/src/engine/riveContract.d.ts +420 -0
  206. package/dist-types/packages/peach-engine/src/engine/rn-spring.d.ts +51 -0
  207. package/dist-types/packages/peach-engine/src/engine/scene-table.d.ts +379 -0
  208. package/dist-types/packages/peach-engine/src/engine/scroll-momentum-math.d.ts +152 -0
  209. package/dist-types/packages/peach-engine/src/engine/scroll-pan-contacts.d.ts +10 -0
  210. package/dist-types/packages/peach-engine/src/engine/scroll-platform.d.ts +75 -0
  211. package/dist-types/packages/peach-engine/src/engine/scroll-range.d.ts +14 -0
  212. package/dist-types/packages/peach-engine/src/engine/scroll-velocity.d.ts +14 -0
  213. package/dist-types/packages/peach-engine/src/engine/scroll.d.ts +320 -0
  214. package/dist-types/packages/peach-engine/src/engine/signal.d.ts +7 -0
  215. package/dist-types/packages/peach-engine/src/engine/snapshot-cache-policy.d.ts +6 -0
  216. package/dist-types/packages/peach-engine/src/engine/svg-geometry.d.ts +41 -0
  217. package/dist-types/packages/peach-engine/src/engine/text-attachment-paragraphs.d.ts +10 -0
  218. package/dist-types/packages/peach-engine/src/engine/text-decoration.d.ts +11 -0
  219. package/dist-types/packages/peach-engine/src/engine/text-line-break.d.ts +22 -0
  220. package/dist-types/packages/peach-engine/src/engine/text-paint-receipt.d.ts +98 -0
  221. package/dist-types/packages/peach-engine/src/engine/text-paragraph.d.ts +11 -0
  222. package/dist-types/packages/peach-engine/src/engine/text-paragraphContract.d.ts +34 -0
  223. package/dist-types/packages/peach-engine/src/engine/text-transform.d.ts +1 -0
  224. package/dist-types/packages/peach-engine/src/engine/types.d.ts +657 -0
  225. package/dist-types/packages/peach-engine/src/engine/visible-frame.d.ts +54 -0
  226. package/dist-types/packages/peach-engine/src/engine/webrtcContract.d.ts +74 -0
  227. package/dist-types/packages/peach-engine/src/graphite-stats-fields.d.ts +184 -0
  228. package/dist-types/packages/peach-engine/src/guest-import-meta.d.ts +12 -0
  229. package/dist-types/packages/peach-engine/src/guest-module-overrides.d.ts +7 -0
  230. package/dist-types/packages/peach-engine/src/ios/app-card-types.d.ts +7 -0
  231. package/dist-types/packages/peach-engine/src/ios/apps/canvas-map-data.d.ts +177 -0
  232. package/dist-types/packages/peach-engine/src/ios/aux-home-scene.d.ts +54 -0
  233. package/dist-types/packages/peach-engine/src/ios/chrome-metrics.d.ts +47 -0
  234. package/dist-types/packages/peach-engine/src/ios/constants.d.ts +21 -0
  235. package/dist-types/packages/peach-engine/src/ios/duo-housing.d.ts +37 -0
  236. package/dist-types/packages/peach-engine/src/ios/home/types.d.ts +29 -0
  237. package/dist-types/packages/peach-engine/src/ios/home-app-catalog.d.ts +43 -0
  238. package/dist-types/packages/peach-engine/src/ios/photo-store.d.ts +73 -0
  239. package/dist-types/packages/peach-engine/src/ios/photoLibraryContract.d.ts +166 -0
  240. package/dist-types/packages/peach-engine/src/ios/shell-controller-types.d.ts +21 -0
  241. package/dist-types/packages/peach-engine/src/ios/shell-transition-debug.d.ts +18 -0
  242. package/dist-types/packages/peach-engine/src/metro-asset-path.d.ts +21 -0
  243. package/dist-types/packages/peach-engine/src/metro-fingerprint-registry-client.d.ts +11 -0
  244. package/dist-types/packages/peach-engine/src/metro-fingerprint.d.ts +38 -0
  245. package/dist-types/packages/peach-engine/src/native-preview-bundle.d.ts +44 -0
  246. package/dist-types/packages/peach-engine/src/observability/types.d.ts +74 -0
  247. package/dist-types/packages/peach-engine/src/peach-warm-manifest.d.ts +32 -0
  248. package/dist-types/packages/peach-engine/src/permissions/app-settings-client.d.ts +25 -0
  249. package/dist-types/packages/peach-engine/src/permissions/system-permission-types.d.ts +20 -0
  250. package/dist-types/packages/peach-engine/src/platform/android-back-panel.d.ts +131 -0
  251. package/dist-types/packages/peach-engine/src/platform/android-gesture-exclusion.d.ts +28 -0
  252. package/dist-types/packages/peach-engine/src/platform/android-predictive-back.d.ts +33 -0
  253. package/dist-types/packages/peach-engine/src/platform/system-bars-state.d.ts +14 -0
  254. package/dist-types/packages/peach-engine/src/playwright-sim-host.d.ts +1 -0
  255. package/dist-types/packages/peach-engine/src/preview/bundle-layout.d.ts +8 -0
  256. package/dist-types/packages/peach-engine/src/preview/bundle-variantContract.d.ts +24 -0
  257. package/dist-types/packages/peach-engine/src/preview/capture-bundle.d.ts +26 -0
  258. package/dist-types/packages/peach-engine/src/preview/compress-node.d.ts +2 -0
  259. package/dist-types/packages/peach-engine/src/preview/compress.d.ts +2 -0
  260. package/dist-types/packages/peach-engine/src/preview/presigned-upload.d.ts +60 -0
  261. package/dist-types/packages/peach-engine/src/preview/trace.d.ts +144 -0
  262. package/dist-types/packages/peach-engine/src/preview/upload-protocol.d.ts +152 -0
  263. package/dist-types/packages/peach-engine/src/profiler/animation-recording-loader.d.ts +1 -0
  264. package/dist-types/packages/peach-engine/src/profiler/profile-trace.d.ts +4 -0
  265. package/dist-types/packages/peach-engine/src/react-bridge.d.ts +3 -0
  266. package/dist-types/packages/peach-engine/src/react-native/AppState.d.ts +45 -0
  267. package/dist-types/packages/peach-engine/src/react-native/Appearance.d.ts +34 -0
  268. package/dist-types/packages/peach-engine/src/react-native/framework-colors-data.d.ts +2 -0
  269. package/dist-types/packages/peach-engine/src/react-native/host-services.d.ts +42 -0
  270. package/dist-types/packages/peach-engine/src/react-native/layout-animation.d.ts +22 -0
  271. package/dist-types/packages/peach-engine/src/react-native/platform-colors.d.ts +17 -0
  272. package/dist-types/packages/peach-engine/src/remote-stream/client-config.d.ts +10 -0
  273. package/dist-types/packages/peach-engine/src/remote-stream/cloud-display.d.ts +58 -0
  274. package/dist-types/packages/peach-engine/src/remote-stream/scene-recording.d.ts +45 -0
  275. package/dist-types/packages/peach-engine/src/render-worker/animated-drive-output.d.ts +35 -0
  276. package/dist-types/packages/peach-engine/src/render-worker/app-load.d.ts +16 -0
  277. package/dist-types/packages/peach-engine/src/render-worker/aux-surface-types.d.ts +2 -0
  278. package/dist-types/packages/peach-engine/src/render-worker/canvaskit-shared.d.ts +42 -0
  279. package/dist-types/packages/peach-engine/src/render-worker/canvaskit-webgpu.d.ts +434 -0
  280. package/dist-types/packages/peach-engine/src/render-worker/canvaskit-worker-init.d.ts +12 -0
  281. package/dist-types/packages/peach-engine/src/render-worker/compositor-backend.d.ts +31 -0
  282. package/dist-types/packages/peach-engine/src/render-worker/compositor-gpu.d.ts +202 -0
  283. package/dist-types/packages/peach-engine/src/render-worker/compositor-protocol.d.ts +1945 -0
  284. package/dist-types/packages/peach-engine/src/render-worker/compositor-runtime/scroll-drag-resample.d.ts +44 -0
  285. package/dist-types/packages/peach-engine/src/render-worker/css-keyframes-drive.d.ts +36 -0
  286. package/dist-types/packages/peach-engine/src/render-worker/edit-menu-geometry.d.ts +8 -0
  287. package/dist-types/packages/peach-engine/src/render-worker/engine-resource-relay.d.ts +21 -0
  288. package/dist-types/packages/peach-engine/src/render-worker/expo-widgetContract.d.ts +16 -0
  289. package/dist-types/packages/peach-engine/src/render-worker/gesture-seam-protocol.d.ts +152 -0
  290. package/dist-types/packages/peach-engine/src/render-worker/graph-linked-value.d.ts +29 -0
  291. package/dist-types/packages/peach-engine/src/render-worker/graphite-pipeline-compiler-contract.d.ts +49 -0
  292. package/dist-types/packages/peach-engine/src/render-worker/graphite-pipeline-compiler.d.ts +12 -0
  293. package/dist-types/packages/peach-engine/src/render-worker/host-service-protocol.d.ts +756 -0
  294. package/dist-types/packages/peach-engine/src/render-worker/image-lifecycle-event.d.ts +22 -0
  295. package/dist-types/packages/peach-engine/src/render-worker/image-pixel-contract.d.ts +48 -0
  296. package/dist-types/packages/peach-engine/src/render-worker/live-frame-mirror.d.ts +34 -0
  297. package/dist-types/packages/peach-engine/src/render-worker/map-command-channel.d.ts +189 -0
  298. package/dist-types/packages/peach-engine/src/render-worker/mapNativeContract.d.ts +101 -0
  299. package/dist-types/packages/peach-engine/src/render-worker/native-dynamic-synchronizable.d.ts +22 -0
  300. package/dist-types/packages/peach-engine/src/render-worker/native-menu-gesture.d.ts +9 -0
  301. package/dist-types/packages/peach-engine/src/render-worker/native-ui-commandContract.d.ts +23 -0
  302. package/dist-types/packages/peach-engine/src/render-worker/native-ui-protocol.d.ts +1087 -0
  303. package/dist-types/packages/peach-engine/src/render-worker/native-widgetContract.d.ts +100 -0
  304. package/dist-types/packages/peach-engine/src/render-worker/nativeAnimMirrorContract.d.ts +174 -0
  305. package/dist-types/packages/peach-engine/src/render-worker/nativeSyncReplyContract.d.ts +11 -0
  306. package/dist-types/packages/peach-engine/src/render-worker/one-native-contentContract.d.ts +54 -0
  307. package/dist-types/packages/peach-engine/src/render-worker/pointerSampleContract.d.ts +14 -0
  308. package/dist-types/packages/peach-engine/src/render-worker/protocol.d.ts +880 -0
  309. package/dist-types/packages/peach-engine/src/render-worker/reanimated-css-contract.d.ts +63 -0
  310. package/dist-types/packages/peach-engine/src/render-worker/reanimated-readiness.d.ts +29 -0
  311. package/dist-types/packages/peach-engine/src/render-worker/resilient-frame-clock.d.ts +22 -0
  312. package/dist-types/packages/peach-engine/src/render-worker/retained-app-load.d.ts +20 -0
  313. package/dist-types/packages/peach-engine/src/render-worker/screen-edge-swipe-commit-protocol.d.ts +1 -0
  314. package/dist-types/packages/peach-engine/src/render-worker/screen-form-sheet-commit-protocol.d.ts +26 -0
  315. package/dist-types/packages/peach-engine/src/render-worker/scroll-mirror-tenant.d.ts +37 -0
  316. package/dist-types/packages/peach-engine/src/render-worker/scroll-mirror.d.ts +164 -0
  317. package/dist-types/packages/peach-engine/src/render-worker/shell-event-registry.d.ts +119 -0
  318. package/dist-types/packages/peach-engine/src/render-worker/shell-gesture-regions.d.ts +41 -0
  319. package/dist-types/packages/peach-engine/src/render-worker/shell-protocol.d.ts +603 -0
  320. package/dist-types/packages/peach-engine/src/render-worker/shell-scene-schema.d.ts +101 -0
  321. package/dist-types/packages/peach-engine/src/render-worker/shell-tree-inline-sources.d.ts +13 -0
  322. package/dist-types/packages/peach-engine/src/render-worker/shell-tree-wire.d.ts +87 -0
  323. package/dist-types/packages/peach-engine/src/render-worker/test-bridge-protocol.d.ts +47 -0
  324. package/dist-types/packages/peach-engine/src/render-worker/text-inputContract.d.ts +93 -0
  325. package/dist-types/packages/peach-engine/src/render-worker/tree-sync-port.d.ts +102 -0
  326. package/dist-types/packages/peach-engine/src/render-worker/webgpu-frame-transaction.d.ts +292 -0
  327. package/dist-types/packages/peach-engine/src/render-worker/webgpu-readback-scheduler.d.ts +107 -0
  328. package/dist-types/packages/peach-engine/src/render-worker/webview-capture-protocol.d.ts +16 -0
  329. package/dist-types/packages/peach-engine/src/render-worker/worker-input-runtime.d.ts +211 -0
  330. package/dist-types/packages/peach-engine/src/render-worker/worker-storage.d.ts +33 -0
  331. package/dist-types/packages/peach-engine/src/render-worker/worklet-runtime.d.ts +987 -0
  332. package/dist-types/packages/peach-engine/src/render-worker/worklet-sab.d.ts +24 -0
  333. package/dist-types/packages/peach-engine/src/rolldown-bundle-inventory.d.ts +84 -0
  334. package/dist-types/packages/peach-engine/src/rolldown-production-fingerprint.d.ts +31 -0
  335. package/dist-types/packages/peach-engine/src/screenshots/timeline-assets.d.ts +10 -0
  336. package/dist-types/packages/peach-engine/src/screenshots/tokens.d.ts +9 -0
  337. package/dist-types/packages/peach-engine/src/settings/devices.d.ts +70 -0
  338. package/dist-types/packages/peach-engine/src/settings/duo-fold-bus.d.ts +87 -0
  339. package/dist-types/packages/peach-engine/src/settings/interface-rotation.d.ts +30 -0
  340. package/dist-types/packages/peach-engine/src/settings/react-native-configuration.d.ts +12 -0
  341. package/dist-types/packages/peach-engine/src/settings/scene-geometryContract.d.ts +40 -0
  342. package/dist-types/packages/peach-engine/src/settings/store.d.ts +37 -0
  343. package/dist-types/packages/peach-engine/src/shell-events.d.ts +203 -0
  344. package/dist-types/packages/peach-engine/src/shell-intent.d.ts +68 -0
  345. package/dist-types/packages/peach-engine/src/sootsim-event.d.ts +35 -0
  346. package/dist-types/packages/peach-engine/src/top-overlay-state.d.ts +5 -0
  347. package/dist-types/packages/peach-engine/src/web-authentication-automation-host.d.ts +2 -0
  348. package/dist-types/packages/peach-engine/src/webAuthenticationContract.d.ts +34 -0
  349. package/dist-types/packages/peach-engine/src/webview-automation-host.d.ts +180 -0
  350. package/dist-types/packages/peach-engine/src/wireframe-mode.d.ts +16 -0
  351. package/dist-types/packages/peach-globals/src/frameBreakdownContract.d.ts +16 -0
  352. package/dist-types/packages/peach-globals/src/index.d.ts +3311 -0
  353. package/dist-types/packages/peach-globals/src/nativeSurfaceContract.d.ts +76 -0
  354. package/dist-types/packages/peach-globals/src/pointerSourceEventContract.d.ts +8 -0
  355. package/dist-types/packages/peach-globals/src/profileTrace.d.ts +11 -0
  356. package/dist-types/packages/peach-globals/src/profilerContract.d.ts +223 -0
  357. package/dist-types/packages/peach-kit/src/capabilities.d.ts +721 -0
  358. package/dist-types/packages/peach-kit/src/internal.d.ts +4 -0
  359. package/dist-types/packages/peach-kit/src/materials/types.d.ts +27 -0
  360. package/dist-types/packages/peach-kit/src/materials/uikit-blur-material.d.ts +14 -0
  361. package/dist-types/packages/peach-kit/src/navigation-types.d.ts +11 -0
  362. package/dist-types/packages/peach-kit/src/react-bridge.d.ts +53 -0
  363. package/dist-types/packages/peach-kit/src/runtime.d.ts +26 -0
  364. package/dist-types/packages/peach-kit/src/ui/hosting-safe-area.d.ts +24 -0
  365. package/dist-types/packages/peach-kit/src/ui/popover-placement.d.ts +53 -0
  366. package/dist-types/packages/peach-kit/src/ui/presentationContract.d.ts +17 -0
  367. package/kotlin/ComposeSources/PeachComposeHost.kt +1 -1
  368. package/kotlin/JniSources/com/facebook/jni/HybridData.kt +0 -2
  369. package/kotlin/JniSources/dev/peach/jni/NativeBindings.kt +0 -2
  370. package/kotlin/JniTransportSources/dev/peach/jni/integration/JniTransport.kt +0 -2
  371. package/kotlin/README.md +6 -0
  372. package/package.json +22 -2
  373. package/runtime-companion.json +1 -0
  374. package/skills/contrast/SKILL.md +1 -0
  375. package/src/assetCatalogContract.ts +21 -0
  376. package/src/bridge-contract-input.ts +84 -0
  377. package/src/bridge-contract.ts +35 -3
  378. package/src/browser-launch-policy.ts +1 -0
  379. package/src/bundle-channel.mjs +4 -2
  380. package/src/cli-runtime.ts +55 -0
  381. package/src/crash-fingerprint.ts +26 -0
  382. package/src/dev-bundle-resolution.ts +50 -23
  383. package/src/device-catalog.ts +1159 -0
  384. package/src/host/bridge-host.ts +3 -26
  385. package/src/host/browser-pointer.ts +71 -0
  386. package/src/host/dev-server-package-versions.ts +23 -0
  387. package/src/host/fetch-proxy-handler.ts +17 -4
  388. package/src/installed-package-versions.ts +142 -38
  389. package/src/kotlin-host.ts +1 -1
  390. package/src/metro-plugin.ts +4 -4
  391. package/src/metro-project-root.ts +68 -0
  392. package/src/nitro-adapter.lock.json +26 -0
  393. package/src/nitro-adapter.ts +103 -0
  394. package/src/nitro-bundle.ts +24 -10
  395. package/src/nitro-compile.ts +33 -51
  396. package/src/nitro-source.ts +177 -96
  397. package/src/nitroAdapterContract.ts +217 -0
  398. package/src/nitroContract.ts +24 -11
  399. package/src/process-group.ts +41 -34
  400. package/src/react-bridge-importers.ts +28 -0
  401. package/src/reactNativeConfigurationContract.ts +36 -0
  402. package/src/runtime-assets.ts +7 -2
  403. package/src/runtime-delivery.ts +2 -0
  404. package/src/runtimePlatformContract.ts +70 -0
  405. package/src/screenshots/frame-compose.ts +42 -43
  406. package/src/screenshots/org-deck.ts +9 -4
  407. package/src/screenshots/preset-names.ts +29 -0
  408. package/src/screenshots/registry.ts +5 -5
  409. package/src/screenshots/schema.ts +1 -1
  410. package/src/screenshots/screenshotContract.ts +971 -0
  411. package/src/settings-flags.ts +107 -0
  412. package/src/settingsContract.ts +609 -0
  413. package/src/storageSnapshotContract.ts +344 -0
  414. package/src/stub-pattern-matcher.ts +550 -0
  415. package/src/swift-compile.ts +908 -40
  416. package/src/swift-compiler-digest.ts +13 -1
  417. package/src/swift-distribution.lock.json +49 -22
  418. package/src/swift-host.ts +167 -52
  419. package/src/swift-objc-compile.ts +54 -24
  420. package/src/swift-objc-export.ts +532 -0
  421. package/src/swift-objc-import.ts +769 -0
  422. package/src/swift-objc-metadata.ts +285 -10
  423. package/src/swift-objc-sdk.ts +13970 -158
  424. package/src/swift-objc-standin.ts +137 -1
  425. package/src/swift-package.ts +94 -0
  426. package/src/swift-packages.ts +5 -5
  427. package/src/swift-submit.ts +6 -0
  428. package/src/swiftContract.ts +99 -0
  429. package/src/target-matcher.ts +6 -1
  430. package/src/vite-plugin.ts +14 -40
  431. package/src/worker-system-chunks.ts +1 -1
  432. package/src/workerChunkContract.ts +5 -0
  433. package/src/worklets-babel.ts +24 -5
  434. package/src/xcode-project.ts +36 -7
  435. package/src/xcode-target-members.ts +10 -3
  436. package/cli/drivers/playwright-sim-host.ts +0 -825
  437. package/kotlin/fixtures/counter/Counter.d.kt.ts +0 -17
  438. package/kotlin/fixtures/counter/Counter.kt +0 -51
  439. package/kotlin/fixtures/counter/CounterApp.native.tsx +0 -61
  440. package/kotlin/fixtures/counter/CounterApp.tsx +0 -3
  441. package/kotlin/fixtures/counter/CounterScreen.d.kt.ts +0 -8
  442. package/kotlin/fixtures/counter/CounterScreen.kt +0 -56
  443. package/kotlin/fixtures/counter/app/_layout.tsx +0 -4
  444. package/kotlin/fixtures/counter/app/index+spa.tsx +0 -1
  445. package/kotlin/fixtures/counter/app/routes.d.ts +0 -18
  446. package/kotlin/fixtures/counter/package.json +0 -20
  447. package/kotlin/fixtures/counter/tsconfig.json +0 -19
  448. package/kotlin/fixtures/counter/vite.config.ts +0 -20
  449. package/kotlin/fixtures/headless-counter/Headless.kt +0 -234
  450. package/kotlin/fixtures/import-animation/Animation.d.kt.ts +0 -7
  451. package/kotlin/fixtures/import-animation/Animation.kt +0 -80
  452. package/kotlin/fixtures/import-animation/ImportAnimation.native.tsx +0 -13
  453. package/kotlin/fixtures/import-animation/README.md +0 -24
  454. package/kotlin/fixtures/import-animation/app/_layout.tsx +0 -4
  455. package/kotlin/fixtures/import-animation/app/index+spa.tsx +0 -1
  456. package/kotlin/fixtures/import-animation/app/routes.d.ts +0 -18
  457. package/kotlin/fixtures/import-animation/package.json +0 -23
  458. package/kotlin/fixtures/import-animation/tsconfig.json +0 -20
  459. package/kotlin/fixtures/import-animation/vite.config.ts +0 -20
  460. package/kotlin/fixtures/import-drawing/Drawing.d.kt.ts +0 -7
  461. package/kotlin/fixtures/import-drawing/Drawing.kt +0 -101
  462. package/kotlin/fixtures/import-drawing/ImportDrawing.native.tsx +0 -18
  463. package/kotlin/fixtures/import-drawing/README.md +0 -34
  464. package/kotlin/fixtures/import-drawing/app/_layout.tsx +0 -4
  465. package/kotlin/fixtures/import-drawing/app/index+spa.tsx +0 -1
  466. package/kotlin/fixtures/import-drawing/package.json +0 -23
  467. package/kotlin/fixtures/import-drawing/tsconfig.json +0 -20
  468. package/kotlin/fixtures/import-drawing/vite.config.ts +0 -20
  469. package/kotlin/fixtures/import-editor/Editor.d.kt.ts +0 -7
  470. package/kotlin/fixtures/import-editor/Editor.kt +0 -59
  471. package/kotlin/fixtures/import-editor/ImportEditor.native.tsx +0 -23
  472. package/kotlin/fixtures/import-editor/README.md +0 -27
  473. package/kotlin/fixtures/import-editor/app/_layout.tsx +0 -4
  474. package/kotlin/fixtures/import-editor/app/index+spa.tsx +0 -1
  475. package/kotlin/fixtures/import-editor/package.json +0 -23
  476. package/kotlin/fixtures/import-editor/tsconfig.json +0 -20
  477. package/kotlin/fixtures/import-editor/vite.config.ts +0 -20
  478. package/kotlin/fixtures/import-effects/Effects.d.kt.ts +0 -7
  479. package/kotlin/fixtures/import-effects/Effects.kt +0 -87
  480. package/kotlin/fixtures/import-effects/ImportEffects.native.tsx +0 -13
  481. package/kotlin/fixtures/import-effects/README.md +0 -19
  482. package/kotlin/fixtures/import-effects/app/_layout.tsx +0 -4
  483. package/kotlin/fixtures/import-effects/app/index+spa.tsx +0 -1
  484. package/kotlin/fixtures/import-effects/package.json +0 -23
  485. package/kotlin/fixtures/import-effects/tsconfig.json +0 -20
  486. package/kotlin/fixtures/import-effects/vite.config.ts +0 -20
  487. package/kotlin/fixtures/import-layout/ImportLayout.native.tsx +0 -13
  488. package/kotlin/fixtures/import-layout/Layout.d.kt.ts +0 -7
  489. package/kotlin/fixtures/import-layout/Layout.kt +0 -72
  490. package/kotlin/fixtures/import-layout/README.md +0 -24
  491. package/kotlin/fixtures/import-layout/app/_layout.tsx +0 -4
  492. package/kotlin/fixtures/import-layout/app/index+spa.tsx +0 -1
  493. package/kotlin/fixtures/import-layout/package.json +0 -23
  494. package/kotlin/fixtures/import-layout/tsconfig.json +0 -20
  495. package/kotlin/fixtures/import-layout/vite.config.ts +0 -20
  496. package/kotlin/fixtures/import-navigation/ImportNavigation.native.tsx +0 -18
  497. package/kotlin/fixtures/import-navigation/Navigation.d.kt.ts +0 -7
  498. package/kotlin/fixtures/import-navigation/Navigation.kt +0 -104
  499. package/kotlin/fixtures/import-navigation/README.md +0 -31
  500. package/kotlin/fixtures/import-navigation/app/_layout.tsx +0 -4
  501. package/kotlin/fixtures/import-navigation/app/index+spa.tsx +0 -1
  502. package/kotlin/fixtures/import-navigation/package.json +0 -23
  503. package/kotlin/fixtures/import-navigation/tsconfig.json +0 -20
  504. package/kotlin/fixtures/import-navigation/vite.config.ts +0 -20
  505. package/kotlin/fixtures/import-overlays/ImportOverlays.native.tsx +0 -29
  506. package/kotlin/fixtures/import-overlays/Overlays.d.kt.ts +0 -7
  507. package/kotlin/fixtures/import-overlays/Overlays.kt +0 -93
  508. package/kotlin/fixtures/import-overlays/README.md +0 -34
  509. package/kotlin/fixtures/import-overlays/app/_layout.tsx +0 -4
  510. package/kotlin/fixtures/import-overlays/app/index+spa.tsx +0 -1
  511. package/kotlin/fixtures/import-overlays/package.json +0 -23
  512. package/kotlin/fixtures/import-overlays/tsconfig.json +0 -20
  513. package/kotlin/fixtures/import-overlays/vite.config.ts +0 -20
  514. package/kotlin/fixtures/import-resources/ImportResources.native.tsx +0 -18
  515. package/kotlin/fixtures/import-resources/README.md +0 -26
  516. package/kotlin/fixtures/import-resources/Resources.d.kt.ts +0 -6
  517. package/kotlin/fixtures/import-resources/Resources.kt +0 -72
  518. package/kotlin/fixtures/import-resources/app/_layout.tsx +0 -4
  519. package/kotlin/fixtures/import-resources/app/index+spa.tsx +0 -1
  520. package/kotlin/fixtures/import-resources/package.json +0 -23
  521. package/kotlin/fixtures/import-resources/tsconfig.json +0 -20
  522. package/kotlin/fixtures/import-resources/vite.config.ts +0 -20
  523. package/kotlin/fixtures/import-scroll/ImportNested.native.tsx +0 -10
  524. package/kotlin/fixtures/import-scroll/ImportScroll.native.tsx +0 -13
  525. package/kotlin/fixtures/import-scroll/Nested.d.kt.ts +0 -4
  526. package/kotlin/fixtures/import-scroll/Nested.kt +0 -64
  527. package/kotlin/fixtures/import-scroll/README.md +0 -38
  528. package/kotlin/fixtures/import-scroll/Scroll.d.kt.ts +0 -7
  529. package/kotlin/fixtures/import-scroll/Scroll.kt +0 -91
  530. package/kotlin/fixtures/import-scroll/app/_layout.tsx +0 -4
  531. package/kotlin/fixtures/import-scroll/app/index+spa.tsx +0 -1
  532. package/kotlin/fixtures/import-scroll/app/nested+spa.tsx +0 -1
  533. package/kotlin/fixtures/import-scroll/package.json +0 -23
  534. package/kotlin/fixtures/import-scroll/tsconfig.json +0 -20
  535. package/kotlin/fixtures/import-scroll/vite.config.ts +0 -20
  536. package/kotlin/fixtures/import-selection/ImportSelection.native.tsx +0 -44
  537. package/kotlin/fixtures/import-selection/README.md +0 -32
  538. package/kotlin/fixtures/import-selection/Selection.d.kt.ts +0 -8
  539. package/kotlin/fixtures/import-selection/Selection.kt +0 -78
  540. package/kotlin/fixtures/import-selection/app/_layout.tsx +0 -4
  541. package/kotlin/fixtures/import-selection/app/index+spa.tsx +0 -1
  542. package/kotlin/fixtures/import-selection/package.json +0 -23
  543. package/kotlin/fixtures/import-selection/tsconfig.json +0 -20
  544. package/kotlin/fixtures/import-selection/vite.config.ts +0 -20
  545. package/kotlin/fixtures/import-surfaces/ImportSurfaces.native.tsx +0 -13
  546. package/kotlin/fixtures/import-surfaces/README.md +0 -22
  547. package/kotlin/fixtures/import-surfaces/Surfaces.d.kt.ts +0 -7
  548. package/kotlin/fixtures/import-surfaces/Surfaces.kt +0 -64
  549. package/kotlin/fixtures/import-surfaces/app/_layout.tsx +0 -4
  550. package/kotlin/fixtures/import-surfaces/app/index+spa.tsx +0 -1
  551. package/kotlin/fixtures/import-surfaces/package.json +0 -23
  552. package/kotlin/fixtures/import-surfaces/tsconfig.json +0 -20
  553. package/kotlin/fixtures/import-surfaces/vite.config.ts +0 -20
  554. package/kotlin/fixtures/import-values/ImportValues.native.tsx +0 -61
  555. package/kotlin/fixtures/import-values/README.md +0 -28
  556. package/kotlin/fixtures/import-values/Values.d.kt.ts +0 -15
  557. package/kotlin/fixtures/import-values/Values.kt +0 -84
  558. package/kotlin/fixtures/import-values/app/_layout.tsx +0 -4
  559. package/kotlin/fixtures/import-values/app/index+spa.tsx +0 -1
  560. package/kotlin/fixtures/import-values/package.json +0 -23
  561. package/kotlin/fixtures/import-values/tsconfig.json +0 -20
  562. package/kotlin/fixtures/import-values/vite.config.ts +0 -20
  563. package/kotlin/fixtures/kotlin-app/app/build.gradle.kts +0 -30
  564. package/kotlin/fixtures/kotlin-app/app/src/main/AndroidManifest.xml +0 -13
  565. package/kotlin/fixtures/kotlin-app/app/src/main/java/dev/contrast/kotlinapp/MainActivity.kt +0 -60
  566. package/kotlin/fixtures/kotlin-app/app/src/main/java/dev/contrast/kotlinapp/ProbeApplication.kt +0 -18
  567. package/kotlin/fixtures/kotlin-app/build.gradle.kts +0 -5
  568. package/kotlin/fixtures/kotlin-app/gradle.properties +0 -4
  569. package/kotlin/fixtures/kotlin-app/settings.gradle.kts +0 -4
  570. package/kotlin/fixtures/kotlin-app-variants/Anim.kt +0 -62
  571. package/kotlin/fixtures/kotlin-app-variants/BarBehavior.kt +0 -38
  572. package/kotlin/fixtures/kotlin-app-variants/BarVisibility.kt +0 -36
  573. package/kotlin/fixtures/kotlin-app-variants/Bitmaps.kt +0 -50
  574. package/kotlin/fixtures/kotlin-app-variants/Browse.kt +0 -73
  575. package/kotlin/fixtures/kotlin-app-variants/Colors.kt +0 -41
  576. package/kotlin/fixtures/kotlin-app-variants/Controls.kt +0 -62
  577. package/kotlin/fixtures/kotlin-app-variants/Drag.kt +0 -56
  578. package/kotlin/fixtures/kotlin-app-variants/Draw.kt +0 -74
  579. package/kotlin/fixtures/kotlin-app-variants/Drawables.kt +0 -53
  580. package/kotlin/fixtures/kotlin-app-variants/Focus.kt +0 -62
  581. package/kotlin/fixtures/kotlin-app-variants/Form.kt +0 -47
  582. package/kotlin/fixtures/kotlin-app-variants/Icons.kt +0 -59
  583. package/kotlin/fixtures/kotlin-app-variants/Ime.kt +0 -53
  584. package/kotlin/fixtures/kotlin-app-variants/Lists.kt +0 -57
  585. package/kotlin/fixtures/kotlin-app-variants/Nav.kt +0 -47
  586. package/kotlin/fixtures/kotlin-app-variants/Note.kt +0 -40
  587. package/kotlin/fixtures/kotlin-app-variants/Overlays.kt +0 -56
  588. package/kotlin/fixtures/kotlin-app-variants/Pan.kt +0 -38
  589. package/kotlin/fixtures/kotlin-app-variants/Pickers.kt +0 -44
  590. package/kotlin/fixtures/kotlin-app-variants/Press.kt +0 -43
  591. package/kotlin/fixtures/kotlin-app-variants/Scroll.kt +0 -63
  592. package/kotlin/fixtures/kotlin-app-variants/Sheet.kt +0 -43
  593. package/kotlin/fixtures/kotlin-app-variants/Strings.kt +0 -49
  594. package/kotlin/fixtures/kotlin-app-variants/Tabs.kt +0 -47
  595. package/kotlin/fixtures/kotlin-app-variants/TextWidth.kt +0 -45
  596. package/kotlin/fixtures/kotlin-app-variants/TransientInsets.kt +0 -50
  597. package/kotlin/fixtures/kotlin-app-variants/Transition.kt +0 -69
  598. package/kotlin/fixtures/kotlin-app-variants/ViewConfig.kt +0 -22
  599. package/kotlin/fixtures/kotlin-app-variants/Widgets.kt +0 -67
  600. package/kotlin/fixtures/runtime-state/RuntimeState.kt +0 -200
  601. package/kotlin/fork/README.md +0 -97
  602. package/kotlin/fork/build.sh +0 -176
  603. package/kotlin/fork/compose-worker-globals.patch +0 -1247
  604. package/kotlin/fork/fork.json +0 -46
  605. package/kotlin/fork/publish.ts +0 -99
  606. package/kotlin/fork/skia-android-shaping.patch +0 -189
  607. package/kotlin/fork/skiko-local.init.gradle +0 -10
  608. package/kotlin/fork/skiko-worker-clock.patch +0 -122
@@ -1,4 +0,0 @@
1
- import { Slot } from 'one'
2
- export default function Layout() {
3
- return <Slot />
4
- }
@@ -1 +0,0 @@
1
- export { default } from '../ImportEffects.native'
@@ -1,23 +0,0 @@
1
- {
2
- "name": "peach-kotlin-import-effects-fixture",
3
- "private": true,
4
- "type": "module",
5
- "targets": [
6
- "native"
7
- ],
8
- "dependencies": {
9
- "@react-navigation/core": "catalog:",
10
- "@react-navigation/native": "catalog:",
11
- "one": "catalog:",
12
- "react": "catalog:",
13
- "react-native": "catalog:",
14
- "react-native-reanimated": "catalog:",
15
- "react-native-screens": "catalog:",
16
- "react-native-worklets": "catalog:"
17
- },
18
- "devDependencies": {
19
- "@react-native-community/template": "catalog:",
20
- "peachsim": "workspace:*",
21
- "vite": "catalog:"
22
- }
23
- }
@@ -1,20 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "paths": {
4
- "~/*": ["./*"]
5
- },
6
- "strict": true,
7
- "allowArbitraryExtensions": true,
8
- "rootDir": ".",
9
- "module": "Preserve",
10
- // allows react-native style imports without path extensions, for compat with platform-specific files
11
- "moduleResolution": "Bundler",
12
- "preserveSymlinks": true,
13
- "skipLibCheck": true,
14
- "jsx": "react-jsx",
15
- "noImplicitAny": false,
16
- "types": ["node", "react", "vite/client"],
17
- "lib": ["dom", "esnext"]
18
- },
19
- "exclude": ["node_modules", "**/test", "**/dist", "**/types", "**/__tests__"]
20
- }
@@ -1,20 +0,0 @@
1
- import { one } from 'one/vite'
2
- import { peachPlugin } from 'peachsim/vite'
3
- export default {
4
- root: import.meta.dirname,
5
- plugins: [
6
- one({
7
- web: { defaultRenderMode: 'spa' },
8
- native: {
9
- bundler: 'vite',
10
- app: {
11
- name: 'KotlinEffects',
12
- scheme: 'kotlineffects',
13
- android: { applicationId: 'dev.contrast.kotlineffects' },
14
- },
15
- },
16
- }),
17
- peachPlugin(),
18
- ],
19
- server: { host: '0.0.0.0' },
20
- }
@@ -1,13 +0,0 @@
1
- import { useState } from 'react'
2
- import { Text, View } from 'react-native'
3
- import { Layout } from './Layout.kt'
4
-
5
- export default function Index() {
6
- const [step, setStep] = useState(0)
7
- return (
8
- <View style={{ flex: 1, backgroundColor: '#fff' }}>
9
- <Layout title={`Layout step ${step}`} onStep={setStep} />
10
- <Text testID="layout-react-step">React step: {step}</Text>
11
- </View>
12
- )
13
- }
@@ -1,7 +0,0 @@
1
- // generated by one typegen; edits will be replaced
2
- import type { ReactElement } from 'react'
3
-
4
- export declare function Layout(props: {
5
- title: string
6
- onStep?: ((value0: number) => void) | null
7
- }): ReactElement
@@ -1,72 +0,0 @@
1
- package dev.contrast.kotlinlayout
2
-
3
- import androidx.compose.foundation.background
4
- import androidx.compose.foundation.layout.Arrangement
5
- import androidx.compose.foundation.layout.Box
6
- import androidx.compose.foundation.layout.Column
7
- import androidx.compose.foundation.layout.Row
8
- import androidx.compose.foundation.layout.Spacer
9
- import androidx.compose.foundation.layout.fillMaxSize
10
- import androidx.compose.foundation.layout.padding
11
- import androidx.compose.foundation.layout.size
12
- import androidx.compose.foundation.layout.width
13
- import androidx.compose.material3.Button
14
- import androidx.compose.material3.MaterialTheme
15
- import androidx.compose.material3.Surface
16
- import androidx.compose.material3.Text
17
- import androidx.compose.material3.lightColorScheme
18
- import androidx.compose.runtime.Composable
19
- import androidx.compose.runtime.getValue
20
- import androidx.compose.runtime.mutableStateOf
21
- import androidx.compose.runtime.remember
22
- import androidx.compose.runtime.setValue
23
- import androidx.compose.ui.Alignment
24
- import androidx.compose.ui.Modifier
25
- import androidx.compose.ui.graphics.Color
26
- import androidx.compose.ui.layout.onGloballyPositioned
27
- import androidx.compose.ui.layout.positionInParent
28
- import androidx.compose.ui.platform.testTag
29
- import androidx.compose.ui.unit.dp
30
-
31
- @Composable
32
- fun Layout(title: String, onStep: ((Int) -> Unit)? = null) {
33
- var count by remember { mutableStateOf(0) }
34
- var geometry by remember { mutableStateOf(mapOf<String, List<Int>>()) }
35
- fun measured(name: String, modifier: Modifier): Modifier = modifier.onGloballyPositioned {
36
- val position = it.positionInParent()
37
- val value = listOf(position.x.toInt(), position.y.toInt(), it.size.width, it.size.height)
38
- if (geometry[name] != value) geometry = geometry + (name to value)
39
- }
40
- MaterialTheme(colorScheme = lightColorScheme()) {
41
- Surface(Modifier.fillMaxSize()) {
42
- Column(Modifier.fillMaxSize().padding(16.dp), verticalArrangement = Arrangement.spacedBy(12.dp)) {
43
- Text(title, modifier = Modifier.testTag("layout-title"))
44
- Text("Count: $count", modifier = Modifier.testTag("layout-count"))
45
- Row(
46
- measured("row", Modifier.size(280.dp, 60.dp).background(Color(0xFFE8DEF8))),
47
- verticalAlignment = Alignment.CenterVertically,
48
- ) {
49
- Box(measured("first", Modifier.weight(1f).size(height = 20.dp, width = 1.dp).background(Color(0xFF6750A4))))
50
- Spacer(measured("spacer", Modifier.width(8.dp)))
51
- Box(measured("second", Modifier.weight(2f).size(height = 40.dp, width = 1.dp).background(Color(0xFF625B71))))
52
- }
53
- Box(measured("box", Modifier.size(280.dp, 80.dp).background(Color(0xFFEADDFF)))) {
54
- Box(measured("aligned", Modifier.align(Alignment.BottomEnd).size(40.dp, 24.dp).background(Color(0xFF7D5260))))
55
- }
56
- Button(
57
- onClick = { count += 1; onStep?.invoke(count) },
58
- modifier = Modifier.testTag("layout-step"),
59
- ) { Text("Next layout step") }
60
- Button(
61
- onClick = { count += 1000; onStep?.invoke(count) },
62
- enabled = false,
63
- modifier = Modifier.testTag("layout-disabled"),
64
- ) { Text("Disabled layout step") }
65
- Text(
66
- geometry.entries.sortedBy { it.key }.joinToString(";") { (name, value) -> "$name=${value.joinToString(",")}" },
67
- modifier = Modifier.testTag("layout-geometry"),
68
- )
69
- }
70
- }
71
- }
72
- }
@@ -1,24 +0,0 @@
1
- # Imported Compose layout
2
-
3
- Run One from this directory with `bunx one dev --port 8081`. Build Android
4
- through the repository's remote builder after `bunx one prebuild --platform android`.
5
- Open the same server in Peach with `peach open <port> --device pixel-8`.
6
- For Contrast, import the fixture with catalog versions materialized.
7
-
8
- The unchanged Kotlin import lays out a weighted Row, Spacer and aligned Box
9
- inside a padded Column. `layout-geometry` reports child positions and sizes in
10
- physical pixels. Compare it between hosts at the same device density.
11
-
12
- Tap `layout-step`. Compose's count and React's step must both advance once,
13
- and the callback must update the imported title to `Layout step 1` while the
14
- remembered count stays at one. Tapping `layout-disabled` must preserve that
15
- state. A second enabled tap must advance every readout to two.
16
- Capture each state and bind its source, bundle and compiled artifacts.
17
-
18
- RAN, 2026-10-11: fresh One Android API 37, Peach and Contrast Android import
19
- runs pass all four states with identical measured geometry. The
20
- [functional receipt](https://r2.sootsim.com/kotlin-evidence/import-layout/44494c189ca794bbf49431d924c9e77dcf9c04af54a25a38ef06bf642ced1461/proof.json)
21
- binds the Kotlin source, compiled artifact, native APK, captures, trees and
22
- probes. Wrong geometry and a disabled callback change both fail the saved
23
- receipt verdict. This covers geometry and callback state, with no full-frame
24
- pixel, glyph, release APK or production-delivery claim.
@@ -1,4 +0,0 @@
1
- import { Slot } from 'one'
2
- export default function Layout() {
3
- return <Slot />
4
- }
@@ -1 +0,0 @@
1
- export { default } from '../ImportLayout.native'
@@ -1,23 +0,0 @@
1
- {
2
- "name": "peach-kotlin-import-layout-fixture",
3
- "private": true,
4
- "type": "module",
5
- "targets": [
6
- "native"
7
- ],
8
- "dependencies": {
9
- "@react-navigation/core": "catalog:",
10
- "@react-navigation/native": "catalog:",
11
- "one": "catalog:",
12
- "react": "catalog:",
13
- "react-native": "catalog:",
14
- "react-native-reanimated": "catalog:",
15
- "react-native-screens": "catalog:",
16
- "react-native-worklets": "catalog:"
17
- },
18
- "devDependencies": {
19
- "@react-native-community/template": "catalog:",
20
- "peachsim": "workspace:*",
21
- "vite": "catalog:"
22
- }
23
- }
@@ -1,20 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "paths": {
4
- "~/*": ["./*"]
5
- },
6
- "strict": true,
7
- "allowArbitraryExtensions": true,
8
- "rootDir": ".",
9
- "module": "Preserve",
10
- // allows react-native style imports without path extensions, for compat with platform-specific files
11
- "moduleResolution": "Bundler",
12
- "preserveSymlinks": true,
13
- "skipLibCheck": true,
14
- "jsx": "react-jsx",
15
- "noImplicitAny": false,
16
- "types": ["node", "react", "vite/client"],
17
- "lib": ["dom", "esnext"]
18
- },
19
- "exclude": ["node_modules", "**/test", "**/dist", "**/types", "**/__tests__"]
20
- }
@@ -1,20 +0,0 @@
1
- import { one } from 'one/vite'
2
- import { peachPlugin } from 'peachsim/vite'
3
- export default {
4
- root: import.meta.dirname,
5
- plugins: [
6
- one({
7
- web: { defaultRenderMode: 'spa' },
8
- native: {
9
- bundler: 'vite',
10
- app: {
11
- name: 'KotlinLayout',
12
- scheme: 'kotlinlayout',
13
- android: { applicationId: 'dev.contrast.kotlinlayout' },
14
- },
15
- },
16
- }),
17
- peachPlugin(),
18
- ],
19
- server: { host: '0.0.0.0' },
20
- }
@@ -1,18 +0,0 @@
1
- import { useState } from 'react'
2
- import { Text, View, type ViewStyle } from 'react-native'
3
- import { Navigation } from './Navigation.kt'
4
-
5
- export default function Index() {
6
- const [step, setStep] = useState(0)
7
- const navigationProps = {
8
- title: `Navigation step ${step}`,
9
- onStep: setStep,
10
- style: { flex: 1 } satisfies ViewStyle,
11
- }
12
- return (
13
- <View style={{ flex: 1, backgroundColor: '#fff' }}>
14
- <Navigation {...navigationProps} />
15
- <Text testID="navigation-react-step">React step: {step}</Text>
16
- </View>
17
- )
18
- }
@@ -1,7 +0,0 @@
1
- // generated by one typegen; edits will be replaced
2
- import type { ReactElement } from 'react'
3
-
4
- export declare function Navigation(props: {
5
- title: string
6
- onStep?: ((value0: number) => void) | null
7
- }): ReactElement
@@ -1,104 +0,0 @@
1
- package dev.contrast.kotlinnavigation
2
-
3
- import androidx.compose.foundation.layout.Arrangement
4
- import androidx.compose.foundation.layout.Column
5
- import androidx.compose.foundation.layout.fillMaxSize
6
- import androidx.compose.foundation.layout.padding
7
- import androidx.compose.material3.Button
8
- import androidx.compose.material3.ExperimentalMaterial3Api
9
- import androidx.compose.material3.MaterialTheme
10
- import androidx.compose.material3.NavigationBar
11
- import androidx.compose.material3.NavigationBarItem
12
- import androidx.compose.material3.Scaffold
13
- import androidx.compose.material3.Text
14
- import androidx.compose.material3.TopAppBar
15
- import androidx.compose.material3.lightColorScheme
16
- import androidx.compose.runtime.Composable
17
- import androidx.compose.runtime.getValue
18
- import androidx.compose.runtime.mutableStateOf
19
- import androidx.compose.runtime.remember
20
- import androidx.compose.runtime.saveable.rememberSaveable
21
- import androidx.compose.runtime.setValue
22
- import androidx.compose.ui.Modifier
23
- import androidx.compose.ui.platform.testTag
24
- import androidx.compose.ui.unit.dp
25
- import androidx.navigation.compose.NavHost
26
- import androidx.navigation.compose.composable
27
- import androidx.navigation.compose.currentBackStackEntryAsState
28
- import androidx.navigation.compose.rememberNavController
29
-
30
- @OptIn(ExperimentalMaterial3Api::class)
31
- @Composable
32
- fun Navigation(title: String, onStep: ((Int) -> Unit)? = null) {
33
- var count by remember { mutableStateOf(0) }
34
- val nav = rememberNavController()
35
- val entry by nav.currentBackStackEntryAsState()
36
- val route = entry?.destination?.route
37
- MaterialTheme(colorScheme = lightColorScheme()) {
38
- Scaffold(
39
- modifier = Modifier.fillMaxSize(),
40
- topBar = {
41
- TopAppBar(
42
- title = { Text(title, Modifier.testTag("navigation-title")) },
43
- navigationIcon = {
44
- Button(
45
- onClick = { nav.popBackStack(); count += 1; onStep?.invoke(count) },
46
- enabled = route == "detail",
47
- modifier = Modifier.testTag("navigation-back"),
48
- ) { Text("Return home") }
49
- },
50
- )
51
- },
52
- bottomBar = {
53
- NavigationBar {
54
- NavigationBarItem(
55
- selected = route == "home",
56
- onClick = {
57
- if (route != "home") {
58
- nav.popBackStack()
59
- count += 1
60
- onStep?.invoke(count)
61
- }
62
- },
63
- icon = { Text("H") },
64
- label = { Text("Home tab") },
65
- modifier = Modifier.testTag("navigation-home-tab"),
66
- )
67
- NavigationBarItem(
68
- selected = route == "detail",
69
- onClick = {
70
- if (route != "detail") {
71
- nav.navigate("detail")
72
- count += 1
73
- onStep?.invoke(count)
74
- }
75
- },
76
- icon = { Text("D") },
77
- label = { Text("Detail tab") },
78
- modifier = Modifier.testTag("navigation-open-detail"),
79
- )
80
- }
81
- },
82
- ) { padding ->
83
- Column(Modifier.fillMaxSize().padding(padding).padding(16.dp), verticalArrangement = Arrangement.spacedBy(8.dp)) {
84
- Text("Count: $count", Modifier.testTag("navigation-count"))
85
- Text("route=$route;step=$count", Modifier.testTag("navigation-state"))
86
- Button(onClick = { count += 1000; onStep?.invoke(count) }, enabled = false, modifier = Modifier.testTag("navigation-disabled")) {
87
- Text("Disabled navigation step")
88
- }
89
- NavHost(nav, startDestination = "home", modifier = Modifier.weight(1f)) {
90
- composable("home") {
91
- var taps by rememberSaveable { mutableStateOf(0) }
92
- Column(verticalArrangement = Arrangement.spacedBy(8.dp)) {
93
- Text("Saved home: $taps", Modifier.testTag("navigation-home-count"))
94
- Button(onClick = { taps += 1; count += 1; onStep?.invoke(count) }, modifier = Modifier.testTag("navigation-increment")) {
95
- Text("Increment home")
96
- }
97
- }
98
- }
99
- composable("detail") { Text("Detail screen", Modifier.testTag("navigation-detail")) }
100
- }
101
- }
102
- }
103
- }
104
- }
@@ -1,31 +0,0 @@
1
- # Imported Compose navigation
2
-
3
- Run One in this fixture, then open its Android bundle in Peach on Pixel 8.
4
- Build the native Android target on a remote builder. Import the same files in
5
- Contrast with catalog versions materialized.
6
-
7
- Increment the home counter, tap the detail navigation item, try the disabled
8
- button, return with the top app bar button, then increment home again. The
9
- home counter must survive the NavHost push/pop as one, then advance to two.
10
- Each enabled action updates React and the imported title while Compose retains
11
- the action count. Capture all six states and read the actual destination route.
12
- This fixture claims settled navigation and saveable state, without system-back,
13
- transition timing, activity restoration or full-frame pixel fidelity.
14
-
15
- RAN One Android, Peach and Contrast: initial, increment, detail, disabled,
16
- returned and second increment. Counts are 0, 1, 2, 2, 3 and 4; the saved home
17
- count returns as one, then advances to two. React callback/title/footer values
18
- match in all states. Contrast loads its initial preview document once, with no
19
- browser errors, failed requests or failed responses.
20
-
21
- [Hash-verified three-host proof](https://r2.sootsim.com/kotlin-evidence/import-navigation/8046f59ff6e63ae4c3e0eb21cf58852ab63b0900550f7ffc1f1d3b179618b437/proof.json) contains 71 objects and rejecting
22
- controls for wrong saved state, disabled callbacks, runtime and duplicate loads.
23
- Kotlin SHA256 `ab8c24c7540fc1916caa6581e8e63231c03e81c411837fb7ae971d1cc843a974`;
24
- runtime `dd802e83b984a06811f4998c1a66c187dad7404b3f73077cf285f01a5accdff4`.
25
- One native proof uses family canary `2.0.0-0.canary.1791736959809`, whose host
26
- bounds intrinsic measurement and includes navigation-compose. The family pin
27
- stays on the isolated helper branch until the dependency lane adopts it.
28
- This receipt covers debug Android API37 and settled state. System back,
29
- transition timing, activity restoration, text glyphs, shell and full-frame
30
- pixel fidelity remain outside this fixture's grade. Images live in the proof,
31
- with existing native captures converted losslessly to WebP without resizing.
@@ -1,4 +0,0 @@
1
- import { Slot } from 'one'
2
- export default function Layout() {
3
- return <Slot />
4
- }
@@ -1 +0,0 @@
1
- export { default } from '../ImportNavigation.native'
@@ -1,23 +0,0 @@
1
- {
2
- "name": "peach-kotlin-import-navigation-fixture",
3
- "private": true,
4
- "type": "module",
5
- "targets": [
6
- "native"
7
- ],
8
- "dependencies": {
9
- "@react-navigation/core": "catalog:",
10
- "@react-navigation/native": "catalog:",
11
- "one": "catalog:",
12
- "react": "catalog:",
13
- "react-native": "catalog:",
14
- "react-native-reanimated": "catalog:",
15
- "react-native-screens": "catalog:",
16
- "react-native-worklets": "catalog:"
17
- },
18
- "devDependencies": {
19
- "@react-native-community/template": "catalog:",
20
- "peachsim": "workspace:*",
21
- "vite": "catalog:"
22
- }
23
- }
@@ -1,20 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "paths": {
4
- "~/*": ["./*"]
5
- },
6
- "strict": true,
7
- "allowArbitraryExtensions": true,
8
- "rootDir": ".",
9
- "module": "Preserve",
10
- // allows react-native style imports without path extensions, for compat with platform-specific files
11
- "moduleResolution": "Bundler",
12
- "preserveSymlinks": true,
13
- "skipLibCheck": true,
14
- "jsx": "react-jsx",
15
- "noImplicitAny": false,
16
- "types": ["node", "react", "vite/client"],
17
- "lib": ["dom", "esnext"]
18
- },
19
- "exclude": ["node_modules", "**/test", "**/dist", "**/types", "**/__tests__"]
20
- }
@@ -1,20 +0,0 @@
1
- import { one } from 'one/vite'
2
- import { peachPlugin } from 'peachsim/vite'
3
- export default {
4
- root: import.meta.dirname,
5
- plugins: [
6
- one({
7
- web: { defaultRenderMode: 'spa' },
8
- native: {
9
- bundler: 'vite',
10
- app: {
11
- name: 'KotlinNavigation',
12
- scheme: 'kotlinnavigation',
13
- android: { applicationId: 'dev.contrast.kotlinnavigation' },
14
- },
15
- },
16
- }),
17
- peachPlugin(),
18
- ],
19
- server: { host: '0.0.0.0' },
20
- }
@@ -1,29 +0,0 @@
1
- import { useState } from 'react'
2
- import { Pressable, Text, View } from 'react-native'
3
- import { Overlays } from './Overlays.kt'
4
-
5
- type DecisionEvent = [string, number]
6
-
7
- export default function Index() {
8
- const [title, setTitle] = useState('Imported overlays')
9
- const [events, setEvents] = useState<DecisionEvent[]>([])
10
- return (
11
- <View style={{ flex: 1, paddingTop: 48, backgroundColor: '#fff' }}>
12
- <View style={{ flex: 1 }}>
13
- <Overlays
14
- title={title}
15
- onDecision={(value, count) =>
16
- setEvents((previous) => [...previous, [value, count]])
17
- }
18
- />
19
- </View>
20
- <View style={{ height: 200, padding: 24 }}>
21
- <Text testID="overlays-props">{JSON.stringify({ title })}</Text>
22
- <Text testID="overlays-events">{JSON.stringify(events)}</Text>
23
- <Pressable testID="overlays-title" onPress={() => setTitle('Updated overlays')}>
24
- <Text>Update title</Text>
25
- </Pressable>
26
- </View>
27
- </View>
28
- )
29
- }
@@ -1,7 +0,0 @@
1
- // generated by one typegen; edits will be replaced
2
- import type { ReactElement } from 'react'
3
-
4
- export declare function Overlays(props: {
5
- title: string
6
- onDecision?: ((value0: string, value1: number) => void) | null
7
- }): ReactElement
@@ -1,93 +0,0 @@
1
- package dev.contrast.kotlinoverlays
2
-
3
- import androidx.compose.foundation.layout.Arrangement
4
- import androidx.compose.foundation.layout.Box
5
- import androidx.compose.foundation.layout.Column
6
- import androidx.compose.foundation.layout.fillMaxSize
7
- import androidx.compose.foundation.layout.padding
8
- import androidx.compose.material3.AlertDialog
9
- import androidx.compose.material3.Button
10
- import androidx.compose.material3.DropdownMenu
11
- import androidx.compose.material3.DropdownMenuItem
12
- import androidx.compose.material3.MaterialTheme
13
- import androidx.compose.material3.Surface
14
- import androidx.compose.material3.Text
15
- import androidx.compose.material3.TextButton
16
- import androidx.compose.material3.lightColorScheme
17
- import androidx.compose.runtime.Composable
18
- import androidx.compose.runtime.getValue
19
- import androidx.compose.runtime.mutableStateOf
20
- import androidx.compose.runtime.remember
21
- import androidx.compose.runtime.setValue
22
- import androidx.compose.ui.Modifier
23
- import androidx.compose.ui.platform.testTag
24
- import androidx.compose.ui.semantics.contentDescription
25
- import androidx.compose.ui.semantics.semantics
26
- import androidx.compose.ui.unit.dp
27
-
28
- @Composable
29
- fun Overlays(title: String, onDecision: ((String, Int) -> Unit)? = null) {
30
- var dialog by remember { mutableStateOf(false) }
31
- var menu by remember { mutableStateOf(false) }
32
- var result by remember { mutableStateOf("none") }
33
- var decisions by remember { mutableStateOf(0) }
34
- fun decide(value: String) {
35
- result = value
36
- decisions += 1
37
- onDecision?.invoke(value, decisions)
38
- }
39
- val state = "$title|$result|$decisions|$dialog|$menu"
40
- MaterialTheme(colorScheme = lightColorScheme()) {
41
- Surface(Modifier.fillMaxSize()) {
42
- Column(
43
- Modifier.fillMaxSize().padding(24.dp),
44
- verticalArrangement = Arrangement.spacedBy(16.dp),
45
- ) {
46
- Text(title, style = MaterialTheme.typography.headlineSmall)
47
- Text(state, Modifier.testTag("overlays-state"))
48
- Button(
49
- onClick = { dialog = true },
50
- modifier = Modifier.testTag("overlays-dialog").semantics { contentDescription = "overlays-dialog" },
51
- ) { Text("Open dialog") }
52
- Box {
53
- Button(
54
- onClick = { menu = true },
55
- modifier = Modifier.testTag("overlays-menu").semantics { contentDescription = "overlays-menu" },
56
- ) { Text("Open menu") }
57
- DropdownMenu(
58
- expanded = menu,
59
- onDismissRequest = { menu = false; decide("menu-dismissed") },
60
- ) {
61
- Text(state, Modifier.padding(12.dp).testTag("overlays-menu-state"))
62
- listOf("First", "Second", "Third").forEach { item ->
63
- DropdownMenuItem(
64
- text = { Text(item) },
65
- onClick = { menu = false; decide(item) },
66
- modifier = Modifier.testTag("overlays-$item").semantics { contentDescription = "overlays-$item" },
67
- )
68
- }
69
- }
70
- }
71
- }
72
- }
73
- if (dialog) {
74
- AlertDialog(
75
- onDismissRequest = { dialog = false; decide("dialog-dismissed") },
76
- title = { Text("Discard draft?") },
77
- text = { Text(state, Modifier.testTag("overlays-dialog-state")) },
78
- confirmButton = {
79
- TextButton(
80
- onClick = { dialog = false; decide("confirmed") },
81
- modifier = Modifier.testTag("overlays-confirm").semantics { contentDescription = "overlays-confirm" },
82
- ) { Text("Discard") }
83
- },
84
- dismissButton = {
85
- TextButton(
86
- onClick = { dialog = false; decide("kept") },
87
- modifier = Modifier.testTag("overlays-keep").semantics { contentDescription = "overlays-keep" },
88
- ) { Text("Keep") }
89
- },
90
- )
91
- }
92
- }
93
- }