react-native 0.88.0-rc.2 → 0.88.0-rc.4

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 (45) hide show
  1. package/Libraries/Animated/components/AnimatedScrollView.js +2 -2
  2. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +8 -5
  3. package/Libraries/Components/Button.js +4 -2
  4. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +7 -4
  5. package/Libraries/Components/Pressable/Pressable.js +4 -2
  6. package/Libraries/Components/TextInput/InputAccessoryView.js +8 -6
  7. package/Libraries/Components/TextInput/TextInput.js +5 -5
  8. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +85 -84
  9. package/Libraries/Components/View/ViewAccessibility.js +8 -4
  10. package/Libraries/Core/ReactNativeVersion.js +1 -1
  11. package/Libraries/Image/ImageProps.js +38 -18
  12. package/Libraries/Modal/Modal.js +4 -2
  13. package/Libraries/StyleSheet/StyleSheet.js +3 -9
  14. package/Libraries/StyleSheet/StyleSheet.js.flow +3 -9
  15. package/Libraries/StyleSheet/StyleSheetTypes.js +12 -9
  16. package/Libraries/StyleSheet/splitLayoutProps.js +6 -6
  17. package/Libraries/Text/Text.js +6 -6
  18. package/React/Base/RCTVersion.m +1 -1
  19. package/ReactAndroid/gradle.properties +1 -1
  20. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +1 -1
  21. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java +16 -2
  22. package/ReactAndroid/src/main/res/views/uimanager/values/ids.xml +3 -0
  23. package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
  24. package/gradle/libs.versions.toml +1 -1
  25. package/package.json +8 -8
  26. package/scripts/spm/generate-spm-autolinking.js +20 -9
  27. package/scripts/spm/generate-spm-xcodeproj.js +3 -1
  28. package/sdks/hermes-engine/version.properties +1 -1
  29. package/src/react-private-interface.js +4 -0
  30. package/src/react-private-interface.js.flow +1 -0
  31. package/types_generated/Libraries/Components/ActivityIndicator/ActivityIndicator.d.ts +7 -6
  32. package/types_generated/Libraries/Components/Button.d.ts +30 -29
  33. package/types_generated/Libraries/Components/Keyboard/KeyboardAvoidingView.d.ts +8 -7
  34. package/types_generated/Libraries/Components/Pressable/Pressable.d.ts +5 -4
  35. package/types_generated/Libraries/Components/TextInput/InputAccessoryView.d.ts +7 -6
  36. package/types_generated/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts +26 -25
  37. package/types_generated/Libraries/Components/View/ViewAccessibility.d.ts +23 -22
  38. package/types_generated/Libraries/Image/ImageProps.d.ts +39 -36
  39. package/types_generated/Libraries/Modal/Modal.d.ts +4 -3
  40. package/types_generated/Libraries/StyleSheet/StyleSheet.d.ts +5 -8
  41. package/types_generated/Libraries/StyleSheet/StyleSheetTypes.d.ts +10 -10
  42. package/types_generated/src/private/featureflags/ReactNativeFeatureFlags.d.ts +646 -0
  43. package/types_generated/src/private/featureflags/ReactNativeFeatureFlagsBase.d.ts +24 -0
  44. package/types_generated/src/private/featureflags/specs/NativeReactNativeFeatureFlags.d.ts +117 -0
  45. package/types_generated/src/react-private-interface.d.ts +2 -1
@@ -10,7 +10,7 @@
10
10
 
11
11
  import type {HostInstance} from '../../src/private/types/HostInstance';
12
12
  import type {TextStyleProp} from '../StyleSheet/StyleSheet';
13
- import type {____TextStyle_Internal as TextStyleInternal} from '../StyleSheet/StyleSheetTypes';
13
+ import type {TextStyle} from '../StyleSheet/StyleSheetTypes';
14
14
  import type {GestureResponderEvent} from '../Types/CoreEventTypes';
15
15
  import type {NativeTextProps} from './TextNativeComponent';
16
16
  import type {PressRetentionOffset, TextProps} from './TextProps';
