@gjsify/react-native 0.43.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.
Files changed (56) hide show
  1. package/README.md +253 -0
  2. package/lib/esm/_virtual/_rolldown/runtime.js +1 -0
  3. package/lib/esm/apis/color-scheme.js +1 -0
  4. package/lib/esm/apis/index.js +1 -0
  5. package/lib/esm/apis/linking.js +1 -0
  6. package/lib/esm/apis/platform.js +1 -0
  7. package/lib/esm/apis/share.js +2 -0
  8. package/lib/esm/app-registry.js +1 -0
  9. package/lib/esm/components.js +1 -0
  10. package/lib/esm/event-emitter.js +1 -0
  11. package/lib/esm/generated/unsupported-exports.js +1 -0
  12. package/lib/esm/hooks.js +1 -0
  13. package/lib/esm/index.js +1 -0
  14. package/lib/esm/primitives/classes.js +1 -0
  15. package/lib/esm/primitives/errors.js +1 -0
  16. package/lib/esm/primitives/index.js +1 -0
  17. package/lib/esm/primitives/intents.js +1 -0
  18. package/lib/esm/primitives/resolve.js +1 -0
  19. package/lib/esm/primitives/style.js +1 -0
  20. package/lib/esm/primitives/table.js +1 -0
  21. package/lib/esm/solid/index.js +1 -0
  22. package/lib/esm/style-config.js +1 -0
  23. package/lib/esm/support-table.js +1 -0
  24. package/lib/esm/unsupported.js +1 -0
  25. package/lib/types/apis/apis.spec.d.ts +2 -0
  26. package/lib/types/apis/color-scheme.d.ts +16 -0
  27. package/lib/types/apis/index.d.ts +7 -0
  28. package/lib/types/apis/linking.d.ts +35 -0
  29. package/lib/types/apis/platform.d.ts +28 -0
  30. package/lib/types/apis/share.d.ts +27 -0
  31. package/lib/types/app-registry.d.ts +50 -0
  32. package/lib/types/components.d.ts +77 -0
  33. package/lib/types/event-emitter.d.ts +29 -0
  34. package/lib/types/event-emitter.spec.d.ts +2 -0
  35. package/lib/types/generated/unsupported-exports.d.ts +78 -0
  36. package/lib/types/hooks.d.ts +13 -0
  37. package/lib/types/index.d.ts +22 -0
  38. package/lib/types/primitives/classes.d.ts +23 -0
  39. package/lib/types/primitives/classes.spec.d.ts +2 -0
  40. package/lib/types/primitives/errors.d.ts +9 -0
  41. package/lib/types/primitives/index.d.ts +11 -0
  42. package/lib/types/primitives/intents.d.ts +65 -0
  43. package/lib/types/primitives/primitives.spec.d.ts +2 -0
  44. package/lib/types/primitives/resolve.d.ts +71 -0
  45. package/lib/types/primitives/style.d.ts +73 -0
  46. package/lib/types/primitives/table.d.ts +122 -0
  47. package/lib/types/primitives/widgets.spec.d.ts +2 -0
  48. package/lib/types/solid/index.d.ts +101 -0
  49. package/lib/types/solid/solid.spec.d.ts +2 -0
  50. package/lib/types/style-config.d.ts +28 -0
  51. package/lib/types/support-table.d.ts +38 -0
  52. package/lib/types/support-table.spec.d.ts +2 -0
  53. package/lib/types/unsupported.d.ts +21 -0
  54. package/lib/types/unsupported.spec.d.ts +2 -0
  55. package/package.json +111 -0
  56. package/react-native-surface.json +108 -0
