@gjsify/react-native 0.47.0 → 0.49.0
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/PROPS.md +319 -92
- package/README.md +112 -0
- package/SUPPORT.md +14 -9
- package/lib/esm/accessibility.js +1 -0
- package/lib/esm/apis/alert.js +1 -1
- package/lib/esm/app-registry.js +1 -1
- package/lib/esm/child-facts.js +1 -0
- package/lib/esm/components.js +1 -1
- package/lib/esm/generated/own-exports.js +1 -1
- package/lib/esm/generated/unsupported-react-native.js +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/esm/lists/controller.js +1 -1
- package/lib/esm/primitives/accessibility.js +1 -0
- package/lib/esm/primitives/answers.js +1 -1
- package/lib/esm/primitives/defaults.js +1 -1
- package/lib/esm/primitives/errors.js +1 -1
- package/lib/esm/primitives/index.js +1 -1
- package/lib/esm/primitives/resolve.js +1 -1
- package/lib/esm/primitives/style.js +1 -1
- package/lib/esm/primitives/table.js +1 -1
- package/lib/esm/prop-table.js +1 -1
- package/lib/esm/router/chrome.js +1 -0
- package/lib/esm/router/navigation.js +1 -1
- package/lib/esm/router/per-route-cache.js +1 -0
- package/lib/esm/router/stack.js +1 -1
- package/lib/esm/router/tabs.js +1 -1
- package/lib/esm/solid/index.js +1 -1
- package/lib/esm/support-table.js +1 -1
- package/lib/esm/window-chrome.js +1 -0
- package/lib/types/accessibility.d.ts +10 -0
- package/lib/types/app-registry.d.ts +95 -5
- package/lib/types/app-registry.spec.d.ts +2 -0
- package/lib/types/child-facts.d.ts +45 -0
- package/lib/types/child-facts.spec.d.ts +2 -0
- package/lib/types/components.d.ts +43 -1
- package/lib/types/generated/unsupported-react-native.d.ts +8 -4
- package/lib/types/index.d.ts +3 -3
- package/lib/types/primitives/accessibility.d.ts +112 -0
- package/lib/types/primitives/answers.d.ts +18 -0
- package/lib/types/primitives/errors.d.ts +9 -0
- package/lib/types/primitives/resolve.d.ts +10 -0
- package/lib/types/primitives/style.d.ts +23 -0
- package/lib/types/primitives/table.d.ts +13 -1
- package/lib/types/primitives/text-metrics.spec.d.ts +2 -0
- package/lib/types/prop-table.d.ts +29 -0
- package/lib/types/router/chrome.d.ts +106 -0
- package/lib/types/router/errors.d.ts +3 -1
- package/lib/types/router/per-route-cache.d.ts +21 -0
- package/lib/types/router/stack.d.ts +6 -1
- package/lib/types/router/tabs.d.ts +47 -2
- package/lib/types/solid/index.d.ts +2 -1
- package/lib/types/support-table.d.ts +1 -1
- package/lib/types/window-chrome.d.ts +39 -0
- package/package.json +7 -7
- package/react-native-surface.json +18 -9
|
@@ -120,7 +120,7 @@ export { OWN_EXPORT_NAMES };
|
|
|
120
120
|
* falls through to the layer's own exports — and only on the ROOT surface, because
|
|
121
121
|
* `configureStyle` is exported from `@gjsify/react-native` and from nowhere else.
|
|
122
122
|
* That order is the safety property: the derived list can add names, never promote a
|
|
123
|
-
* `planned` one, so a mistake upstream of it cannot turn
|
|
123
|
+
* `planned` one, so a mistake upstream of it cannot turn an import of one into a
|
|
124
124
|
* green build.
|
|
125
125
|
*
|
|
126
126
|
* A name in NEITHER population is still refused — which is the whole difference
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import Gtk from 'gi://Gtk?version=4.0';
|
|
2
|
+
import { type ReactElement, type ReactNode } from 'react';
|
|
3
|
+
/** The window's header bar, as something a tree can take over. */
|
|
4
|
+
export interface WindowChrome {
|
|
5
|
+
/**
|
|
6
|
+
* Take the window's header bar out, and get the undo.
|
|
7
|
+
*
|
|
8
|
+
* `claimant` is only for the refusal message — it is what a reader needs to find
|
|
9
|
+
* the second navigator.
|
|
10
|
+
*/
|
|
11
|
+
claim(claimant: string): () => void;
|
|
12
|
+
}
|
|
13
|
+
/** The widgets `AppRegistry` puts in a window, and the chrome hand-over for them. */
|
|
14
|
+
export interface WindowShell {
|
|
15
|
+
/** What goes into `Gtk.Window.set_content`. */
|
|
16
|
+
readonly root: Gtk.Widget;
|
|
17
|
+
/** What React renders into. */
|
|
18
|
+
readonly content: Gtk.Widget;
|
|
19
|
+
/** The hand-over for the header bar in `root`. */
|
|
20
|
+
readonly chrome: WindowChrome;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The ordinary Adwaita shell: a toolbar view, a header bar, and a box to render into.
|
|
24
|
+
*
|
|
25
|
+
* A function rather than four lines inside `buildWindow`, because the router's own
|
|
26
|
+
* vectors have to measure THIS composition — a spec that rebuilt it by hand would
|
|
27
|
+
* pass while the shipping shell drifted.
|
|
28
|
+
*/
|
|
29
|
+
export declare function buildWindowShell(): WindowShell;
|
|
30
|
+
/** Publish the window's chrome to the tree rendered into it. */
|
|
31
|
+
export declare const provideWindowChrome: (chrome: WindowChrome, children: ReactNode) => ReactElement;
|
|
32
|
+
/**
|
|
33
|
+
* The window's chrome, or `null` when nobody published one.
|
|
34
|
+
*
|
|
35
|
+
* `null` is an ORDINARY answer, not a fault: a consumer who builds their own window
|
|
36
|
+
* and renders a React root into it publishes nothing, and then there is no default
|
|
37
|
+
* bar to step aside for — their window, their chrome.
|
|
38
|
+
*/
|
|
39
|
+
export declare const useWindowChrome: () => WindowChrome | null;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gjsify/react-native",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.49.0",
|
|
4
4
|
"description": "The React Native view vocabulary rendered onto GTK4/Adwaita, over @gjsify/gtk-host",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"module": "lib/esm/index.js",
|
|
@@ -120,8 +120,8 @@
|
|
|
120
120
|
"react-native"
|
|
121
121
|
],
|
|
122
122
|
"dependencies": {
|
|
123
|
-
"@gjsify/adwaita-app": "^0.
|
|
124
|
-
"@gjsify/gtk-host": "^0.
|
|
123
|
+
"@gjsify/adwaita-app": "^0.49.0",
|
|
124
|
+
"@gjsify/gtk-host": "^0.49.0"
|
|
125
125
|
},
|
|
126
126
|
"peerDependencies": {
|
|
127
127
|
"@react-navigation/core": "^7.21.13",
|
|
@@ -152,9 +152,9 @@
|
|
|
152
152
|
"@girs/gdk-4.0": "4.6.0",
|
|
153
153
|
"@girs/gjs": "4.6.0",
|
|
154
154
|
"@girs/gtk-4.0": "4.6.0",
|
|
155
|
-
"@gjsify/cli": "^0.
|
|
156
|
-
"@gjsify/rolldown-plugin-gjsify": "^0.
|
|
157
|
-
"@gjsify/unit": "^0.
|
|
155
|
+
"@gjsify/cli": "^0.49.0",
|
|
156
|
+
"@gjsify/rolldown-plugin-gjsify": "^0.49.0",
|
|
157
|
+
"@gjsify/unit": "^0.49.0",
|
|
158
158
|
"@react-navigation/core": "^7.21.13",
|
|
159
159
|
"@react-navigation/routers": "^7.6.4",
|
|
160
160
|
"@types/node": "^25.9.2",
|
|
@@ -173,7 +173,7 @@
|
|
|
173
173
|
},
|
|
174
174
|
"osNotes": {
|
|
175
175
|
"darwin": "Platform.OS reads the host OS, so this package owes an OS claim (ADR 0018). MEASURED 2026-08-31 by gtk-os-suites.yml on darwin-arm64 (macOS 26.5.2) and darwin-x64 (macOS 15.7.9), on Node against the published @gjsify/gtk-runtime-darwin-* closure with no Homebrew GTK on the host — the combination ADR 0024 § 4 puts a shipped .app on. The layer this package renders through, @gjsify/gtk-host, is GATING and green there: 2274 of 2274 on both arches. Its OWN suite ran as a probe and reported 2 of 857 on each arch — BY NAME the same two that failed on Linux under the node target (#1438), so darwin added nothing to that set. #1438 is now CLOSED in the engine — node-gi realizes a classed GType on the `$gtype` read and runs a class-struct static on the class it was CALLED on — and the Linux node leg measures 1222 of 1222. This leg does NOT yet, and the reason is the pairing rather than the operating system: the fix is in the addon's C++, and gtk-os-suites.yml installs the PUBLISHED `@gjsify/node-gi` prebuild here on purpose (ADR 0024 § 4 asks what a stranger's download does). MEASURED at the same commit on 2026-09-02: 1 of 1220 on both darwin arches against 1222 of 1222 on Linux with a locally built addon — the same `popped` assertion, the one #1438 fixed. So the step stays a probe and this claim stays `partial` until the first release carrying that engine fix; promote on the first run after it where the only failures left are darwin's own. Nothing else is known to stand in the way: the widgets are GTK4/Adwaita and the style partition is pure TS.",
|
|
176
|
-
"win32": "As darwin for why a claim is owed, and one step further: there is no GJS host on Windows at all (ADR 0024 § 4), so the only route is Node + @gjsify/node-gi + @gjsify/gtk-runtime-win32-x64 — which gtk-os-suites.yml installs from npm and MEASURED on 2026-08-31. The closure is sound and GATING: the published bundle verifies (33 backed typelibs, windowing=true, decode probe) and check-batteries.mjs loads Gtk + Adw with no gvsbuild GTK on the host. The suite reported 7 of 848 — and that NUMBER is the misleading part, so here is its attribution: 2 were the #1438 baseline that was red on every OS and 1 a knock-on of one of them (the same `popped` seam), all three CLOSED in the engine since — and still counted on this leg, which runs the PUBLISHED addon and so cannot see an unreleased C++ fix (measured, same as darwin, 2026-09-02); 2 are inherited from @gjsify/gtk-host's table declaring GTK's Unix print stack (#1446, and gtk-host itself is 6 of 2264 there against 2274/2274 on both darwin arches), and 2
|
|
176
|
+
"win32": "As darwin for why a claim is owed, and one step further: there is no GJS host on Windows at all (ADR 0024 § 4), so the only route is Node + @gjsify/node-gi + @gjsify/gtk-runtime-win32-x64 — which gtk-os-suites.yml installs from npm and MEASURED on 2026-08-31. The closure is sound and GATING: the published bundle verifies (33 backed typelibs, windowing=true, decode probe) and check-batteries.mjs loads Gtk + Adw with no gvsbuild GTK on the host. The suite reported 7 of 848 — and that NUMBER is the misleading part, so here is its attribution: 2 were the #1438 baseline that was red on every OS and 1 a knock-on of one of them (the same `popped` seam), all three CLOSED in the engine since — and still counted on this leg, which runs the PUBLISHED addon and so cannot see an unreleased C++ fix (measured, same as darwin, 2026-09-02); 2 are inherited from @gjsify/gtk-host's table declaring GTK's Unix print stack (#1446, and gtk-host itself is 6 of 2264 there against 2274/2274 on both darwin arches), and 2 were POSIX-shaped ASSERTIONS rather than defects — the Image/ImageBackground vectors round-tripped '/nonexistent-gjsify-vector.png' through Gio.File.new_for_path (src/components.ts) and asserted get_path() returned it unchanged, but get_path() answers the NATIVE path, so GLib correctly returned '\\\\nonexistent-gjsify-vector.png'. FIXED in #1556: both now compare with Gio.File.equal plus the basename, which is the same claim in every separator. Fixing them found a real win32 defect beside them, also fixed there: normaliseSource read a DRIVE LETTER as a URI scheme (RFC 3986 admits a single ALPHA), so 'C:\\\\images\\\\logo.png' was refused as a 'c:' URI on the one OS that spells absolute paths that way. So this layer's own win32-specific defect count is ZERO, and `partial` records unmeasured ground rather than a Windows wall. Only win32-x64 is measurable at all — gvsbuild publishes no arm64 GTK. Promote when the engine fix for #1438 is released and #1446 closes; the assertions are no longer in the way."
|
|
177
177
|
},
|
|
178
178
|
"runtimes": {
|
|
179
179
|
"gjs": "polyfill",
|
|
@@ -2,15 +2,19 @@
|
|
|
2
2
|
"$comment": [
|
|
3
3
|
"The public export names of react-native, read from the installed package's index.js",
|
|
4
4
|
"rather than from documentation. src/support-table.ts must have exactly these keys.",
|
|
5
|
+
"SORTED, so a version bump diffs as the names that changed rather than as the order",
|
|
6
|
+
"upstream happens to declare them in. The comparison is set-based either way.",
|
|
7
|
+
"ONE VERSION IN THE TREE: this records the release the workspace RESOLVES, so the",
|
|
8
|
+
"drift half of scripts/check-rn-surface.mjs compares like with like and fails on a",
|
|
9
|
+
"real difference. When the two do diverge -- someone bumps the dev dependency and",
|
|
10
|
+
"forgets this file -- the check prints both versions and the difference between the",
|
|
11
|
+
"releases rather than failing, because that is what it is.",
|
|
5
12
|
"Committed rather than derived at check time because react-native pulls ~170 MB of",
|
|
6
13
|
"dependencies (hermes-compiler alone is 47 MB) and every workspace install would pay it",
|
|
7
|
-
"for one list of strings.
|
|
8
|
-
"file always, and additionally re-derives this file from a real react-native install",
|
|
9
|
-
"when one is resolvable -- so the gate is stronger where the package is present and says",
|
|
10
|
-
"so where it is not."
|
|
14
|
+
"for one list of strings."
|
|
11
15
|
],
|
|
12
|
-
"reactNativeVersion": "0.
|
|
13
|
-
"readOn": "2026-
|
|
16
|
+
"reactNativeVersion": "0.87.1",
|
|
17
|
+
"readOn": "2026-09-04",
|
|
14
18
|
"exports": [
|
|
15
19
|
"AccessibilityInfo",
|
|
16
20
|
"ActionSheetIOS",
|
|
@@ -20,6 +24,7 @@
|
|
|
20
24
|
"AppRegistry",
|
|
21
25
|
"AppState",
|
|
22
26
|
"Appearance",
|
|
27
|
+
"AssetRegistry",
|
|
23
28
|
"BackHandler",
|
|
24
29
|
"Button",
|
|
25
30
|
"Clipboard",
|
|
@@ -37,7 +42,6 @@
|
|
|
37
42
|
"Image",
|
|
38
43
|
"ImageBackground",
|
|
39
44
|
"InputAccessoryView",
|
|
40
|
-
"InteractionManager",
|
|
41
45
|
"Keyboard",
|
|
42
46
|
"KeyboardAvoidingView",
|
|
43
47
|
"LayoutAnimation",
|
|
@@ -46,7 +50,6 @@
|
|
|
46
50
|
"Modal",
|
|
47
51
|
"NativeAppEventEmitter",
|
|
48
52
|
"NativeComponentRegistry",
|
|
49
|
-
"NativeDialogManagerAndroid",
|
|
50
53
|
"NativeEventEmitter",
|
|
51
54
|
"NativeModules",
|
|
52
55
|
"Networking",
|
|
@@ -73,7 +76,6 @@
|
|
|
73
76
|
"Text",
|
|
74
77
|
"TextInput",
|
|
75
78
|
"ToastAndroid",
|
|
76
|
-
"Touchable",
|
|
77
79
|
"TouchableHighlight",
|
|
78
80
|
"TouchableNativeFeedback",
|
|
79
81
|
"TouchableOpacity",
|
|
@@ -93,11 +95,18 @@
|
|
|
93
95
|
"processColor",
|
|
94
96
|
"registerCallableModule",
|
|
95
97
|
"requireNativeComponent",
|
|
98
|
+
"unstable_DEFAULT_INITIAL_NUM_TO_RENDER",
|
|
96
99
|
"unstable_NativeText",
|
|
97
100
|
"unstable_NativeView",
|
|
98
101
|
"unstable_TextAncestorContext",
|
|
102
|
+
"unstable_VirtualArray",
|
|
103
|
+
"unstable_VirtualColumn",
|
|
104
|
+
"unstable_VirtualColumnGenerator",
|
|
105
|
+
"unstable_VirtualRow",
|
|
99
106
|
"unstable_VirtualView",
|
|
100
107
|
"unstable_batchedUpdates",
|
|
108
|
+
"unstable_createVirtualCollectionView",
|
|
109
|
+
"unstable_getScrollParent",
|
|
101
110
|
"useAnimatedColor",
|
|
102
111
|
"useAnimatedValue",
|
|
103
112
|
"useAnimatedValueXY",
|