@@ -186,22 +186,22 @@ const TextImpl: component(
186
186
 
187
187
  let processedStyle = flattenStyle<TextStyleProp>(_style);
188
188
  if (processedStyle != null) {
189
- let overrides: ?{...TextStyleInternal} = null;
189
+ let overrides: ?{...TextStyle} = null;
190
190
  if (typeof processedStyle.fontWeight === 'number') {
191
- overrides = overrides || ({} as {...TextStyleInternal});
191
+ overrides = overrides || ({} as {...TextStyle});
192
192
  overrides.fontWeight =
193
193
  // $FlowFixMe[incompatible-type]
194
- String(processedStyle.fontWeight) as TextStyleInternal['fontWeight'];
194
+ String(processedStyle.fontWeight) as TextStyle['fontWeight'];
195
195
  }
196
196
 
197
197
  if (processedStyle.userSelect != null) {
198
198
  _selectable = userSelectToSelectableMap[processedStyle.userSelect];
199
- overrides = overrides || ({} as {...TextStyleInternal});
199
+ overrides = overrides || ({} as {...TextStyle});
200
200
  overrides.userSelect = undefined;
201
201
  }
202
202
 
203
203
  if (processedStyle.verticalAlign != null) {
204
- overrides = overrides || ({} as {...TextStyleInternal});
204
+ overrides = overrides || ({} as {...TextStyle});
205
205
  overrides.textAlignVertical =
206
206
  verticalAlignToTextAlignVerticalMap[processedStyle.verticalAlign];
207
207
  overrides.verticalAlign = undefined;
@@ -24,7 +24,7 @@ NSDictionary* RCTGetReactNativeVersion(void)
24
24
  RCTVersionMajor: @(0),
25
25
  RCTVersionMinor: @(88),
26
26
  RCTVersionPatch: @(0),
27
- RCTVersionPrerelease: @"rc.2",
27
+ RCTVersionPrerelease: @"rc.4",
28
28
  };
29
29
  });
30
30
  return __rnVersion;
@@ -1,4 +1,4 @@
1
- VERSION_NAME=0.88.0-rc.2
1
+ VERSION_NAME=0.88.0-rc.4
2
2
  react.internal.publishingGroup=com.facebook.react
3
3
  react.internal.hermesPublishingGroup=com.facebook.hermes
4
4
 
@@ -15,6 +15,6 @@ public object ReactNativeVersion {
15
15
  "major" to 0,
16
16
  "minor" to 88,
17
17
  "patch" to 0,
18
- "prerelease" to "rc.2"
18
+ "prerelease" to "rc.4"
19
19
  )
20
20
  }
@@ -88,6 +88,8 @@ public abstract class BaseViewManager<T extends View, C extends LayoutShadowNode
88
88
  view.setTag(R.id.accessibility_actions, null);
89
89
  view.setTag(R.id.accessibility_value, null);
90
90
  view.setTag(R.id.accessibility_state_expanded, null);
91
+ view.setTag(R.id.accessibility_state_disabled, null);
92
+ view.setEnabled(true);
91
93
  view.setTag(R.id.view_clipped, null);
92
94
 
93
95
  // This indirectly calls (and resets):
@@ -360,6 +362,7 @@ public abstract class BaseViewManager<T extends View, C extends LayoutShadowNode
360
362
  @ReactProp(name = ViewProps.ACCESSIBILITY_STATE)
361
363
  public void setViewState(@NonNull T view, @Nullable ReadableMap accessibilityState) {
362
364
  if (accessibilityState == null) {
365
+ resetDisabledFromAccessibilityState(view);
363
366
  return;
364
367
  }
365
368
  if (accessibilityState.hasKey("expanded")) {
@@ -381,8 +384,12 @@ public abstract class BaseViewManager<T extends View, C extends LayoutShadowNode
381
384
  view.setSelected(false);
382
385
  }
383
386
  view.setTag(R.id.accessibility_state, accessibilityState);
384
- if (accessibilityState.hasKey("disabled")) {
385
- view.setEnabled(!accessibilityState.getBoolean("disabled"));
387
+ if (accessibilityState.hasKey("disabled") && !accessibilityState.isNull("disabled")) {
388
+ boolean disabled = accessibilityState.getBoolean("disabled");
389
+ view.setEnabled(!disabled);
390
+ view.setTag(R.id.accessibility_state_disabled, disabled);
391
+ } else {
392
+ resetDisabledFromAccessibilityState(view);
386
393
  }
387
394
 
388
395
  // For states which don't have corresponding methods in
@@ -409,6 +416,13 @@ public abstract class BaseViewManager<T extends View, C extends LayoutShadowNode
409
416
  }
410
417
  }
