peachsim 0.1.671 → 0.1.673
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.
- package/cli/commands/kotlin.ts +1 -0
- package/cli/output-redaction.ts +6 -0
- package/dist-lib/agent-daemon-client.cjs +1 -1
- package/dist-lib/agent-events.cjs +1 -1
- package/dist-lib/agent-identity.cjs +1 -1
- package/dist-lib/agent-sessions.cjs +1 -1
- package/dist-lib/attached-projects.cjs +1 -1
- package/dist-lib/auth/shared-session.cjs +1 -1
- package/dist-lib/backend-origin.cjs +1 -1
- package/dist-lib/beta.cjs +1 -1
- package/dist-lib/beta.mjs +1 -1
- package/dist-lib/bridge-constants.cjs +1 -1
- package/dist-lib/bridge-contract-input.cjs +1 -1
- package/dist-lib/bridge-contract-input.mjs +1 -1
- package/dist-lib/bridge-contract.cjs +1 -1
- package/dist-lib/bridge-contract.mjs +1 -1
- package/dist-lib/capture-contract.cjs +1 -1
- package/dist-lib/capture-contract.mjs +1 -1
- package/dist-lib/cli-constants.cjs +1 -1
- package/dist-lib/cloud-contract.cjs +1 -1
- package/dist-lib/cloud-contract.mjs +1 -1
- package/dist-lib/cloud-test-args.cjs +1 -1
- package/dist-lib/cloud-test-args.mjs +1 -1
- package/dist-lib/cloud.cjs +1 -1
- package/dist-lib/cloud.mjs +1 -1
- package/dist-lib/config.cjs +1 -1
- package/dist-lib/detox/index.cjs +1 -1
- package/dist-lib/dev-bundle-resolution.cjs +1 -1
- package/dist-lib/home-paths.cjs +1 -1
- package/dist-lib/host/bridge-host.cjs +2 -2
- package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
- package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
- package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
- package/dist-lib/host/replacement-module-handler.cjs +1 -1
- package/dist-lib/host/websocket-proxy.cjs +1 -1
- package/dist-lib/index.cjs +1 -1
- package/dist-lib/jump-to-source-babel.cjs +1 -1
- package/dist-lib/jump-to-source-native.cjs +1 -1
- package/dist-lib/kotlin-host.cjs +1 -1
- package/dist-lib/menu.cjs +1 -1
- package/dist-lib/menu.mjs +1 -1
- package/dist-lib/metro-fingerprint-registry.cjs +1 -1
- package/dist-lib/metro-fingerprint-registry.mjs +1 -1
- package/dist-lib/metro-production-bundle.cjs +1 -1
- package/dist-lib/metro-production-bundle.mjs +1 -1
- package/dist-lib/metro.cjs +1 -1
- package/dist-lib/native-app-identity.cjs +1 -1
- package/dist-lib/native-app-identity.mjs +1 -1
- package/dist-lib/native-firebase-metadata.cjs +1 -1
- package/dist-lib/native-firebase-metadata.mjs +1 -1
- package/dist-lib/plist.cjs +1 -1
- package/dist-lib/plist.mjs +1 -1
- package/dist-lib/profiles.cjs +1 -1
- package/dist-lib/public-brand.cjs +1 -1
- package/dist-lib/react-native-host-modules.cjs +1 -1
- package/dist-lib/react-native-host-modules.mjs +1 -1
- package/dist-lib/render-mode.cjs +1 -1
- package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
- package/dist-lib/sdk.cjs +1 -1
- package/dist-lib/sdk.mjs +1 -1
- package/dist-lib/skills.cjs +13 -6
- package/dist-lib/swift-compile.cjs +1 -1
- package/dist-lib/swift-compile.mjs +1 -1
- package/dist-lib/swift-package.cjs +1 -1
- package/dist-lib/swift-package.mjs +1 -1
- package/dist-lib/swift-submit.cjs +2 -2
- package/dist-lib/swift-submit.mjs +2 -2
- package/dist-lib/swift.cjs +1 -1
- package/dist-lib/vite-swift.cjs +2 -2
- package/dist-lib/vite.cjs +1 -1
- package/kotlin/ComposeSources/PeachComposeHost.kt +2 -11
- package/kotlin/ComposeSources/PeachSemantics.kt +127 -0
- package/kotlin/fixtures/kotlin-app-variants/Icons.kt +59 -0
- package/kotlin/toolchain.json +9 -2
- package/package.json +1 -1
- package/src/kotlin-app.ts +5 -1
- package/src/swift-submit.ts +2 -1
package/cli/commands/kotlin.ts
CHANGED
package/cli/output-redaction.ts
CHANGED
|
@@ -28,6 +28,11 @@ const JWT = /\beyJ[\w-]{6,}\.[\w-]{6,}\.[\w-]{6,}/g
|
|
|
28
28
|
const GOOGLE_API_KEY = /\bAIza[\w-]{30,}/g
|
|
29
29
|
const BEARER = /\b(Bearer|Basic)\s+[\w.~+/=-]{8,}/gi
|
|
30
30
|
const EMAIL = /\b[\w.+-]+@[\w-]+(?:\.[\w-]+)+\b/g
|
|
31
|
+
// an opaque account or session id printed bare in prose, such as a Firebase
|
|
32
|
+
// uid after "Signed in": 20 or more letters and digits mixing upper case,
|
|
33
|
+
// lower case and digits. hex hashes, uuids and identifiers lack that mix.
|
|
34
|
+
const OPAQUE_ID =
|
|
35
|
+
/\b(?=[A-Za-z0-9]*[A-Z])(?=[A-Za-z0-9]*[a-z])(?=[A-Za-z0-9]*\d)[A-Za-z0-9]{20,}\b/g
|
|
31
36
|
// a name and its value: a quoted json name or a bare js object key, then a
|
|
32
37
|
// json or js string, a whole number token, or an array of strings. a string is
|
|
33
38
|
// matched at its own escaping level only; a json document escaped inside it is
|
|
@@ -121,6 +126,7 @@ export function redactForSharing(text: string): string {
|
|
|
121
126
|
SECRET_NAME.test(name) ? `${prefix}${mask(value)}` : line,
|
|
122
127
|
)
|
|
123
128
|
.replace(EMAIL, mask)
|
|
129
|
+
.replace(OPAQUE_ID, mask)
|
|
124
130
|
}
|
|
125
131
|
|
|
126
132
|
const utf8 = new TextDecoder('utf-8', { fatal: true })
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/beta.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/beta.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/cloud.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/cloud.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
3
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
4
4
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
package/dist-lib/config.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/detox/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/home-paths.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -7016,7 +7016,7 @@ var MAX_SWIFT_COMPILE_RESOURCE_TOTAL_BYTES = 8 * 1024 * 1024;
|
|
|
7016
7016
|
var MAX_SWIFT_COMPILE_IMAGES = 128;
|
|
7017
7017
|
var MAX_SWIFT_COMPILE_IMAGE_BYTES = 4 * 1024 * 1024;
|
|
7018
7018
|
var MAX_SWIFT_COMPILE_IMAGE_TOTAL_BYTES = 16 * 1024 * 1024;
|
|
7019
|
-
var SWIFT_HOST_ABI =
|
|
7019
|
+
var SWIFT_HOST_ABI = 4;
|
|
7020
7020
|
var POLL_INTERVAL_MS = 1500;
|
|
7021
7021
|
function httpSwiftCompileSubmit(context) {
|
|
7022
7022
|
const { assetReadToken, authorization, endpoint } = context;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
|
|
3
3
|
// src/host/fetch-proxy-overrides.ts
|
|
4
4
|
var FETCH_PROXY_BROWSER_USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
package/dist-lib/kotlin-host.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
package/dist-lib/menu.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/menu.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/metro.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/plist.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
package/dist-lib/plist.mjs
CHANGED
package/dist-lib/profiles.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/render-mode.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
package/dist-lib/sdk.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/sdk.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
3
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
4
4
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
package/dist-lib/skills.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -8386,11 +8386,18 @@ var init_registry = __esm({
|
|
|
8386
8386
|
stubType: "native",
|
|
8387
8387
|
versions: [
|
|
8388
8388
|
{
|
|
8389
|
-
range: ">=
|
|
8389
|
+
range: ">=6.0.0 <7.0.0",
|
|
8390
|
+
coverage: 0.7,
|
|
8391
|
+
note: "the progressive native view delegates to the kit variable-radius pass with the cubic CGGradient first shipped in 6.0.0; iOS 27 full-region comparisons cover top, bottom and center, radii 10/30, offsets 0/0.25, and light/dark",
|
|
8392
|
+
working: "BlurView backdrop materials; ProgressiveBlurView variable radius, direction and startOffset, with the current opaque-edge plateau and center ramps; native blur style aliases; LiquidGlassView and LiquidGlassContainer calibrated glass materials; interactive BlurSwitch; native component export aliases",
|
|
8393
|
+
missing: "general vibrant-content composition, liquid glass container merging, Android QmBlurView behavior, reduced-transparency system-setting fallback color"
|
|
8394
|
+
},
|
|
8395
|
+
{
|
|
8396
|
+
range: ">=4.6.1 <6.0.0",
|
|
8390
8397
|
coverage: 0.7,
|
|
8391
|
-
note: "
|
|
8392
|
-
working: "BlurView
|
|
8393
|
-
missing: "progressive gradient
|
|
8398
|
+
note: "partial: the older progressive native view uses CIFilter.smoothLinearGradient; the kit retains one current cubic mask, differing from the older iOS 27 oracle by 3.47\u201336.72% of pixels at the unchanged conformance threshold",
|
|
8399
|
+
working: "BlurView backdrop materials; progressive direction and radius vary spatially; calibrated liquid glass materials, interactive BlurSwitch and native component export aliases",
|
|
8400
|
+
missing: "the pre-6 progressive gradient profile and clear-edge offset; general vibrant-content composition, liquid glass container merging, Android QmBlurView behavior, reduced-transparency system-setting fallback color"
|
|
8394
8401
|
}
|
|
8395
8402
|
]
|
|
8396
8403
|
},
|
|
@@ -22491,7 +22498,7 @@ var init_swift_submit = __esm({
|
|
|
22491
22498
|
MAX_SWIFT_COMPILE_IMAGES = 128;
|
|
22492
22499
|
MAX_SWIFT_COMPILE_IMAGE_BYTES = 4 * 1024 * 1024;
|
|
22493
22500
|
MAX_SWIFT_COMPILE_IMAGE_TOTAL_BYTES = 16 * 1024 * 1024;
|
|
22494
|
-
SWIFT_HOST_ABI =
|
|
22501
|
+
SWIFT_HOST_ABI = 4;
|
|
22495
22502
|
POLL_INTERVAL_MS = 1500;
|
|
22496
22503
|
}
|
|
22497
22504
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -51,7 +51,7 @@ var MAX_SWIFT_COMPILE_RESOURCE_TOTAL_BYTES = 8 * 1024 * 1024;
|
|
|
51
51
|
var MAX_SWIFT_COMPILE_IMAGES = 128;
|
|
52
52
|
var MAX_SWIFT_COMPILE_IMAGE_BYTES = 4 * 1024 * 1024;
|
|
53
53
|
var MAX_SWIFT_COMPILE_IMAGE_TOTAL_BYTES = 16 * 1024 * 1024;
|
|
54
|
-
var SWIFT_HOST_ABI =
|
|
54
|
+
var SWIFT_HOST_ABI = 4;
|
|
55
55
|
var POLL_INTERVAL_MS = 1500;
|
|
56
56
|
function swiftNativeEntry(native, file) {
|
|
57
57
|
return {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
|
|
3
3
|
// src/swift-submit.ts
|
|
4
4
|
var SWIFT_COMPILE_PATH = "/api/swift-compile";
|
|
@@ -12,7 +12,7 @@ var MAX_SWIFT_COMPILE_RESOURCE_TOTAL_BYTES = 8 * 1024 * 1024;
|
|
|
12
12
|
var MAX_SWIFT_COMPILE_IMAGES = 128;
|
|
13
13
|
var MAX_SWIFT_COMPILE_IMAGE_BYTES = 4 * 1024 * 1024;
|
|
14
14
|
var MAX_SWIFT_COMPILE_IMAGE_TOTAL_BYTES = 16 * 1024 * 1024;
|
|
15
|
-
var SWIFT_HOST_ABI =
|
|
15
|
+
var SWIFT_HOST_ABI = 4;
|
|
16
16
|
var POLL_INTERVAL_MS = 1500;
|
|
17
17
|
function swiftNativeEntry(native, file) {
|
|
18
18
|
return {
|
package/dist-lib/swift.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/vite-swift.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1231,7 +1231,7 @@ var MAX_SWIFT_COMPILE_RESOURCE_TOTAL_BYTES = 8 * 1024 * 1024;
|
|
|
1231
1231
|
var MAX_SWIFT_COMPILE_IMAGES = 128;
|
|
1232
1232
|
var MAX_SWIFT_COMPILE_IMAGE_BYTES = 4 * 1024 * 1024;
|
|
1233
1233
|
var MAX_SWIFT_COMPILE_IMAGE_TOTAL_BYTES = 16 * 1024 * 1024;
|
|
1234
|
-
var SWIFT_HOST_ABI =
|
|
1234
|
+
var SWIFT_HOST_ABI = 4;
|
|
1235
1235
|
var POLL_INTERVAL_MS = 1500;
|
|
1236
1236
|
function swiftNativeEntry(native, file) {
|
|
1237
1237
|
return {
|
package/dist-lib/vite.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.673 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -29,10 +29,7 @@ import androidx.compose.ui.platform.WindowInfo
|
|
|
29
29
|
import androidx.compose.ui.platform.registerSkikoComposeImplementation
|
|
30
30
|
import androidx.compose.ui.scene.CanvasLayersComposeScene
|
|
31
31
|
import androidx.compose.ui.scene.hasInvalidations
|
|
32
|
-
import androidx.compose.ui.semantics.SemanticsNode
|
|
33
32
|
import androidx.compose.ui.semantics.SemanticsOwner
|
|
34
|
-
import androidx.compose.ui.semantics.SemanticsProperties
|
|
35
|
-
import androidx.compose.ui.semantics.getOrNull
|
|
36
33
|
import androidx.compose.ui.text.font.FontFamily
|
|
37
34
|
import androidx.compose.ui.text.font.FontStyle
|
|
38
35
|
import androidx.compose.ui.text.font.FontSynthesis
|
|
@@ -451,16 +448,10 @@ internal class PeachComposeMount(
|
|
|
451
448
|
invalidate(false)
|
|
452
449
|
}
|
|
453
450
|
|
|
451
|
+
// each owner's accessibility node tree, as android's delegate builds it
|
|
454
452
|
fun semantics(): String {
|
|
455
453
|
val nodes = JSONArray()
|
|
456
|
-
|
|
457
|
-
val bounds = node.boundsInRoot
|
|
458
|
-
nodes.put(JSONObject().put("text", node.config.getOrNull(SemanticsProperties.Text)?.joinToString { it.text })
|
|
459
|
-
.put("tag", node.config.getOrNull(SemanticsProperties.TestTag))
|
|
460
|
-
.put("left", bounds.left).put("top", bounds.top).put("right", bounds.right).put("bottom", bounds.bottom))
|
|
461
|
-
node.children.forEach { collect(it) }
|
|
462
|
-
}
|
|
463
|
-
platform.owners.forEach { collect(it.unmergedRootSemanticsNode) }
|
|
454
|
+
platform.owners.forEach { accessibilityNodes(it, nodes) }
|
|
464
455
|
return nodes.toString()
|
|
465
456
|
}
|
|
466
457
|
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
// the accessibility delegate's internal reads (replacedChildren, isFake,
|
|
2
|
+
// unmergedConfig, isHidden, getAllUncoveredSemanticsNodesToIntObjectMap) are
|
|
3
|
+
// common compose code that ships in the web build; android reaches them from
|
|
4
|
+
// inside the module, so this file reads the same functions rather than a copy
|
|
5
|
+
@file:Suppress("INVISIBLE_REFERENCE", "INVISIBLE_MEMBER")
|
|
6
|
+
|
|
7
|
+
import androidx.compose.ui.semantics.AdjustedSemanticsNode
|
|
8
|
+
import androidx.compose.ui.semantics.Role
|
|
9
|
+
import androidx.compose.ui.semantics.SemanticsActions
|
|
10
|
+
import androidx.compose.ui.semantics.SemanticsNode
|
|
11
|
+
import androidx.compose.ui.semantics.SemanticsOwner
|
|
12
|
+
import androidx.compose.ui.semantics.SemanticsProperties
|
|
13
|
+
import androidx.compose.ui.semantics.getAllUncoveredSemanticsNodesToIntObjectMap
|
|
14
|
+
import androidx.compose.ui.semantics.getOrNull
|
|
15
|
+
import androidx.compose.ui.semantics.isHidden
|
|
16
|
+
import androidx.compose.ui.state.ToggleableState
|
|
17
|
+
import org.json.JSONArray
|
|
18
|
+
import org.json.JSONObject
|
|
19
|
+
|
|
20
|
+
// AndroidComposeViewAccessibilityDelegateCompat's virtual view tree for one
|
|
21
|
+
// owner, as uiautomator reads it: the nodes the uncovered map keeps, each at
|
|
22
|
+
// its adjusted bounds in root pixels, linked through replacedChildren, with
|
|
23
|
+
// the properties populateAccessibilityNodeInfoProperties sets. the root is
|
|
24
|
+
// the host view's own node
|
|
25
|
+
internal fun accessibilityNodes(owner: SemanticsOwner, out: JSONArray) {
|
|
26
|
+
val root = owner.unmergedRootSemanticsNode
|
|
27
|
+
val nodes = owner.getAllUncoveredSemanticsNodesToIntObjectMap(root.id) { it.isAccessibilityIgnoredLink }
|
|
28
|
+
fun emit(node: SemanticsNode, parent: Int?) {
|
|
29
|
+
val adjusted = nodes[node.id] ?: return
|
|
30
|
+
out.put(nodeInfo(node, adjusted, parent))
|
|
31
|
+
node.replacedChildren.forEach { if (nodes.containsKey(it.id)) emit(it, node.id) }
|
|
32
|
+
}
|
|
33
|
+
emit(root, null)
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
private val SemanticsNode.isAccessibilityIgnoredLink: Boolean
|
|
37
|
+
get() = config.contains(SemanticsProperties.LinkTestMarker)
|
|
38
|
+
|
|
39
|
+
// SemanticsUtils.android.kt's toLegacyClassName
|
|
40
|
+
private fun Role.legacyClassName(): String? = when (this) {
|
|
41
|
+
Role.Button -> "android.widget.Button"
|
|
42
|
+
Role.Checkbox -> "android.widget.CheckBox"
|
|
43
|
+
Role.RadioButton -> "android.widget.RadioButton"
|
|
44
|
+
Role.Image -> "android.widget.ImageView"
|
|
45
|
+
Role.DropdownList -> "android.widget.Spinner"
|
|
46
|
+
Role.ValuePicker -> "android.widget.NumberPicker"
|
|
47
|
+
else -> null
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
private val SemanticsNode.isUnmergedLeafNode: Boolean
|
|
51
|
+
get() {
|
|
52
|
+
if (isFake) return false
|
|
53
|
+
replacedChildren.forEach { if (!it.isAccessibilityIgnoredLink) return false }
|
|
54
|
+
// the closest layout ancestor carrying a merging semantics
|
|
55
|
+
// configuration is the closest merging semantics parent
|
|
56
|
+
var parent = parent
|
|
57
|
+
while (parent != null) {
|
|
58
|
+
if (parent.unmergedConfig.isMergingSemanticsOfDescendants) return false
|
|
59
|
+
parent = parent.parent
|
|
60
|
+
}
|
|
61
|
+
return true
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
private fun nodeInfo(node: SemanticsNode, adjusted: AdjustedSemanticsNode, parent: Int?): JSONObject {
|
|
65
|
+
val config = node.unmergedConfig
|
|
66
|
+
val role = config.getOrNull(SemanticsProperties.Role)
|
|
67
|
+
// the text class first, so a role's class wins over it
|
|
68
|
+
var className = "android.view.View"
|
|
69
|
+
if (config.contains(SemanticsProperties.EditableText)) className = "android.widget.EditText"
|
|
70
|
+
if (config.contains(SemanticsProperties.Text)) className = "android.widget.TextView"
|
|
71
|
+
if (role != null && role != Role.Tab && role != Role.Switch && (node.isFake || node.replacedChildren.isEmpty())) {
|
|
72
|
+
val legacy = role.legacyClassName()
|
|
73
|
+
if (legacy != null && (role != Role.Image || node.isUnmergedLeafNode || config.isMergingSemanticsOfDescendants)) {
|
|
74
|
+
className = legacy
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// the delegate sets range and scroll classes after the role's
|
|
78
|
+
if (config.contains(SemanticsProperties.ProgressBarRangeInfo)) {
|
|
79
|
+
className =
|
|
80
|
+
if (config.contains(SemanticsActions.SetProgress)) "android.widget.SeekBar"
|
|
81
|
+
else "android.widget.ProgressBar"
|
|
82
|
+
}
|
|
83
|
+
// CollectionInfo.android.kt's hasCollectionInfo, on the merged config
|
|
84
|
+
val collection = node.config.contains(SemanticsProperties.CollectionInfo) ||
|
|
85
|
+
node.config.contains(SemanticsProperties.SelectableGroup)
|
|
86
|
+
if (config.contains(SemanticsActions.ScrollBy) && !collection) {
|
|
87
|
+
if (config.contains(SemanticsProperties.HorizontalScrollAxisRange)) {
|
|
88
|
+
className = "android.widget.HorizontalScrollView"
|
|
89
|
+
}
|
|
90
|
+
if (config.contains(SemanticsProperties.VerticalScrollAxisRange)) {
|
|
91
|
+
className = "android.widget.ScrollView"
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
val text = config.getOrNull(SemanticsProperties.EditableText)?.text
|
|
95
|
+
?: config.getOrNull(SemanticsProperties.Text)?.firstOrNull()?.text
|
|
96
|
+
val description =
|
|
97
|
+
if (!config.isMergingSemanticsOfDescendants || node.replacedChildren.isEmpty())
|
|
98
|
+
config.getOrNull(SemanticsProperties.ContentDescription)?.firstOrNull()
|
|
99
|
+
else null
|
|
100
|
+
val selected = config.getOrNull(SemanticsProperties.Selected)
|
|
101
|
+
// a tab reports selected; any other role reports selected as checked
|
|
102
|
+
val checked = when (config.getOrNull(SemanticsProperties.ToggleableState)) {
|
|
103
|
+
ToggleableState.On -> true
|
|
104
|
+
ToggleableState.Off -> false
|
|
105
|
+
else -> if (role != Role.Tab) selected else null
|
|
106
|
+
}
|
|
107
|
+
val clickable = config.getOrNull(SemanticsActions.OnClick) != null &&
|
|
108
|
+
!((role == Role.Tab || role == Role.RadioButton) && selected == true)
|
|
109
|
+
val bounds = adjusted.adjustedBounds
|
|
110
|
+
return JSONObject()
|
|
111
|
+
.put("id", node.id)
|
|
112
|
+
.put("parent", parent ?: JSONObject.NULL)
|
|
113
|
+
.put("className", className)
|
|
114
|
+
.put("role", role?.toString() ?: JSONObject.NULL)
|
|
115
|
+
.put("text", text ?: JSONObject.NULL)
|
|
116
|
+
.put("contentDescription", description ?: JSONObject.NULL)
|
|
117
|
+
.put("testTag", config.getOrNull(SemanticsProperties.TestTag) ?: JSONObject.NULL)
|
|
118
|
+
.put("clickable", clickable)
|
|
119
|
+
.put("longClickable", config.getOrNull(SemanticsActions.OnLongClick) != null)
|
|
120
|
+
.put("focusable", config.contains(SemanticsProperties.Focused))
|
|
121
|
+
.put("focused", config.getOrNull(SemanticsProperties.Focused) == true)
|
|
122
|
+
.put("enabled", !node.config.contains(SemanticsProperties.Disabled))
|
|
123
|
+
.put("checked", checked ?: JSONObject.NULL)
|
|
124
|
+
.put("selected", if (role == Role.Tab) selected ?: false else false)
|
|
125
|
+
.put("visible", !(node.isHidden || adjusted.isInMergingHiddenSubtree))
|
|
126
|
+
.put("bounds", JSONArray().put(bounds.left).put(bounds.top).put(bounds.right).put(bounds.bottom))
|
|
127
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
package dev.contrast.kotlinapp
|
|
2
|
+
|
|
3
|
+
import androidx.compose.foundation.background
|
|
4
|
+
import androidx.compose.foundation.layout.Arrangement
|
|
5
|
+
import androidx.compose.foundation.layout.Column
|
|
6
|
+
import androidx.compose.foundation.layout.Row
|
|
7
|
+
import androidx.compose.foundation.layout.fillMaxSize
|
|
8
|
+
import androidx.compose.foundation.layout.padding
|
|
9
|
+
import androidx.compose.foundation.layout.safeDrawingPadding
|
|
10
|
+
import androidx.compose.foundation.layout.size
|
|
11
|
+
import androidx.compose.material.icons.Icons
|
|
12
|
+
import androidx.compose.material.icons.filled.Add
|
|
13
|
+
import androidx.compose.material.icons.filled.Favorite
|
|
14
|
+
import androidx.compose.material.icons.filled.FavoriteBorder
|
|
15
|
+
import androidx.compose.material.icons.outlined.Settings
|
|
16
|
+
import androidx.compose.material.icons.rounded.Home
|
|
17
|
+
import androidx.compose.material.icons.sharp.Delete
|
|
18
|
+
import androidx.compose.material.icons.twotone.Star
|
|
19
|
+
import androidx.compose.material3.Icon
|
|
20
|
+
import androidx.compose.material3.IconButton
|
|
21
|
+
import androidx.compose.material3.Text
|
|
22
|
+
import androidx.compose.runtime.Composable
|
|
23
|
+
import androidx.compose.runtime.getValue
|
|
24
|
+
import androidx.compose.runtime.mutableStateOf
|
|
25
|
+
import androidx.compose.runtime.remember
|
|
26
|
+
import androidx.compose.runtime.setValue
|
|
27
|
+
import androidx.compose.ui.Modifier
|
|
28
|
+
import androidx.compose.ui.graphics.Color
|
|
29
|
+
import androidx.compose.ui.unit.dp
|
|
30
|
+
|
|
31
|
+
// material-icons-core vectors in each theme, at the default and a large
|
|
32
|
+
// size and tinted, and an IconButton that swaps its icon
|
|
33
|
+
@Composable
|
|
34
|
+
fun IconsScreen() {
|
|
35
|
+
var liked by remember { mutableStateOf(false) }
|
|
36
|
+
Column(
|
|
37
|
+
Modifier.fillMaxSize().background(Color(0xFFE8EEF8)).safeDrawingPadding().padding(16.dp),
|
|
38
|
+
verticalArrangement = Arrangement.spacedBy(12.dp),
|
|
39
|
+
) {
|
|
40
|
+
Text("Icons: liked $liked")
|
|
41
|
+
Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) {
|
|
42
|
+
Icon(Icons.Filled.Add, contentDescription = "Add")
|
|
43
|
+
Icon(Icons.Outlined.Settings, contentDescription = "Settings")
|
|
44
|
+
Icon(Icons.Rounded.Home, contentDescription = "Home")
|
|
45
|
+
Icon(Icons.Sharp.Delete, contentDescription = "Delete")
|
|
46
|
+
Icon(Icons.TwoTone.Star, contentDescription = "Star")
|
|
47
|
+
}
|
|
48
|
+
Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) {
|
|
49
|
+
Icon(Icons.Filled.Favorite, contentDescription = null, Modifier.size(64.dp), tint = Color(0xFFE91E63))
|
|
50
|
+
Icon(Icons.Outlined.Settings, contentDescription = null, Modifier.size(96.dp), tint = Color(0xFF6750A4))
|
|
51
|
+
}
|
|
52
|
+
IconButton(onClick = { liked = !liked }) {
|
|
53
|
+
Icon(
|
|
54
|
+
if (liked) Icons.Filled.Favorite else Icons.Filled.FavoriteBorder,
|
|
55
|
+
contentDescription = "Like",
|
|
56
|
+
)
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
package/kotlin/toolchain.json
CHANGED
|
@@ -281,6 +281,11 @@
|
|
|
281
281
|
"name": "navigation-compose-wasm-js-2.10.0-beta01.klib",
|
|
282
282
|
"url": "https://repo1.maven.org/maven2/org/jetbrains/androidx/navigation/navigation-compose-wasm-js/2.10.0-beta01/navigation-compose-wasm-js-2.10.0-beta01.klib",
|
|
283
283
|
"sha256": "35e147105bfc48ef083c56b5108436234f8d8ab4747bce855e48a30243b15cd6"
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
"name": "material-icons-core-wasm-js-1.7.3.klib",
|
|
287
|
+
"url": "https://repo1.maven.org/maven2/org/jetbrains/compose/material/material-icons-core-wasm-js/1.7.3/material-icons-core-wasm-js-1.7.3.klib",
|
|
288
|
+
"sha256": "b49e6d71be88de8ff909b7b741f21b744c7d24d7c73e2949e75dfbf581561020"
|
|
284
289
|
}
|
|
285
290
|
],
|
|
286
291
|
"compose": {
|
|
@@ -293,7 +298,8 @@
|
|
|
293
298
|
"materialRipple": "1.13.0-alpha02",
|
|
294
299
|
"material3Ripple": "1.5.0-alpha27",
|
|
295
300
|
"navigation": "2.10.0",
|
|
296
|
-
"activity": "1.13.0"
|
|
301
|
+
"activity": "1.13.0",
|
|
302
|
+
"materialIcons": "1.7.6"
|
|
297
303
|
},
|
|
298
304
|
"mappingSources": [
|
|
299
305
|
"https://repo1.maven.org/maven2/org/jetbrains/compose/ui/ui-android/1.13.0-alpha01/ui-android-1.13.0-alpha01.module",
|
|
@@ -313,7 +319,8 @@
|
|
|
313
319
|
"https://repo1.maven.org/maven2/org/jetbrains/compose/material/material-ripple-android/1.13.0-alpha01/material-ripple-android-1.13.0-alpha01.module",
|
|
314
320
|
"https://repo1.maven.org/maven2/org/jetbrains/compose/animation/animation-core-android/1.13.0-alpha01/animation-core-android-1.13.0-alpha01.module",
|
|
315
321
|
"https://repo1.maven.org/maven2/org/jetbrains/compose/material3/material3-ripple-android/1.13.0-alpha01/material3-ripple-android-1.13.0-alpha01.module",
|
|
316
|
-
"https://repo1.maven.org/maven2/org/jetbrains/androidx/navigation/navigation-compose-android/2.10.0-beta01/navigation-compose-android-2.10.0-beta01.module"
|
|
322
|
+
"https://repo1.maven.org/maven2/org/jetbrains/androidx/navigation/navigation-compose-android/2.10.0-beta01/navigation-compose-android-2.10.0-beta01.module",
|
|
323
|
+
"https://repo1.maven.org/maven2/org/jetbrains/compose/material/material-icons-core/1.7.3/material-icons-core-1.7.3.module"
|
|
317
324
|
],
|
|
318
325
|
"skiko": "0.152.0-alpha02"
|
|
319
326
|
},
|
package/package.json
CHANGED
package/src/kotlin-app.ts
CHANGED
|
@@ -56,6 +56,7 @@ export interface AndroidPins {
|
|
|
56
56
|
material3: string
|
|
57
57
|
navigation: string
|
|
58
58
|
activity: string
|
|
59
|
+
materialIcons: string
|
|
59
60
|
}
|
|
60
61
|
|
|
61
62
|
const ANDROID_NS = 'android:'
|
|
@@ -70,7 +71,10 @@ const PLUGINS = new Set([
|
|
|
70
71
|
// match their Android pins (Peach's activity actuals are that version's); the
|
|
71
72
|
// lifecycle and savedstate artifacts are Peach's platform actuals.
|
|
72
73
|
const PLATFORM_GROUPS = new Set(['androidx.lifecycle', 'androidx.savedstate'])
|
|
74
|
+
// pinned by group, or by group and artifact where a group's artifacts version
|
|
75
|
+
// apart (material-icons-core stopped at 1.7, beside material-ripple)
|
|
73
76
|
const ANDROID_PIN: Record<string, keyof AndroidPins> = {
|
|
77
|
+
'androidx.compose.material:material-icons-core': 'materialIcons',
|
|
74
78
|
'androidx.compose.ui': 'ui',
|
|
75
79
|
'androidx.compose.foundation': 'foundation',
|
|
76
80
|
'androidx.compose.runtime': 'runtime',
|
|
@@ -167,7 +171,7 @@ function checkModuleGradle(gradle: { file: string; text: string }, pins: Android
|
|
|
167
171
|
if (!coordinate)
|
|
168
172
|
throw new Error(`${where}: ${value} is not a literal group:artifact:version`)
|
|
169
173
|
const [, group = '', artifact, version] = coordinate
|
|
170
|
-
const pin = ANDROID_PIN[group]
|
|
174
|
+
const pin = ANDROID_PIN[`${group}:${artifact}`] ?? ANDROID_PIN[group]
|
|
171
175
|
if (pin) {
|
|
172
176
|
if (version !== pins[pin])
|
|
173
177
|
throw new Error(
|
package/src/swift-submit.ts
CHANGED
|
@@ -46,8 +46,9 @@ export const MAX_SWIFT_COMPILE_IMAGE_TOTAL_BYTES = 16 * 1024 * 1024
|
|
|
46
46
|
* 2: scroll anchors carry numeric unit coordinates to the kit.
|
|
47
47
|
* 3: the host provides `rnx.measure_text`, UIKitCore's synchronous text
|
|
48
48
|
* measure (`packages/sootsim-swift/src/mount.tsx`).
|
|
49
|
+
* 4: the host handles Network path observations and cancellation.
|
|
49
50
|
*/
|
|
50
|
-
export const SWIFT_HOST_ABI =
|
|
51
|
+
export const SWIFT_HOST_ABI = 4
|
|
51
52
|
|
|
52
53
|
export interface SwiftImageUpload {
|
|
53
54
|
/** the raster file picked for the asset (has the extension). */
|