@@ -0,0 +1,122 @@
1
+ import type { Orientation, WidgetFacts } from './intents.js';
2
+ /** How a prop's value becomes a GTK value. */
3
+ export type Coercion =
4
+ /** Straight through, as a string. */
5
+ 'string'
6
+ /** Straight through, as a boolean. */
7
+ | 'boolean'
8
+ /** Inverted — `secureTextEntry` is `Gtk.Entry:visibility` turned around. */
9
+ | 'not'
10
+ /** Truncated to the `gint` a GTK property stores. */
11
+ | 'int'
12
+ /** Looked up in {@link PropertyRoute.map}; anything else is a named refusal. */
13
+ | 'map'
14
+ /** A number is a pixel count; a string is looked up in the map. */
15
+ | 'pixels-or-map';
16
+ export interface PropertyRoute {
17
+ readonly to: 'property';
18
+ /** Which node it lands on. `content` is the implicit inner box, where there is one. */
19
+ readonly on?: 'outer' | 'content';
20
+ /** The GTK properties this one prop fills — plural for `size`, which is two requests. */
21
+ readonly names: readonly string[];
22
+ readonly as: Coercion;
23
+ readonly map?: Readonly<Record<string, string | number | boolean>>;
24
+ /** Properties that come with this prop being SET at all, whatever its value. */
25
+ readonly also?: Readonly<Record<string, unknown>>;
26
+ }
27
+ /** A prop that joins the normalised style record instead of going straight to a widget. */
28
+ export interface StylePropertyRoute {
29
+ readonly to: 'style-property';
30
+ /** Its name in `StyleProps` — `ActivityIndicator`'s `color` is the paint half's `color`. */
31
+ readonly name: string;
32
+ }
33
+ export interface EventRoute {
34
+ readonly to: 'event';
35
+ /** The GObject signal, in GObject's own spelling. `notify::active` is a real signal name. */
36
+ readonly signal: string;
37
+ /**
38
+ * The widget property whose value becomes the callback's argument.
39
+ *
40
+ * The host strips the emitter before calling a handler (`next(...args.slice(1))`
41
+ * in `signals.ts`), and `Gtk.Editable::changed` carries no payload of its own —
42
+ * so `onChangeText(text)` cannot be built from the signal arguments at all. The
43
+ * framework layer reads this property off its own ref instead, which is why the
44
+ * NAME is data here and the reading is L3's.
45
+ */
46
+ readonly read?: string;
47
+ }
48
+ export interface RefusedRoute {
49
+ readonly to: 'refused';
50
+ /** One line: why GTK cannot answer it, and what to do instead. */
51
+ readonly why: string;
52
+ }
53
+ /**
54
+ * A prop that is a DECLARED no-op.
55
+ *
56
+ * Not the same thing as an unknown prop and not the same thing as a refusal: the
57
+ * name is recognised, the answer is "a desktop window already behaves this way".
58
+ * `flex-nowrap` in `@gjsify/gtk-host/style` is the same shape for the same reason —
59
+ * declared here, asserted empty in the spec, so "means nothing on GTK" stays
60
+ * distinguishable from "was never recognised".
61
+ */
62
+ export interface IgnoredRoute {
63
+ readonly to: 'ignored';
64
+ readonly why: string;
65
+ }
66
+ export type PropRoute = PropertyRoute | StylePropertyRoute | EventRoute | RefusedRoute | IgnoredRoute;
67
+ /** A second styleable node inside the element, which the children go into. */
68
+ export interface ContentSpec {
69
+ readonly tag: string;
70
+ readonly widgetProps: Readonly<Record<string, unknown>>;
71
+ readonly orientation: Orientation;
72
+ readonly widget: WidgetFacts;
73
+ /** The prop that styles it — `ScrollView`'s `contentContainerStyle`. */
74
+ readonly styleProp: string | null;
75
+ /**
76
+ * Its class-list prop.
77
+ *
78
+ * `contentContainerClassName` is NativeWind's spelling, not React Native's, and
79
+ * it is carried because ADR 0032 § 12 replaces NativeWind rather than supporting
80
+ * it: the class VOCABULARY is consumed, so the prop that carries it for the
81
+ * inner node has to be too. Without it the one node a class list cannot reach is
82
+ * the one that holds every child.
83
+ */
84
+ readonly classNameProp: string | null;
85
+ }
86
+ export interface PrimitiveSpec {
87
+ /** GType name, which is the tag the host takes. */
88
+ readonly tag: string;
89
+ /** Properties every instance carries before a single prop is read. */
90
+ readonly widgetProps: Readonly<Record<string, unknown>>;
91
+ /** GTK CSS classes every instance carries — `flat` on a `Pressable`. */
92
+ readonly cssClasses: readonly string[];
93
+ /** The element's own orientation, for the intents that need it. */
94
+ readonly orientation: Orientation;
95
+ readonly widget: WidgetFacts;
96
+ /** Where a text child goes, or null when text under this primitive is refused. */
97
+ readonly textSink: string | null;
98
+ /** Prop name → destination. One or more routes; several is `horizontal`'s shape. */
99
+ readonly props: Readonly<Record<string, PropRoute | readonly PropRoute[]>>;
100
+ readonly content?: ContentSpec;
101
+ /**
102
+ * The element becomes THIS widget when one of its children is absolutely
103
+ * positioned, and its own children move into `content`.
104
+ *
105
+ * Triggered by the CHILD, never by the element (ADR 0032 § 3: `absolute` occurs
106
+ * five times in the measured application and always on the child).
107
+ */
108
+ readonly overlayOnAbsoluteChild?: {
109
+ readonly tag: string;
110
+ readonly slot: string;
111
+ };
112
+ /** One React Native prop, two GTK widgets. `TextInput`'s `multiline`. */
113
+ readonly switchOn?: {
114
+ readonly prop: string;
115
+ readonly whenTrue: PrimitiveSpec;
116
+ };
117
+ }
118
+ export declare const PRIMITIVES: Readonly<Record<string, PrimitiveSpec>>;
119
+ /** The primitives this layer answers for. Derived, so it cannot disagree with the table. */
120
+ export declare const PRIMITIVE_NAMES: readonly string[];
121
+ /** Props the framework owns; they never reach a widget and are never refused. */
122
+ export declare const FRAMEWORK_PROPS: ReadonlySet<string>;
@@ -0,0 +1,2 @@
1
+ declare const _default: () => Promise<void>;
2
+ export default _default;
@@ -0,0 +1,101 @@
1
+ import { createElement, mount } from '@gjsify/gtk-host/solid';
2
+ import type { ClassNameInput } from '../primitives/classes.js';
3
+ import type { StyleInput } from '../primitives/style.js';
4
+ /**
5
+ * The host's node type, named through the adapter rather than imported.
6
+ *
7
+ * `@gjsify/gtk-host` publishes no `./types` subpath (its exports map is curated), so
8
+ * `HostNode` has no importable name — but `createElement`'s return type is the same
9
+ * type, and `ReturnType` reaches it without widening anything to `unknown`.
10
+ */
11
+ type HostNode = ReturnType<typeof createElement>;
12
+ /** What a child of one of these components can be. */
13
+ export type PrimitiveChild = HostNode | string | number | boolean | null | undefined;
14
+ export type PrimitiveChildren = PrimitiveChild | readonly PrimitiveChildren[];
15
+ /** What every primitive accepts on top of its own props. */
16
+ export interface CommonProps {
17
+ className?: ClassNameInput;
18
+ style?: StyleInput;
19
+ children?: PrimitiveChildren;
20
+ /**
21
+ * The `Gtk.Widget` itself, once it exists.
22
+ *
23
+ * Called from `onMount` rather than during the body, and the reason is the
24
+ * host's deferred materialisation: a node has no widget until something needs
25
+ * one, and what needs one is being placed. Solid's own `spread` calls
26
+ * `props.ref(node)` with the NODE for the same reason — it has nothing else at
27
+ * that moment — so handing the widget is a deliberate difference from the
28
+ * renderer's convention and the same value React's `ref` receives here.
29
+ */
30
+ ref?: (widget: unknown) => void;
31
+ testID?: string;
32
+ }
33
+ export interface ViewProps extends CommonProps {
34
+ /** `auto` and `none` only — GTK's `can-target` covers the widget AND its subtree. */
35
+ pointerEvents?: 'auto' | 'none';
36
+ }
37
+ export declare function View(props: ViewProps): HostNode;
38
+ export interface TextProps extends CommonProps {
39
+ numberOfLines?: number;
40
+ ellipsizeMode?: 'head' | 'middle' | 'tail';
41
+ selectable?: boolean;
42
+ }
43
+ export declare function Text(props: TextProps): HostNode;
44
+ export interface PressableProps extends CommonProps {
45
+ onPress?: () => void;
46
+ disabled?: boolean;
47
+ pointerEvents?: 'auto' | 'none';
48
+ /**
49
+ * Never a function of `{ pressed }`.
50
+ *
51
+ * `PrimitiveChildren` excludes functions, which is the build-time half of ADR
52
+ * 0032 § 7's refusal — the same half `components.ts` gets from `ReactNode`. The
53
+ * runtime half is in `factsOf`, and it is generic rather than per-primitive here
54
+ * because Solid resolves children before any primitive sees them.
55
+ */
56
+ children?: PrimitiveChildren;
57
+ }
58
+ export declare function Pressable(props: PressableProps): HostNode;
59
+ export interface ScrollViewProps extends CommonProps {
60
+ horizontal?: boolean;
61
+ showsVerticalScrollIndicator?: boolean;
62
+ showsHorizontalScrollIndicator?: boolean;
63
+ contentContainerStyle?: StyleInput;
64
+ /** NativeWind's spelling for the inner node's class list. See `ContentSpec.classNameProp`. */
65
+ contentContainerClassName?: ClassNameInput;
66
+ }
67
+ export declare function ScrollView(props: ScrollViewProps): HostNode;
68
+ export interface ActivityIndicatorProps extends CommonProps {
69
+ animating?: boolean;
70
+ size?: 'small' | 'large' | number;
71
+ color?: string;
72
+ hidesWhenStopped?: boolean;
73
+ }
74
+ export declare function ActivityIndicator(props: ActivityIndicatorProps): HostNode;
75
+ export interface TextInputProps extends CommonProps {
76
+ value?: string;
77
+ defaultValue?: string;
78
+ placeholder?: string;
79
+ onChangeText?: (text: string) => void;
80
+ onSubmitEditing?: () => void;
81
+ /** One prop, two widgets: `Gtk.Entry` without it, `Gtk.TextView` with it. */
82
+ multiline?: boolean;
83
+ editable?: boolean;
84
+ maxLength?: number;
85
+ secureTextEntry?: boolean;
86
+ keyboardType?: 'default' | 'email-address' | 'phone-pad' | 'number-pad' | 'numeric' | 'decimal-pad' | 'url';
87
+ }
88
+ export declare function TextInput(props: TextInputProps): HostNode;
89
+ export interface SwitchProps extends CommonProps {
90
+ value?: boolean;
91
+ onValueChange?: (value: boolean) => void;
92
+ disabled?: boolean;
93
+ }
94
+ export declare function Switch(props: SwitchProps): HostNode;
95
+ /**
96
+ * Re-exported, not re-implemented: mounting a Solid tree into a widget the
97
+ * application owns is the host adapter's op, and it is the same one whether the tree
98
+ * is written in GTK's vocabulary or React Native's. Having it here means a consumer
99
+ * of this subpath needs one import to render, and there is still exactly one `mount`.
100
+ */
101
+ export { mount };
@@ -0,0 +1,2 @@
1
+ declare const _default: () => Promise<void>;
2
+ export default _default;
@@ -0,0 +1,28 @@
1
+ import { type StyleTokens } from '@gjsify/gtk-host/style';
2
+ import type { ClassNameSink } from './primitives/style.js';
3
+ export interface StyleConfig {
4
+ readonly tokens: StyleTokens;
5
+ /** Where a declaration set becomes a class name. Defaults to one generated sheet. */
6
+ readonly sheet: ClassNameSink;
7
+ }
8
+ /**
9
+ * Install the project's token scales, and optionally its own sheet.
10
+ *
11
+ * Call it once, before the first render — `AppRegistry.runApplication`'s
12
+ * `createWindow` runs after it, so module scope in the entry file is early enough.
13
+ */
14
+ export declare function configureStyle(config: {
15
+ readonly tokens?: StyleTokens;
16
+ readonly sheet?: ClassNameSink;
17
+ }): void;
18
+ /**
19
+ * The active configuration, building the default sheet on first use.
20
+ *
21
+ * LAZY because `StyleSheet` constructs a `Gtk.CssProvider` and installs it on the
22
+ * default `Gdk.Display`. Building it at module scope would need a display at IMPORT
23
+ * time, which is before `Gtk.init()` in every application — and the failure would
24
+ * be an import that throws rather than a render that does.
25
+ */
26
+ export declare function styleConfig(): StyleConfig;
27
+ /** Test seam: back to `MINIMAL_TOKENS` and no sheet. */
28
+ export declare function resetStyleConfig(): void;
@@ -0,0 +1,38 @@
1
+ /** What this layer does about a React Native export. */
2
+ export type SupportStatus =
3
+ /** Implemented. */
4
+ 'supported'
5
+ /** Implemented with named limits — `limits` lists them. */
6
+ | 'partial'
7
+ /** On the map, not built yet. `tier` says how soon. */
8
+ | 'planned'
9
+ /** Will not be built, and there is a decision behind it. */
10
+ | 'refused'
11
+ /** Exists so an import resolves; does nothing, because a desktop window has no such concept. */
12
+ | 'no-desktop-meaning'
13
+ /** Cannot be built in this toolchain at all — not a scheduling statement. */
14
+ | 'not-reachable';
15
+ /** Priority tiers, as ADR 0032 records them. */
16
+ export type SupportTier = 'P1' | 'P2' | 'P3';
17
+ export interface SupportEntry {
18
+ readonly status: SupportStatus;
19
+ /** Absent for `refused` / `not-reachable`, which are not scheduled at all. */
20
+ readonly tier?: SupportTier;
21
+ /** The GTK or Adwaita counterpart, where there is one. */
22
+ readonly gtk?: string;
23
+ /** One line. It is what the build error and the README both print. */
24
+ readonly reason: string;
25
+ /** For `partial`: what it does not do. */
26
+ readonly limits?: readonly string[];
27
+ }
28
+ export declare const SUPPORT_TABLE: Readonly<Record<string, SupportEntry>>;
29
+ /** Every name `react-native` publicly exports, as this table claims to cover it. */
30
+ export declare const SUPPORTED_NAMES: readonly string[];
31
+ export declare const isImportable: (name: string) => boolean;
32
+ /**
33
+ * The sentence a build error and a runtime throw both print.
34
+ *
35
+ * One function so the two cannot drift into describing the same gap differently —
36
+ * which is the whole reason the table is data rather than prose in two places.
37
+ */
38
+ export declare function explainUnsupported(name: string): string;
@@ -0,0 +1,2 @@
1
+ declare const _default: () => Promise<void>;
2
+ export default _default;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * The error an unimplemented export raises.
3
+ *
4
+ * A named class so a consumer can distinguish "this layer does not do that yet"
5
+ * from a genuine bug in their own code, which a bare `Error` makes impossible.
6
+ */
7
+ export declare class UnsupportedError extends Error {
8
+ readonly name = "UnsupportedError";
9
+ /** The React Native export that was reached for. */
10
+ readonly export: string;
11
+ constructor(exportName: string);
12
+ }
13
+ /**
14
+ * A stand-in for `name` that refuses every use with the table's own sentence.
15
+ *
16
+ * Callable, constructible, and property-readable — all three throw. It is typed
17
+ * `never`-ish on purpose at the call sites that re-export it: the declared type
18
+ * comes from React Native's own, so a consumer's code still type-checks and the
19
+ * refusal is a runtime fact rather than a type error they cannot act on.
20
+ */
21
+ export declare function unsupported(name: string): never;
@@ -0,0 +1,2 @@
1
+ declare const _default: () => Promise<void>;
2
+ export default _default;
package/package.json ADDED
@@ -0,0 +1,111 @@
1
+ {
2
+ "name": "@gjsify/react-native",
3
+ "version": "0.43.0",
4
+ "description": "The React Native view vocabulary rendered onto GTK4/Adwaita, over @gjsify/gtk-host",
5
+ "type": "module",
6
+ "module": "lib/esm/index.js",
7
+ "types": "lib/types/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./lib/types/index.d.ts",
11
+ "default": "./lib/esm/index.js"
12
+ },
13
+ "./solid": {
14
+ "types": "./lib/types/solid/index.d.ts",
15
+ "default": "./lib/esm/solid/index.js"
16
+ },
17
+ "./support-table": {
18
+ "types": "./lib/types/support-table.d.ts",
19
+ "default": "./lib/esm/support-table.js"
20
+ }
21
+ },
22
+ "files": [
23
+ "lib",
24
+ "react-native-surface.json",
25
+ "!lib/types/**/*.spec.d.ts"
26
+ ],
27
+ "scripts": {
28
+ "clear": "gjsify clear lib tmp tsconfig.tsbuildinfo test.gjs.mjs",
29
+ "check": "gjsify tsc --noEmit",
30
+ "build": "gjsify run build:gjsify && gjsify run build:types",
31
+ "build:gjsify": "gjsify build --library 'src/**/*.{ts,js}' --exclude 'src/**/*.spec.{mts,ts}' 'src/test.{mts,ts}'",
32
+ "build:types": "gjsify tsc",
33
+ "build:test": "gjsify run build:test:gjs",
34
+ "build:test:gjs": "gjsify build src/test.mts --app gjs --outfile test.gjs.mjs --define 'process.env.NODE_ENV=\"production\"' --exclude-globals navigator",
35
+ "build:test:node": "gjsify build src/test.mts --app node --outfile dist/test.node.mjs --define 'process.env.NODE_ENV=\"production\"' --exclude-globals navigator",
36
+ "test": "gjsify run build:gjsify && gjsify run build:test && gjsify run test:gjs",
37
+ "test:gjs": "gjsify run test.gjs.mjs",
38
+ "test:gjs-on-node": "gjsify run build:gjsify && gjsify run build:test:node && NODE_GI_NATIVE=${NODE_GI_NATIVE:-prebuild} node dist/test.node.mjs",
39
+ "generate": "node scripts/generate-exports.mjs && gjsify format src/generated"
40
+ },
41
+ "keywords": [
42
+ "gjs",
43
+ "gtk",
44
+ "adwaita",
45
+ "react",
46
+ "react-native"
47
+ ],
48
+ "dependencies": {
49
+ "@gjsify/adwaita-app": "^0.43.0",
50
+ "@gjsify/gtk-host": "^0.43.0"
51
+ },
52
+ "peerDependencies": {
53
+ "react": "^19.2.0",
54
+ "react-reconciler": "^0.33.0",
55
+ "solid-js": "^1.9.0"
56
+ },
57
+ "peerDependenciesMeta": {
58
+ "react": {
59
+ "optional": true
60
+ },
61
+ "react-reconciler": {
62
+ "optional": true
63
+ },
64
+ "solid-js": {
65
+ "optional": true
66
+ }
67
+ },
68
+ "devDependencies": {
69
+ "@gjsify/cli": "^0.43.0",
70
+ "@gjsify/unit": "^0.43.0",
71
+ "@girs/adw-1": "^4.1.0",
72
+ "@girs/gdk-4.0": "^4.1.0",
73
+ "@girs/gjs": "^4.1.0",
74
+ "@girs/gtk-4.0": "^4.1.0",
75
+ "@types/node": "^25.9.2",
76
+ "@types/react": "^19.2.2",
77
+ "@types/react-reconciler": "^0.33.0",
78
+ "react": "^19.2.0",
79
+ "react-reconciler": "^0.33.0",
80
+ "solid-js": "^1.9.0",
81
+ "typescript": "^6.0.3"
82
+ },
83
+ "gjsify": {
84
+ "os": {
85
+ "linux": "supported",
86
+ "darwin": "partial",
87
+ "win32": "partial"
88
+ },
89
+ "osNotes": {
90
+ "darwin": "Platform.OS reads the host OS, so this package owes an OS claim (ADR 0018). Nothing in it is Linux-specific — the widgets are GTK4/Adwaita and the style partition is pure TS — but no leg of its suite has been run on darwin, and ADR 0032's own Consequences put macOS on Node + @gjsify/node-gi + @gjsify/gtk-runtime-darwin-*, whose installable artifact is ADR 0024 stage 4 and does not exist yet.",
91
+ "win32": "As darwin, and one step further: there is no GJS host on Windows at all (ADR 0024 § 4), so the only route is node-gi, and ADR 0024 stage 5 is unbuilt. Platform.OS reports 'windows' correctly; nothing else here has been exercised there."
92
+ },
93
+ "runtimes": {
94
+ "gjs": "polyfill",
95
+ "node": "polyfill",
96
+ "browser": "none",
97
+ "nativescript": "none"
98
+ },
99
+ "tier": 3
100
+ },
101
+ "license": "MIT",
102
+ "repository": {
103
+ "type": "git",
104
+ "url": "git+https://github.com/gjsify/gjsify.git",
105
+ "directory": "packages/framework/react-native"
106
+ },
107
+ "bugs": {
108
+ "url": "https://github.com/gjsify/gjsify/issues"
109
+ },
110
+ "homepage": "https://github.com/gjsify/gjsify/tree/main/packages/framework/react-native#readme"
111
+ }
@@ -0,0 +1,108 @@
1
+ {
2
+ "$comment": [
3
+ "The public export names of react-native, read from the installed package's index.js",
4
+ "rather than from documentation. src/support-table.ts must have exactly these keys.",
5
+ "Committed rather than derived at check time because react-native pulls ~170 MB of",
6
+ "dependencies (hermes-compiler alone is 47 MB) and every workspace install would pay it",
7
+ "for one list of strings. scripts/check-rn-surface.mjs compares the table against this",
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."
11
+ ],
12
+ "reactNativeVersion": "0.85.3",
13
+ "readOn": "2026-08-26",
14
+ "exports": [
15
+ "AccessibilityInfo",
16
+ "ActionSheetIOS",
17
+ "ActivityIndicator",
18
+ "Alert",
19
+ "Animated",
20
+ "AppRegistry",
21
+ "AppState",
22
+ "Appearance",
23
+ "BackHandler",
24
+ "Button",
25
+ "Clipboard",
26
+ "DevMenu",
27
+ "DevSettings",
28
+ "DeviceEventEmitter",
29
+ "DeviceInfo",
30
+ "Dimensions",
31
+ "DrawerLayoutAndroid",
32
+ "DynamicColorIOS",
33
+ "Easing",
34
+ "EventEmitter",
35
+ "FlatList",
36
+ "I18nManager",
37
+ "Image",
38
+ "ImageBackground",
39
+ "InputAccessoryView",
40
+ "InteractionManager",
41
+ "Keyboard",
42
+ "KeyboardAvoidingView",
43
+ "LayoutAnimation",
44
+ "Linking",
45
+ "LogBox",
46
+ "Modal",
47
+ "NativeAppEventEmitter",
48
+ "NativeComponentRegistry",
49
+ "NativeDialogManagerAndroid",
50
+ "NativeEventEmitter",
51
+ "NativeModules",
52
+ "Networking",
53
+ "PanResponder",
54
+ "PermissionsAndroid",
55
+ "PixelRatio",
56
+ "Platform",
57
+ "PlatformColor",
58
+ "Pressable",
59
+ "ProgressBarAndroid",
60
+ "PushNotificationIOS",
61
+ "ReactNativeVersion",
62
+ "RefreshControl",
63
+ "RootTagContext",
64
+ "SafeAreaView",
65
+ "ScrollView",
66
+ "SectionList",
67
+ "Settings",
68
+ "Share",
69
+ "StatusBar",
70
+ "StyleSheet",
71
+ "Switch",
72
+ "Systrace",
73
+ "Text",
74
+ "TextInput",
75
+ "ToastAndroid",
76
+ "Touchable",
77
+ "TouchableHighlight",
78
+ "TouchableNativeFeedback",
79
+ "TouchableOpacity",
80
+ "TouchableWithoutFeedback",
81
+ "TurboModuleRegistry",
82
+ "UIManager",
83
+ "UTFSequence",
84
+ "Vibration",
85
+ "View",
86
+ "VirtualViewMode",
87
+ "VirtualizedList",
88
+ "VirtualizedSectionList",
89
+ "codegenNativeCommands",
90
+ "codegenNativeComponent",
91
+ "experimental_LayoutConformance",
92
+ "findNodeHandle",
93
+ "processColor",
94
+ "registerCallableModule",
95
+ "requireNativeComponent",
96
+ "unstable_NativeText",
97
+ "unstable_NativeView",
98
+ "unstable_TextAncestorContext",
99
+ "unstable_VirtualView",
100
+ "unstable_batchedUpdates",
101
+ "useAnimatedColor",
102
+ "useAnimatedValue",
103
+ "useAnimatedValueXY",
104
+ "useColorScheme",
105
+ "usePressability",
106
+ "useWindowDimensions"
107
+ ]
108
+ }