411
418
 
419
+ private static void resetDisabledFromAccessibilityState(@NonNull View view) {
420
+ if (Boolean.TRUE.equals(view.getTag(R.id.accessibility_state_disabled))) {
421
+ view.setEnabled(true);
422
+ }
423
+ view.setTag(R.id.accessibility_state_disabled, null);
424
+ }
425
+
412
426
  private void updateViewContentDescription(@NonNull T view) {
413
427
  final String accessibilityLabel = (String) view.getTag(R.id.accessibility_label);
414
428
  final ReadableMap accessibilityState = (ReadableMap) view.getTag(R.id.accessibility_state);
@@ -36,6 +36,9 @@
36
36
  <!--tag is used to store accessibilityStateExpanded -->
37
37
  <item type="id" name="accessibility_state_expanded"/>
38
38
 
39
+ <!--tag is used to store whether accessibilityState.disabled disabled the view -->
40
+ <item type="id" name="accessibility_state_disabled"/>
41
+
39
42
  <!--tag is used to store accessibilityLabel tag-->
40
43
  <item type="id" name="accessibility_label"/>
41
44
 
@@ -22,7 +22,7 @@ struct ReactNativeVersionType {
22
22
  int32_t Major = 0;
23
23
  int32_t Minor = 88;
24
24
  int32_t Patch = 0;
25
- std::string_view Prerelease = "rc.2";
25
+ std::string_view Prerelease = "rc.4";
26
26
  };
27
27
 
28
28
  constexpr ReactNativeVersionType ReactNativeVersion;
@@ -10,7 +10,7 @@ agp = "9.2.1"
10
10
  androidx-annotation = "1.6.0"
11
11
  androidx-appcompat = "1.7.0"
12
12
  androidx-autofill = "1.3.0"
13
- androidx-collection = "1.4.0"
13
+ androidx-collection = "1.4.4"
14
14
  androidx-benchmark-macro-junit4 = "1.3.3"
15
15
  androidx-profileinstaller = "1.4.1"
16
16
  androidx-swiperefreshlayout = "1.1.0"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native",
3
- "version": "0.88.0-rc.2",
3
+ "version": "0.88.0-rc.4",
4
4
  "description": "A framework for building native apps using React",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -154,18 +154,18 @@
154
154
  }
155
155
  },
156
156
  "dependencies": {
157
- "@react-native/asset-utils": "0.88.0-rc.2",
158
- "@react-native/codegen": "0.88.0-rc.2",
159
- "@react-native/community-cli-plugin": "0.88.0-rc.2",
160
- "@react-native/gradle-plugin": "0.88.0-rc.2",
161
- "@react-native/normalize-colors": "0.88.0-rc.2",
162
- "@react-native/virtualized-lists": "0.88.0-rc.2",
157
+ "@react-native/asset-utils": "0.88.0-rc.4",
158
+ "@react-native/codegen": "0.88.0-rc.4",
159
+ "@react-native/community-cli-plugin": "0.88.0-rc.4",
160
+ "@react-native/gradle-plugin": "0.88.0-rc.4",
161
+ "@react-native/normalize-colors": "0.88.0-rc.4",
162
+ "@react-native/virtualized-lists": "0.88.0-rc.4",
163
163
  "anser": "^1.4.9",
164
164
  "ansi-regex": "^5.0.0",
165
165
  "flow-parser": "0.327.0",
166
166
  "base64-js": "^1.5.1",
167
167
  "flow-enums-runtime": "^0.0.6",
168
- "hermes-compiler": "260318099.0.3",
168
+ "hermes-compiler": "260318099.0.4",
169
169
  "invariant": "^2.2.4",
170
170
  "memoize-one": "^5.0.0",
171
171
  "metro-runtime": "^0.87.1",
@@ -1515,11 +1515,14 @@ function main(argv /*:: ?: Array<string> */) /*: void */ {
1515
1515
  // is the Swift module name (guaranteed unique per dep), so SPM's
1516
1516
  // path-basename-based package identity never collides — even when two
1517
1517
  // libs ship their own Package.swift inside `ios/` (a common convention).
1518
- // Wiped on every run; populated below as self-managed deps are visited.
1518
+ // Populated below as self-managed deps are visited, then pruned. Entries
1519
+ // that do not change keep their inode: Xcode holds each one as a loaded
1520
+ // package root, and recreating one it already resolved fails the build with
1521
+ // "Missing package product".
1519
1522
  const libsDir = path.join(outputDir, 'libs');
1523
+ const wantedLibAliases /*: Set<string> */ = new Set();
1520
1524
  fs.mkdirSync(packagesDir, {recursive: true});
1521
1525
  fs.mkdirSync(headersDir, {recursive: true});
1522
- fs.rmSync(libsDir, {recursive: true, force: true});
1523
1526
  fs.mkdirSync(libsDir, {recursive: true});
1524
1527
 
1525
1528
  const wrapperDirs /*: Map<string, string> */ = new Map();
@@ -1652,6 +1655,7 @@ function main(argv /*:: ?: Array<string> */) /*: void */ {
1652
1655
  const realPackageDir = selfManagedDirs.get(target.name) ?? absSource;
1653
1656
  const aliasPath = path.join(libsDir, target.name);
1654
1657
  ensureSymlink(aliasPath, realPackageDir);
1658
+ wantedLibAliases.add(target.name);
1655
1659
  aggregatorPackageDeps.push({
1656
1660
  swiftName: target.name,
1657
1661
  packagePath: `libs/${target.name}`,
@@ -1779,23 +1783,30 @@ function main(argv /*:: ?: Array<string> */) /*: void */ {
1779
1783
  });
1780
1784
  }
1781
1785
 
1782
- // Prune stale wrappers + header dirs for entries no longer autolinked.
1783
- // Preserve both wrapper-managed and self-managed names; only entries that
1784
- // are no longer autolinked at all get removed. Note: `packages/` only has
1785
- // wrapper-managed names (self-managed deps live in their own source dirs),
1786
- // but `headers/` has both since we populate the central tree for everyone.
1786
+ // Prune stale wrappers, header dirs and lib aliases for entries no longer
1787
+ // autolinked. Preserve both wrapper-managed and self-managed names; only
1788
+ // entries that are no longer autolinked at all get removed. Note:
1789
+ // `packages/` only has wrapper-managed names (self-managed deps live in
1790
+ // their own source dirs), but `headers/` has both since we populate the
1791
+ // central tree for everyone. `libs/` keeps only the aliases written above,
1792
+ // so a dep that stopped being self-managed loses its alias too.
1787
1793
  const activeNames /*: Set<string> */ = new Set([
1788
1794
  ...wrapperDirs.keys(),
1789
1795
  ...selfManagedDirs.keys(),
1790
1796
  ]);
1791
- for (const subdir of ['packages', 'headers']) {
1797
+ const pruneTargets /*: Array<[string, Set<string>]> */ = [
1798
+ ['packages', activeNames],
1799
+ ['headers', activeNames],
1800
+ ['libs', wantedLibAliases],
1801
+ ];
1802
+ for (const [subdir, keptNames] of pruneTargets) {
1792
1803
  const dir = path.join(outputDir, subdir);
1793
1804
  try {
1794
1805
  const existing /*: Array<{name: string, isSymbolicLink(): boolean, isDirectory(): boolean}> */ =
1795
1806
  // $FlowFixMe[incompatible-type] Dirent typing
1796
1807
  fs.readdirSync(dir, {withFileTypes: true});
1797
1808
  for (const entry of existing) {
1798
- if (activeNames.has(entry.name)) continue;
1809
+ if (keptNames.has(entry.name)) continue;
1799
1810
  const stale = path.join(dir, entry.name);
1800
1811
  if (entry.isSymbolicLink() || !entry.isDirectory()) {
1801
1812
  fs.unlinkSync(stale);
@@ -767,7 +767,9 @@ if [ "$STALE" -eq 0 ] && [ -f "$WATCH_FILE" ]; then
767
767
  while IFS= read -r P; do
768
768
  [ -z "$P" ] && continue
769
769
  if [ -d "$P" ]; then
770
- if [ -n "$(find "$P" -newer "$STAMP" -print -quit 2>/dev/null)" ]; then
770
+ # .swiftpm holds Xcode's own per-user scheme state, which it rewrites
771
+ # during a build — reading it as a change makes every IDE build re-sync.
772
+ if [ -n "$(find "$P" -name .swiftpm -prune -o -newer "$STAMP" -print -quit 2>/dev/null)" ]; then
771
773
  STALE=1
772
774
  break
773
775
  fi
@@ -1 +1 @@
1
- HERMES_VERSION_NAME=260318099.0.3
1
+ HERMES_VERSION_NAME=260318099.0.4
@@ -49,6 +49,7 @@ import type {DangerouslyImpreciseStyleProp} from '../Libraries/StyleSheet/StyleS
49
49
  import typeof deepFreezeAndThrowOnMutationInDev from '../Libraries/Utilities/deepFreezeAndThrowOnMutationInDev';
50
50
  import typeof deepDiffer from '../Libraries/Utilities/differ/deepDiffer';
51
51
  import typeof Platform from '../Libraries/Utilities/Platform';
52
+ import typeof * as ReactNativeFeatureFlags from './private/featureflags/ReactNativeFeatureFlags';
52
53
  import typeof dispatchNativeEvent from './private/renderer/events/dispatchNativeEvent';
53
54
  import typeof CustomEvent from './private/webapis/dom/events/CustomEvent';
54
55
 
@@ -70,6 +71,9 @@ module.exports = {
70
71
  get RCTEventEmitter(): RCTEventEmitter {
71
72
  return require('../Libraries/EventEmitter/RCTEventEmitter').default;
72
73
  },
74
+ get ReactNativeFeatureFlags(): ReactNativeFeatureFlags {
75
+ return require('./private/featureflags/ReactNativeFeatureFlags');
76
+ },
73
77
  get ReactNativeViewConfigRegistry(): ReactNativeViewConfigRegistry {
74
78
  return require('../Libraries/Renderer/shims/ReactNativeViewConfigRegistry');
75
79
  },
@@ -24,6 +24,7 @@ export {default as BatchedBridge} from '../Libraries/BatchedBridge/BatchedBridge
24
24
  export {default as ExceptionsManager} from '../Libraries/Core/ExceptionsManager';
25
25
  export {default as Platform} from '../Libraries/Utilities/Platform';
26
26
  export {default as RCTEventEmitter} from '../Libraries/EventEmitter/RCTEventEmitter';
27
+ export * as ReactNativeFeatureFlags from './private/featureflags/ReactNativeFeatureFlags';
27
28
  export * as ReactNativeViewConfigRegistry from '../Libraries/Renderer/shims/ReactNativeViewConfigRegistry';
28
29
  export {default as TextInputState} from '../Libraries/Components/TextInput/TextInputState';
29
30
  export {default as UIManager} from '../Libraries/ReactNative/UIManager';
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @generated SignedSource<<fa869dbe2676b53162a1002160695f4b>>
7
+ * @generated SignedSource<<da0efc5527249ef2db97b8f22dcf8101>>
8
8
  *
9
9
  * This file was translated from Flow by scripts/js-api/build-types/index.js.
10
10
  * Original file: packages/react-native/Libraries/Components/ActivityIndicator/ActivityIndicator.js
@@ -24,18 +24,18 @@ type ActivityIndicatorIOSProps = Readonly<{
24
24
  */
25
25
  hidesWhenStopped?: boolean | undefined;
26
26
  }>;
27
- export interface ActivityIndicatorProps extends Readonly<Omit<ViewProps, keyof ActivityIndicatorIOSProps | "animating" | "color" | "size"> & Omit<ActivityIndicatorIOSProps, "animating" | "color" | "size">> {
27
+ type ActivityIndicatorPropsCore = Readonly<{
28
28
  /**
29
29
  * Whether to show the indicator (`true`) or hide it (`false`).
30
30
  */
31
- readonly animating?: boolean | undefined;
31
+ animating?: boolean | undefined;
32
32
  /**
33
33
  * The foreground color of the spinner.
34
34
  *
35
35
  * @default {@platform android} `null` (system accent default color)
36
36
  * @default {@platform ios} '#999999'
37
37
  */
38
- readonly color?: ColorValue | undefined;
38
+ color?: ColorValue | undefined;
39
39
  /**
40
40
  * Size of the indicator.
41
41
  *
@@ -44,8 +44,9 @@ export interface ActivityIndicatorProps extends Readonly<Omit<ViewProps, keyof A
44
44
  * @type enum(`'small'`, `'large'`)
45
45
  * @type {@platform android} number
46
46
  */
47
- readonly size?: IndicatorSize | undefined;
48
- }
47
+ size?: IndicatorSize | undefined;
48
+ }>;
49
+ export interface ActivityIndicatorProps extends Readonly<Omit<ViewProps, keyof ActivityIndicatorIOSProps | keyof ActivityIndicatorPropsCore | keyof {}> & Omit<ActivityIndicatorIOSProps, keyof ActivityIndicatorPropsCore | keyof {}> & Omit<ActivityIndicatorPropsCore, keyof {}>> {}
49
50
  declare const ActivityIndicator: (props: Omit<ActivityIndicatorProps, "ref"> & {
50
51
  ref?: React.Ref<ActivityIndicatorInstance> | undefined;
51
52
  }) => React.ReactNode;
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @generated SignedSource<<9f799c7242a53a50f1ed28516abaf345>>
7
+ * @generated SignedSource<<191f6fea9c73a3fda442163b2cebbf72>>
8
8
  *
9
9
  * This file was translated from Flow by scripts/js-api/build-types/index.js.
10
10
  * Original file: packages/react-native/Libraries/Components/Button.js
@@ -16,16 +16,16 @@ import { type ColorValue } from "../StyleSheet/StyleSheet";
16
16
  import TouchableNativeFeedback from "./Touchable/TouchableNativeFeedback";
17
17
  import TouchableOpacity from "./Touchable/TouchableOpacity";
18
18
  import * as React from "react";
19
- export interface ButtonProps {
19
+ type ButtonPropsCore = Readonly<{
20
20
  /**
21
21
  * Text to display inside the button. On Android the given title will be
22
22
  * converted to the uppercased form.
23
23
  */
24
- readonly title: string;
24
+ title: string;
25
25
  /**
26
26
  * Handler called when the user taps the button.
27
27
  */
28
- readonly onPress?: ((event?: GestureResponderEvent) => unknown) | undefined;
28
+ onPress?: ((event?: GestureResponderEvent) => unknown) | undefined;
29
29
  /**
30
30
  * If `true`, doesn't play system sound on touch.
31
31
  *
@@ -33,14 +33,14 @@ export interface ButtonProps {
33
33
  *
34
34
  * @default `false`
35
35
  */
36
- readonly touchSoundDisabled?: boolean | undefined;
36
+ touchSoundDisabled?: boolean | undefined;
37
37
  /**
38
38
  * Color of the text (iOS), or background color of the button (Android).
39
39
  *
40
40
  * @default {@platform android} `'#2196F3'`
41
41
  * @default {@platform ios} `'#007AFF'`
42
42
  */
43
- readonly color?: ColorValue | undefined;
43
+ color?: ColorValue | undefined;
44
44
  /**
45
45
  * TV preferred focus.
46
46
  *
@@ -49,7 +49,7 @@ export interface ButtonProps {
49
49
  * @default `false`
50
50
  * @deprecated Use `focusable` instead
51
51
  */
52
- readonly hasTVPreferredFocus?: boolean | undefined;
52
+ hasTVPreferredFocus?: boolean | undefined;
53
53
  /**
54
54
  * Designates the next view to receive focus when the user navigates down. See
55
55
  * the [Android documentation][android:nextFocusDown].
@@ -59,7 +59,7 @@ export interface ButtonProps {
59
59
  *
60
60
  * @platform android, tv
61
61
  */
62
- readonly nextFocusDown?: number | undefined;
62
+ nextFocusDown?: number | undefined;
63
63
  /**
64
64
  * Designates the next view to receive focus when the user navigates forward.
65
65
  * See the [Android documentation][android:nextFocusForward].
@@ -69,7 +69,7 @@ export interface ButtonProps {
69
69
  *
70
70
  * @platform android, tv
71
71
  */
72
- readonly nextFocusForward?: number | undefined;
72
+ nextFocusForward?: number | undefined;
73
73
  /**
74
74
  * Designates the next view to receive focus when the user navigates left. See
75
75
  * the [Android documentation][android:nextFocusLeft].
@@ -79,7 +79,7 @@ export interface ButtonProps {
79
79
  *
80
80
  * @platform android, tv
81
81
  */
82
- readonly nextFocusLeft?: number | undefined;
82
+ nextFocusLeft?: number | undefined;
83
83
  /**
84
84
  * Designates the next view to receive focus when the user navigates right. See
85
85
  * the [Android documentation][android:nextFocusRight].
@@ -89,7 +89,7 @@ export interface ButtonProps {
89
89
  *
90
90
  * @platform android, tv
91
91
  */
92
- readonly nextFocusRight?: number | undefined;
92
+ nextFocusRight?: number | undefined;
93
93
  /**
94
94
  * Designates the next view to receive focus when the user navigates up. See
95
95
  * the [Android documentation][android:nextFocusUp].
@@ -99,44 +99,45 @@ export interface ButtonProps {
99
99
  *
100
100
  * @platform android, tv
101
101
  */
102
- readonly nextFocusUp?: number | undefined;
102
+ nextFocusUp?: number | undefined;
103
103
  /**
104
104
  * Text to display for blindness accessibility features.
105
105
  */
106
- readonly accessibilityLabel?: string | undefined;
106
+ accessibilityLabel?: string | undefined;
107
107
  /**
108
108
  * Alias for `accessibilityLabel`.
109
109
  */
110
- readonly "aria-label"?: string | undefined;
110
+ "aria-label"?: string | undefined;
111
111
  /**
112
112
  * If `true`, disable all interactions for this component.
113
113
  *
114
114
  * @default `false`
115
115
  */
116
- readonly disabled?: boolean | undefined;
117
- readonly testID?: string | undefined;
118
- readonly accessible?: boolean | undefined;
119
- readonly accessibilityActions?: ReadonlyArray<AccessibilityActionInfo> | undefined;
120
- readonly onAccessibilityAction?: ((event: AccessibilityActionEvent) => unknown) | undefined;
121
- readonly accessibilityState?: AccessibilityState | undefined;
116
+ disabled?: boolean | undefined;
117
+ testID?: string | undefined;
118
+ accessible?: boolean | undefined;
119
+ accessibilityActions?: ReadonlyArray<AccessibilityActionInfo> | undefined;
120
+ onAccessibilityAction?: ((event: AccessibilityActionEvent) => unknown) | undefined;
121
+ accessibilityState?: AccessibilityState | undefined;
122
122
  /**
123
123
  * Alias for `accessibilityState`.
124
124
  */
125
- readonly "aria-busy"?: boolean | undefined;
126
- readonly "aria-checked"?: (boolean | undefined) | "mixed" | undefined;
127
- readonly "aria-disabled"?: boolean | undefined;
128
- readonly "aria-expanded"?: boolean | undefined;
129
- readonly "aria-selected"?: boolean | undefined;
130
- readonly importantForAccessibility?: ("auto" | "yes" | "no" | "no-hide-descendants") | undefined;
131
- readonly accessibilityHint?: string | undefined;
125
+ "aria-busy"?: boolean | undefined;
126
+ "aria-checked"?: (boolean | undefined) | "mixed" | undefined;
127
+ "aria-disabled"?: boolean | undefined;
128
+ "aria-expanded"?: boolean | undefined;
129
+ "aria-selected"?: boolean | undefined;
130
+ importantForAccessibility?: ("auto" | "yes" | "no" | "no-hide-descendants") | undefined;
131
+ accessibilityHint?: string | undefined;
132
132
  /**
133
133
  * A BCP 47 language tag for the screen reader to use when reading text
134
134
  * content.
135
135
  *
136
136
  * @platform ios
137
137
  */
138
- readonly accessibilityLanguage?: string | undefined;
139
- }
138
+ accessibilityLanguage?: string | undefined;
139
+ }>;
140
+ export interface ButtonProps extends ButtonPropsCore {}
140
141
  declare const NativeTouchable: typeof TouchableNativeFeedback | typeof TouchableOpacity;
141
142
  export type ButtonInstance = React.ComponentRef<typeof NativeTouchable>;
142
143
  declare const Button: (props: Omit<ButtonProps, "ref"> & {
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @generated SignedSource<<3f541a412817d9e42fac21fbe8ef3bcf>>
7
+ * @generated SignedSource<<04d678da86d68f6cdaf135c50ad68fdc>>
8
8
  *
9
9
  * This file was translated from Flow by scripts/js-api/build-types/index.js.
10
10
  * Original file: packages/react-native/Libraries/Components/Keyboard/KeyboardAvoidingView.js
@@ -14,29 +14,30 @@ import type { ViewStyleProp } from "../../StyleSheet/StyleSheet";
14
14
  import type { ViewProps } from "../View/ViewPropTypes";
15
15
  import View from "../View/View";
16
16
  import * as React from "react";
17
- export interface KeyboardAvoidingViewProps extends Readonly<Omit<ViewProps, "behavior" | "contentContainerStyle" | "enabled" | "keyboardVerticalOffset">> {
17
+ type KeyboardAvoidingViewPropsCore = Readonly<{
18
18
  /**
19
19
  * Specify how to react to the presence of the keyboard.
20
20
  */
21
- readonly behavior?: ("height" | "position" | "padding") | undefined;
21
+ behavior?: ("height" | "position" | "padding") | undefined;
22
22
  /**
23
23
  * The style of the content container (View) when `behavior` is 'position'.
24
24
  */
25
- readonly contentContainerStyle?: ViewStyleProp | undefined;
25
+ contentContainerStyle?: ViewStyleProp | undefined;
26
26
  /**
27
27
  * Whether the `KeyboardAvoidingView` is enabled.
28
28
  *
29
29
  * @default `true`
30
30
  */
31
- readonly enabled?: boolean | undefined;
31
+ enabled?: boolean | undefined;
32
32
  /**
33
33
  * Distance between the top of the user screen and the React Native view,
34
34
  * may be non-zero in some use cases.
35
35
  *
36
36
  * @default `0`
37
37
  */
38
- readonly keyboardVerticalOffset?: number | undefined;
39
- }
38
+ keyboardVerticalOffset?: number | undefined;
39
+ }>;
40
+ export interface KeyboardAvoidingViewProps extends Readonly<Omit<ViewProps, keyof KeyboardAvoidingViewPropsCore | keyof {}> & Omit<KeyboardAvoidingViewPropsCore, keyof {}>> {}
40
41
  type KeyboardAvoidingViewState = {
41
42
  bottom: number;
42
43
  };
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @generated SignedSource<<9e9948e39a13e0f0c56c2649917532e8>>
7
+ * @generated SignedSource<<f107db6ba92c1303aae7d7b76b434dcd>>
8
8
  *
9
9
  * This file was translated from Flow by scripts/js-api/build-types/index.js.
10
10
  * Original file: packages/react-native/Libraries/Components/Pressable/Pressable.js
@@ -19,9 +19,10 @@ import { type PressableAndroidRippleConfig } from "./useAndroidRippleForView";
19
19
  import * as React from "react";
20
20
  export type PressableInstance = HostInstance;
21
21
  export type { PressableAndroidRippleConfig };
22
- export interface PressableStateCallbackType {
23
- readonly pressed: boolean;
24
- }
22
+ type PressableStateCallbackTypeCore = Readonly<{
23
+ pressed: boolean;
24
+ }>;
25
+ export interface PressableStateCallbackType extends PressableStateCallbackTypeCore {}
25
26
  type PressableBaseProps = Readonly<{
26
27
  /**
27
28
  * Whether a press gesture can be interrupted by a parent gesture such as a
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @generated SignedSource<<42855b388c9d324a54c02f458ee8f5ec>>
7
+ * @generated SignedSource<<77b194017f6f3ea0dbc2d05267d4c10e>>
8
8
  *
9
9
  * This file was translated from Flow by scripts/js-api/build-types/index.js.
10
10
  * Original file: packages/react-native/Libraries/Components/TextInput/InputAccessoryView.js
@@ -12,15 +12,16 @@
12
12
 
13
13
  import { type ColorValue, type ViewStyleProp } from "../../StyleSheet/StyleSheet";
14
14
  import * as React from "react";
15
- export interface InputAccessoryViewProps {
15
+ type InputAccessoryViewPropsCore = Readonly<{
16
16
  readonly children: React.ReactNode;
17
17
  /**
18
18
  * An ID used to associate this `InputAccessoryView` to specified `TextInput`(s).
19
19
  */
20
- readonly nativeID?: string | undefined;
21
- readonly style?: ViewStyleProp | undefined;
22
- readonly backgroundColor?: ColorValue | undefined;
23
- }
20
+ nativeID?: string | undefined;
21
+ style?: ViewStyleProp | undefined;
22
+ backgroundColor?: ColorValue | undefined;
23
+ }>;
24
+ export interface InputAccessoryViewProps extends InputAccessoryViewPropsCore {}
24
25
  declare const InputAccessoryView: React.ComponentType<InputAccessoryViewProps>;
25
26
  /**
26
27
  * A component which enables customization of the keyboard input accessory view on iOS. The input accessory view is displayed above the keyboard whenever a `TextInput` has focus. This component can be used to create custom toolbars.