react-native-a11y-order 0.11.0-rc → 0.11.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 (90) hide show
  1. package/README.md +9 -2
  2. package/android/src/main/java/com/a11yorder/core/A11yManagedFocusView.java +29 -0
  3. package/android/src/main/java/com/a11yorder/core/A11yViewOrder.java +1 -1
  4. package/android/src/main/java/com/a11yorder/modules/A11yAnnounceModule.java +20 -7
  5. package/android/src/main/java/com/a11yorder/views/A11yIndexView/A11yIndexViewManager.java +0 -6
  6. package/android/src/oldarch/A11yAnnounceModuleSpec.java +8 -1
  7. package/android/src/oldarch/A11yIndexViewManagerSpec.java +0 -1
  8. package/ios/helpers/RNAOSpeechAttributes.h +35 -0
  9. package/ios/helpers/RNAOSpeechAttributes.mm +64 -0
  10. package/ios/modules/RNAOA11yAnnounceModule.h +13 -9
  11. package/ios/modules/RNAOA11yAnnounceModule.mm +220 -14
  12. package/ios/services/RNAOA11yAnnounceService/RNAOA11yAnnounceService.h +11 -1
  13. package/ios/services/RNAOA11yAnnounceService/RNAOA11yAnnounceService.mm +55 -51
  14. package/ios/views/RNAOA11yIndexView/RNAOA11yIndexView.mm +0 -4
  15. package/ios/views/RNAOA11yIndexView/RNAOA11yIndexViewManager.mm +5 -5
  16. package/ios/views/RNAOA11yPaneTitleView/RNAOA11yPaneTitleView.mm +12 -2
  17. package/ios/views/base/{RNAOA11yAutoFocusView.h → RNAOA11yManagedFocusView.h} +5 -7
  18. package/ios/views/base/{RNAOA11yAutoFocusView.mm → RNAOA11yManagedFocusView.mm} +2 -19
  19. package/ios/views/base/RNAOA11yViewOrder.h +3 -3
  20. package/lib/commonjs/components/A11yCard/A11yCard.ios.js +8 -1
  21. package/lib/commonjs/components/A11yCard/A11yCard.ios.js.map +1 -1
  22. package/lib/commonjs/components/A11yIndex/A11yIndex.js +3 -2
  23. package/lib/commonjs/components/A11yIndex/A11yIndex.js.map +1 -1
  24. package/lib/commonjs/index.js +22 -4
  25. package/lib/commonjs/index.js.map +1 -1
  26. package/lib/commonjs/index.web.js +4 -4
  27. package/lib/commonjs/modules/A11yAnnounceModule.android.js +37 -3
  28. package/lib/commonjs/modules/A11yAnnounceModule.android.js.map +1 -1
  29. package/lib/commonjs/modules/A11yAnnounceModule.js +66 -8
  30. package/lib/commonjs/modules/A11yAnnounceModule.js.map +1 -1
  31. package/lib/commonjs/nativeSpecs/A11yIndexNativeComponent.ts +0 -1
  32. package/lib/commonjs/nativeSpecs/NativeA11yAnnounceModule.js +2 -0
  33. package/lib/commonjs/nativeSpecs/NativeA11yAnnounceModule.js.map +1 -1
  34. package/lib/module/components/A11yCard/A11yCard.ios.js +8 -1
  35. package/lib/module/components/A11yCard/A11yCard.ios.js.map +1 -1
  36. package/lib/module/components/A11yIndex/A11yIndex.js +3 -2
  37. package/lib/module/components/A11yIndex/A11yIndex.js.map +1 -1
  38. package/lib/module/index.js +1 -1
  39. package/lib/module/index.js.map +1 -1
  40. package/lib/module/index.web.js +1 -1
  41. package/lib/module/index.web.js.map +1 -1
  42. package/lib/module/modules/A11yAnnounceModule.android.js +32 -2
  43. package/lib/module/modules/A11yAnnounceModule.android.js.map +1 -1
  44. package/lib/module/modules/A11yAnnounceModule.js +62 -7
  45. package/lib/module/modules/A11yAnnounceModule.js.map +1 -1
  46. package/lib/module/nativeSpecs/A11yIndexNativeComponent.ts +0 -1
  47. package/lib/module/nativeSpecs/NativeA11yAnnounceModule.js +4 -0
  48. package/lib/module/nativeSpecs/NativeA11yAnnounceModule.js.map +1 -1
  49. package/lib/typescript/src/components/A11yCard/A11yCard.ios.d.ts.map +1 -1
  50. package/lib/typescript/src/components/A11yIndex/A11yIndex.d.ts +3 -126
  51. package/lib/typescript/src/components/A11yIndex/A11yIndex.d.ts.map +1 -1
  52. package/lib/typescript/src/components/A11yIndex/A11yIndex.types.d.ts +0 -4
  53. package/lib/typescript/src/components/A11yIndex/A11yIndex.types.d.ts.map +1 -1
  54. package/lib/typescript/src/components/A11yIndex/A11yIndex.web.d.ts +1 -125
  55. package/lib/typescript/src/components/A11yIndex/A11yIndex.web.d.ts.map +1 -1
  56. package/lib/typescript/src/components/A11yOrder/A11yOrder.d.ts +1 -124
  57. package/lib/typescript/src/components/A11yOrder/A11yOrder.d.ts.map +1 -1
  58. package/lib/typescript/src/components/A11yView/A11yView.d.ts +2 -126
  59. package/lib/typescript/src/components/A11yView/A11yView.d.ts.map +1 -1
  60. package/lib/typescript/src/index.d.ts +7 -377
  61. package/lib/typescript/src/index.d.ts.map +1 -1
  62. package/lib/typescript/src/index.web.d.ts +11 -162
  63. package/lib/typescript/src/index.web.d.ts.map +1 -1
  64. package/lib/typescript/src/modules/A11yAnnounceModule.android.d.ts +25 -2
  65. package/lib/typescript/src/modules/A11yAnnounceModule.android.d.ts.map +1 -1
  66. package/lib/typescript/src/modules/A11yAnnounceModule.d.ts +112 -4
  67. package/lib/typescript/src/modules/A11yAnnounceModule.d.ts.map +1 -1
  68. package/lib/typescript/src/nativeSpecs/A11yCardNativeComponent.d.ts +1 -3
  69. package/lib/typescript/src/nativeSpecs/A11yCardNativeComponent.d.ts.map +1 -1
  70. package/lib/typescript/src/nativeSpecs/A11yIndexNativeComponent.d.ts +1 -4
  71. package/lib/typescript/src/nativeSpecs/A11yIndexNativeComponent.d.ts.map +1 -1
  72. package/lib/typescript/src/nativeSpecs/A11yLockNativeComponent.d.ts +1 -3
  73. package/lib/typescript/src/nativeSpecs/A11yLockNativeComponent.d.ts.map +1 -1
  74. package/lib/typescript/src/nativeSpecs/A11yOrderNativeComponent.d.ts +1 -3
  75. package/lib/typescript/src/nativeSpecs/A11yOrderNativeComponent.d.ts.map +1 -1
  76. package/lib/typescript/src/nativeSpecs/A11yPaneTitleNativeComponent.d.ts +1 -3
  77. package/lib/typescript/src/nativeSpecs/A11yPaneTitleNativeComponent.d.ts.map +1 -1
  78. package/lib/typescript/src/nativeSpecs/NativeA11yAnnounceModule.d.ts +22 -2
  79. package/lib/typescript/src/nativeSpecs/NativeA11yAnnounceModule.d.ts.map +1 -1
  80. package/package.json +1 -1
  81. package/src/components/A11yCard/A11yCard.ios.tsx +8 -1
  82. package/src/components/A11yIndex/A11yIndex.tsx +5 -4
  83. package/src/components/A11yIndex/A11yIndex.types.ts +0 -5
  84. package/src/index.ts +12 -1
  85. package/src/index.web.ts +1 -1
  86. package/src/modules/A11yAnnounceModule.android.ts +18 -2
  87. package/src/modules/A11yAnnounceModule.ts +153 -9
  88. package/src/nativeSpecs/A11yIndexNativeComponent.ts +0 -1
  89. package/src/nativeSpecs/NativeA11yAnnounceModule.ts +31 -1
  90. package/android/src/main/java/com/a11yorder/core/A11yAutoFocusView.java +0 -61
@@ -1,179 +1,28 @@
1
+ import { View } from 'react-native';
1
2
  export type { IndexCommands, A11yOrderType, A11yIndexProps, } from './components/A11yIndex/A11yIndex.types';
2
3
  export { A11yOrderTypeEnum } from './components/A11yIndex/A11yIndex.types';
3
4
  export type { ScreenReaderDescendantFocusChangedEvent } from './components/A11yView/A11yView.types';
4
5
  export type { A11yViewProps } from './components/A11yView/A11yView.types';
5
6
  export declare const A11y: {
6
- Order: (props: Omit<import("react-native").ViewProps, keyof {
7
- ref?: React.Ref<React.ComponentRef<typeof import("react-native").unstable_NativeView>>;
8
- }> & {
9
- ref?: React.Ref<React.ComponentRef<typeof import("react-native").unstable_NativeView>>;
10
- }) => React.ReactNode;
11
- Index: import("react").NamedExoticComponent<Readonly<Omit<Readonly<{
12
- onAccessibilityAction?: ((event: import("react-native").AccessibilityActionEvent) => unknown) | undefined;
13
- onAccessibilityTap?: (() => unknown) | undefined;
14
- onLayout?: ((event: import("react-native").LayoutChangeEvent) => unknown) | undefined;
15
- onMagicTap?: (() => unknown) | undefined;
16
- onAccessibilityEscape?: (() => unknown) | undefined;
17
- }>, "onMoveShouldSetResponder" | "onMoveShouldSetResponderCapture" | "onResponderGrant" | "onResponderMove" | "onResponderReject" | "onResponderRelease" | "onResponderStart" | "onResponderEnd" | "onResponderTerminate" | "onResponderTerminationRequest" | "onStartShouldSetResponder" | "onStartShouldSetResponderCapture" | "onMouseEnter" | "onMouseLeave" | "onClick" | "onClickCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onBlur" | "onBlurCapture" | "onFocus" | "onFocusCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "nativeBackgroundAndroid" | "nativeForegroundAndroid" | "renderToHardwareTextureAndroid" | "hasTVPreferredFocus" | "nextFocusDown" | "nextFocusForward" | "nextFocusLeft" | "nextFocusRight" | "nextFocusUp" | "focusable" | "tabIndex" | "shouldRasterizeIOS" | "accessibilityIgnoresInvertColors" | "accessibilityViewIsModal" | "accessibilityShowsLargeContentViewer" | "accessibilityLargeContentTitle" | "aria-modal" | "accessibilityElementsHidden" | "accessibilityLanguage" | "accessibilityRespondsToUserInteraction" | "accessible" | "accessibilityLabel" | "accessibilityHint" | "aria-label" | "accessibilityRole" | "role" | "accessibilityState" | "accessibilityValue" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "accessibilityActions" | "aria-busy" | "aria-checked" | "aria-disabled" | "aria-expanded" | "aria-selected" | "aria-hidden" | "accessibilityLabelledBy" | "aria-labelledby" | "accessibilityLiveRegion" | "aria-live" | "importantForAccessibility" | "screenReaderFocusable" | "children" | "style" | "collapsable" | "collapsableChildren" | "id" | "testID" | "nativeID" | "needsOffscreenAlphaCompositing" | "hitSlop" | "pointerEvents" | "removeClippedSubviews" | "experimental_accessibilityOrder"> & Omit<Readonly<{
18
- onMoveShouldSetResponder?: ((e: import("react-native").GestureResponderEvent) => boolean) | undefined;
19
- onMoveShouldSetResponderCapture?: ((e: import("react-native").GestureResponderEvent) => boolean) | undefined;
20
- onResponderGrant?: ((e: import("react-native").GestureResponderEvent) => void | boolean) | undefined;
21
- onResponderMove?: ((e: import("react-native").GestureResponderEvent) => void) | undefined;
22
- onResponderReject?: ((e: import("react-native").GestureResponderEvent) => void) | undefined;
23
- onResponderRelease?: ((e: import("react-native").GestureResponderEvent) => void) | undefined;
24
- onResponderStart?: ((e: import("react-native").GestureResponderEvent) => void) | undefined;
25
- onResponderEnd?: ((e: import("react-native").GestureResponderEvent) => void) | undefined;
26
- onResponderTerminate?: ((e: import("react-native").GestureResponderEvent) => void) | undefined;
27
- onResponderTerminationRequest?: ((e: import("react-native").GestureResponderEvent) => boolean) | undefined;
28
- onStartShouldSetResponder?: ((e: import("react-native").GestureResponderEvent) => boolean) | undefined;
29
- onStartShouldSetResponderCapture?: ((e: import("react-native").GestureResponderEvent) => boolean) | undefined;
30
- }>, "onMouseEnter" | "onMouseLeave" | "onClick" | "onClickCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onBlur" | "onBlurCapture" | "onFocus" | "onFocusCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "nativeBackgroundAndroid" | "nativeForegroundAndroid" | "renderToHardwareTextureAndroid" | "hasTVPreferredFocus" | "nextFocusDown" | "nextFocusForward" | "nextFocusLeft" | "nextFocusRight" | "nextFocusUp" | "focusable" | "tabIndex" | "shouldRasterizeIOS" | "accessibilityIgnoresInvertColors" | "accessibilityViewIsModal" | "accessibilityShowsLargeContentViewer" | "accessibilityLargeContentTitle" | "aria-modal" | "accessibilityElementsHidden" | "accessibilityLanguage" | "accessibilityRespondsToUserInteraction" | "accessible" | "accessibilityLabel" | "accessibilityHint" | "aria-label" | "accessibilityRole" | "role" | "accessibilityState" | "accessibilityValue" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "accessibilityActions" | "aria-busy" | "aria-checked" | "aria-disabled" | "aria-expanded" | "aria-selected" | "aria-hidden" | "accessibilityLabelledBy" | "aria-labelledby" | "accessibilityLiveRegion" | "aria-live" | "importantForAccessibility" | "screenReaderFocusable" | "children" | "style" | "collapsable" | "collapsableChildren" | "id" | "testID" | "nativeID" | "needsOffscreenAlphaCompositing" | "hitSlop" | "pointerEvents" | "removeClippedSubviews" | "experimental_accessibilityOrder"> & Omit<Readonly<{
31
- onMouseEnter?: ((event: import("react-native").MouseEvent) => void) | undefined;
32
- onMouseLeave?: ((event: import("react-native").MouseEvent) => void) | undefined;
33
- }>, "onClick" | "onClickCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onBlur" | "onBlurCapture" | "onFocus" | "onFocusCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "nativeBackgroundAndroid" | "nativeForegroundAndroid" | "renderToHardwareTextureAndroid" | "hasTVPreferredFocus" | "nextFocusDown" | "nextFocusForward" | "nextFocusLeft" | "nextFocusRight" | "nextFocusUp" | "focusable" | "tabIndex" | "shouldRasterizeIOS" | "accessibilityIgnoresInvertColors" | "accessibilityViewIsModal" | "accessibilityShowsLargeContentViewer" | "accessibilityLargeContentTitle" | "aria-modal" | "accessibilityElementsHidden" | "accessibilityLanguage" | "accessibilityRespondsToUserInteraction" | "accessible" | "accessibilityLabel" | "accessibilityHint" | "aria-label" | "accessibilityRole" | "role" | "accessibilityState" | "accessibilityValue" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "accessibilityActions" | "aria-busy" | "aria-checked" | "aria-disabled" | "aria-expanded" | "aria-selected" | "aria-hidden" | "accessibilityLabelledBy" | "aria-labelledby" | "accessibilityLiveRegion" | "aria-live" | "importantForAccessibility" | "screenReaderFocusable" | "children" | "style" | "collapsable" | "collapsableChildren" | "id" | "testID" | "nativeID" | "needsOffscreenAlphaCompositing" | "hitSlop" | "pointerEvents" | "removeClippedSubviews" | "experimental_accessibilityOrder"> & Omit<Readonly<{
34
- onClick?: ((event: import("react-native").PointerEvent) => void) | undefined;
35
- onClickCapture?: ((event: import("react-native").PointerEvent) => void) | undefined;
36
- onPointerEnter?: ((event: import("react-native").PointerEvent) => void) | undefined;
37
- onPointerEnterCapture?: ((event: import("react-native").PointerEvent) => void) | undefined;
38
- onPointerLeave?: ((event: import("react-native").PointerEvent) => void) | undefined;
39
- onPointerLeaveCapture?: ((event: import("react-native").PointerEvent) => void) | undefined;
40
- onPointerMove?: ((event: import("react-native").PointerEvent) => void) | undefined;
41
- onPointerMoveCapture?: ((event: import("react-native").PointerEvent) => void) | undefined;
42
- onPointerCancel?: ((e: import("react-native").PointerEvent) => void) | undefined;
43
- onPointerCancelCapture?: ((e: import("react-native").PointerEvent) => void) | undefined;
44
- onPointerDown?: ((e: import("react-native").PointerEvent) => void) | undefined;
45
- onPointerDownCapture?: ((e: import("react-native").PointerEvent) => void) | undefined;
46
- onPointerUp?: ((e: import("react-native").PointerEvent) => void) | undefined;
47
- onPointerUpCapture?: ((e: import("react-native").PointerEvent) => void) | undefined;
48
- onPointerOver?: ((e: import("react-native").PointerEvent) => void) | undefined;
49
- onPointerOverCapture?: ((e: import("react-native").PointerEvent) => void) | undefined;
50
- onPointerOut?: ((e: import("react-native").PointerEvent) => void) | undefined;
51
- onPointerOutCapture?: ((e: import("react-native").PointerEvent) => void) | undefined;
52
- onGotPointerCapture?: ((e: import("react-native").PointerEvent) => void) | undefined;
53
- onGotPointerCaptureCapture?: ((e: import("react-native").PointerEvent) => void) | undefined;
54
- onLostPointerCapture?: ((e: import("react-native").PointerEvent) => void) | undefined;
55
- onLostPointerCaptureCapture?: ((e: import("react-native").PointerEvent) => void) | undefined;
56
- }>, "onClick" | "onBlur" | "onBlurCapture" | "onFocus" | "onFocusCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "nativeBackgroundAndroid" | "nativeForegroundAndroid" | "renderToHardwareTextureAndroid" | "hasTVPreferredFocus" | "nextFocusDown" | "nextFocusForward" | "nextFocusLeft" | "nextFocusRight" | "nextFocusUp" | "focusable" | "tabIndex" | "shouldRasterizeIOS" | "accessibilityIgnoresInvertColors" | "accessibilityViewIsModal" | "accessibilityShowsLargeContentViewer" | "accessibilityLargeContentTitle" | "aria-modal" | "accessibilityElementsHidden" | "accessibilityLanguage" | "accessibilityRespondsToUserInteraction" | "accessible" | "accessibilityLabel" | "accessibilityHint" | "aria-label" | "accessibilityRole" | "role" | "accessibilityState" | "accessibilityValue" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "accessibilityActions" | "aria-busy" | "aria-checked" | "aria-disabled" | "aria-expanded" | "aria-selected" | "aria-hidden" | "accessibilityLabelledBy" | "aria-labelledby" | "accessibilityLiveRegion" | "aria-live" | "importantForAccessibility" | "screenReaderFocusable" | "children" | "style" | "collapsable" | "collapsableChildren" | "id" | "testID" | "nativeID" | "needsOffscreenAlphaCompositing" | "hitSlop" | "pointerEvents" | "removeClippedSubviews" | "experimental_accessibilityOrder"> & Omit<Readonly<{
57
- onBlur?: ((event: import("react-native").BlurEvent) => void) | undefined;
58
- onBlurCapture?: ((event: import("react-native").BlurEvent) => void) | undefined;
59
- onFocus?: ((event: import("react-native").FocusEvent) => void) | undefined;
60
- onFocusCapture?: ((event: import("react-native").FocusEvent) => void) | undefined;
61
- }>, "onClick" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "nativeBackgroundAndroid" | "nativeForegroundAndroid" | "renderToHardwareTextureAndroid" | "hasTVPreferredFocus" | "nextFocusDown" | "nextFocusForward" | "nextFocusLeft" | "nextFocusRight" | "nextFocusUp" | "focusable" | "tabIndex" | "shouldRasterizeIOS" | "accessibilityIgnoresInvertColors" | "accessibilityViewIsModal" | "accessibilityShowsLargeContentViewer" | "accessibilityLargeContentTitle" | "aria-modal" | "accessibilityElementsHidden" | "accessibilityLanguage" | "accessibilityRespondsToUserInteraction" | "accessible" | "accessibilityLabel" | "accessibilityHint" | "aria-label" | "accessibilityRole" | "role" | "accessibilityState" | "accessibilityValue" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "accessibilityActions" | "aria-busy" | "aria-checked" | "aria-disabled" | "aria-expanded" | "aria-selected" | "aria-hidden" | "accessibilityLabelledBy" | "aria-labelledby" | "accessibilityLiveRegion" | "aria-live" | "importantForAccessibility" | "screenReaderFocusable" | "children" | "style" | "collapsable" | "collapsableChildren" | "id" | "testID" | "nativeID" | "needsOffscreenAlphaCompositing" | "hitSlop" | "pointerEvents" | "removeClippedSubviews" | "experimental_accessibilityOrder"> & Omit<Readonly<{
62
- onTouchCancel?: ((e: import("react-native").GestureResponderEvent) => void) | undefined;
63
- onTouchCancelCapture?: ((e: import("react-native").GestureResponderEvent) => void) | undefined;
64
- onTouchEnd?: ((e: import("react-native").GestureResponderEvent) => void) | undefined;
65
- onTouchEndCapture?: ((e: import("react-native").GestureResponderEvent) => void) | undefined;
66
- onTouchMove?: ((e: import("react-native").GestureResponderEvent) => void) | undefined;
67
- onTouchMoveCapture?: ((e: import("react-native").GestureResponderEvent) => void) | undefined;
68
- onTouchStart?: ((e: import("react-native").GestureResponderEvent) => void) | undefined;
69
- onTouchStartCapture?: ((e: import("react-native").GestureResponderEvent) => void) | undefined;
70
- }>, "onClick" | "nativeBackgroundAndroid" | "nativeForegroundAndroid" | "renderToHardwareTextureAndroid" | "hasTVPreferredFocus" | "nextFocusDown" | "nextFocusForward" | "nextFocusLeft" | "nextFocusRight" | "nextFocusUp" | "focusable" | "tabIndex" | "shouldRasterizeIOS" | "accessibilityIgnoresInvertColors" | "accessibilityViewIsModal" | "accessibilityShowsLargeContentViewer" | "accessibilityLargeContentTitle" | "aria-modal" | "accessibilityElementsHidden" | "accessibilityLanguage" | "accessibilityRespondsToUserInteraction" | "accessible" | "accessibilityLabel" | "accessibilityHint" | "aria-label" | "accessibilityRole" | "role" | "accessibilityState" | "accessibilityValue" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "accessibilityActions" | "aria-busy" | "aria-checked" | "aria-disabled" | "aria-expanded" | "aria-selected" | "aria-hidden" | "accessibilityLabelledBy" | "aria-labelledby" | "accessibilityLiveRegion" | "aria-live" | "importantForAccessibility" | "screenReaderFocusable" | "children" | "style" | "collapsable" | "collapsableChildren" | "id" | "testID" | "nativeID" | "needsOffscreenAlphaCompositing" | "hitSlop" | "pointerEvents" | "removeClippedSubviews" | "experimental_accessibilityOrder"> & Omit<Readonly<{
71
- nativeBackgroundAndroid?: import("react-native/types_generated/Libraries/Components/View/ViewPropTypes").AndroidDrawable | undefined;
72
- nativeForegroundAndroid?: import("react-native/types_generated/Libraries/Components/View/ViewPropTypes").AndroidDrawable | undefined;
73
- renderToHardwareTextureAndroid?: boolean | undefined;
74
- hasTVPreferredFocus?: boolean | undefined;
75
- nextFocusDown?: number | undefined;
76
- nextFocusForward?: number | undefined;
77
- nextFocusLeft?: number | undefined;
78
- nextFocusRight?: number | undefined;
79
- nextFocusUp?: number | undefined;
80
- focusable?: boolean | undefined;
81
- tabIndex?: 0 | -1;
82
- onClick?: ((event: import("react-native").GestureResponderEvent) => unknown) | undefined;
83
- }>, "shouldRasterizeIOS" | "accessibilityIgnoresInvertColors" | "accessibilityViewIsModal" | "accessibilityShowsLargeContentViewer" | "accessibilityLargeContentTitle" | "aria-modal" | "accessibilityElementsHidden" | "accessibilityLanguage" | "accessibilityRespondsToUserInteraction" | "accessible" | "accessibilityLabel" | "accessibilityHint" | "aria-label" | "accessibilityRole" | "role" | "accessibilityState" | "accessibilityValue" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "accessibilityActions" | "aria-busy" | "aria-checked" | "aria-disabled" | "aria-expanded" | "aria-selected" | "aria-hidden" | "accessibilityLabelledBy" | "aria-labelledby" | "accessibilityLiveRegion" | "aria-live" | "importantForAccessibility" | "screenReaderFocusable" | "children" | "style" | "collapsable" | "collapsableChildren" | "id" | "testID" | "nativeID" | "needsOffscreenAlphaCompositing" | "hitSlop" | "pointerEvents" | "removeClippedSubviews" | "experimental_accessibilityOrder"> & Omit<Readonly<{
84
- shouldRasterizeIOS?: boolean | undefined;
85
- }>, "accessibilityIgnoresInvertColors" | "accessibilityViewIsModal" | "accessibilityShowsLargeContentViewer" | "accessibilityLargeContentTitle" | "aria-modal" | "accessibilityElementsHidden" | "accessibilityLanguage" | "accessibilityRespondsToUserInteraction" | "accessible" | "accessibilityLabel" | "accessibilityHint" | "aria-label" | "accessibilityRole" | "role" | "accessibilityState" | "accessibilityValue" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "accessibilityActions" | "aria-busy" | "aria-checked" | "aria-disabled" | "aria-expanded" | "aria-selected" | "aria-hidden" | "accessibilityLabelledBy" | "aria-labelledby" | "accessibilityLiveRegion" | "aria-live" | "importantForAccessibility" | "screenReaderFocusable" | "children" | "style" | "collapsable" | "collapsableChildren" | "id" | "testID" | "nativeID" | "needsOffscreenAlphaCompositing" | "hitSlop" | "pointerEvents" | "removeClippedSubviews" | "experimental_accessibilityOrder"> & Omit<Readonly<Omit<Readonly<{
86
- accessibilityLabelledBy?: (string | undefined) | (Array<string> | undefined);
87
- "aria-labelledby"?: string | undefined;
88
- accessibilityLiveRegion?: ("none" | "polite" | "assertive") | undefined;
89
- "aria-live"?: ("polite" | "assertive" | "off") | undefined;
90
- importantForAccessibility?: ("auto" | "yes" | "no" | "no-hide-descendants") | undefined;
91
- screenReaderFocusable?: boolean;
92
- }>, "accessibilityIgnoresInvertColors" | "accessibilityViewIsModal" | "accessibilityShowsLargeContentViewer" | "accessibilityLargeContentTitle" | "aria-modal" | "accessibilityElementsHidden" | "accessibilityLanguage" | "accessibilityRespondsToUserInteraction" | "accessible" | "accessibilityLabel" | "accessibilityHint" | "aria-label" | "accessibilityRole" | "role" | "accessibilityState" | "accessibilityValue" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "accessibilityActions" | "aria-busy" | "aria-checked" | "aria-disabled" | "aria-expanded" | "aria-selected" | "aria-hidden"> & Omit<Readonly<{
93
- accessibilityIgnoresInvertColors?: boolean | undefined;
94
- accessibilityViewIsModal?: boolean | undefined;
95
- accessibilityShowsLargeContentViewer?: boolean | undefined;
96
- accessibilityLargeContentTitle?: string | undefined;
97
- "aria-modal"?: boolean | undefined;
98
- accessibilityElementsHidden?: boolean | undefined;
99
- accessibilityLanguage?: string | undefined;
100
- accessibilityRespondsToUserInteraction?: boolean | undefined;
101
- }>, "accessible" | "accessibilityLabel" | "accessibilityHint" | "aria-label" | "accessibilityRole" | "role" | "accessibilityState" | "accessibilityValue" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "accessibilityActions" | "aria-busy" | "aria-checked" | "aria-disabled" | "aria-expanded" | "aria-selected" | "aria-hidden"> & {
102
- accessible?: boolean | undefined;
103
- accessibilityLabel?: string | undefined;
104
- accessibilityHint?: string | undefined;
105
- "aria-label"?: string | undefined;
106
- accessibilityRole?: import("react-native").AccessibilityRole | undefined;
107
- role?: import("react-native").Role | undefined;
108
- accessibilityState?: import("react-native").AccessibilityState | undefined;
109
- accessibilityValue?: import("react-native").AccessibilityValue | undefined;
110
- "aria-valuemax"?: import("react-native").AccessibilityValue["max"] | undefined;
111
- "aria-valuemin"?: import("react-native").AccessibilityValue["min"] | undefined;
112
- "aria-valuenow"?: import("react-native").AccessibilityValue["now"] | undefined;
113
- "aria-valuetext"?: import("react-native").AccessibilityValue["text"] | undefined;
114
- accessibilityActions?: ReadonlyArray<import("react-native/types_generated/Libraries/Components/View/ViewAccessibility").AccessibilityActionInfo> | undefined;
115
- "aria-busy"?: boolean | undefined;
116
- "aria-checked"?: (boolean | undefined) | "mixed";
117
- "aria-disabled"?: boolean | undefined;
118
- "aria-expanded"?: boolean | undefined;
119
- "aria-selected"?: boolean | undefined;
120
- "aria-hidden"?: boolean | undefined;
121
- }>, "children" | "style" | "collapsable" | "collapsableChildren" | "id" | "testID" | "nativeID" | "needsOffscreenAlphaCompositing" | "hitSlop" | "pointerEvents" | "removeClippedSubviews" | "experimental_accessibilityOrder"> & Omit<Readonly<{
122
- children?: React.ReactNode;
123
- style?: import("react-native/types_generated/Libraries/StyleSheet/StyleSheet").ViewStyleProp | undefined;
124
- collapsable?: boolean | undefined;
125
- collapsableChildren?: boolean | undefined;
126
- id?: string;
127
- testID?: string | undefined;
128
- nativeID?: string | undefined;
129
- needsOffscreenAlphaCompositing?: boolean | undefined;
130
- hitSlop?: import("react-native/types_generated/Libraries/StyleSheet/EdgeInsetsPropType").EdgeInsetsOrSizeProp | undefined;
131
- pointerEvents?: ("auto" | "box-none" | "box-only" | "none") | undefined;
132
- removeClippedSubviews?: boolean | undefined;
133
- experimental_accessibilityOrder?: Array<string> | undefined;
134
- }>, never>> & {
7
+ Order: typeof View;
8
+ Index: import("react").MemoExoticComponent<import("react").ForwardRefExoticComponent<import("react-native").ViewProps & {
135
9
  children: React.ReactNode;
136
10
  index?: number;
137
11
  orderType?: import(".").A11yOrderType;
138
12
  a11yUIContainer?: import("./components/A11yIndex/A11yIndex.types").A11yUIContainerType;
139
13
  shouldGroupAccessibilityChildren?: boolean;
140
- autoFocus?: boolean;
141
14
  onScreenReaderFocused?: () => void;
142
15
  onScreenReaderSubViewFocusChange?: (isFocused: boolean) => void;
143
16
  onScreenReaderSubViewFocused?: () => void;
144
17
  onScreenReaderSubViewBlurred?: () => void;
145
18
  onScreenReaderDescendantFocusChanged?: (e: import(".").ScreenReaderDescendantFocusChangedEvent) => void;
146
- } & import("react").RefAttributes<import(".").IndexCommands>>;
147
- View: (props: Omit<import("react-native").ViewProps, keyof {
148
- ref?: React.Ref<React.ComponentRef<typeof import("react-native").unstable_NativeView>>;
149
- }> & {
150
- ref?: React.Ref<React.ComponentRef<typeof import("react-native").unstable_NativeView>>;
151
- }) => React.ReactNode;
152
- PaneTitle: (props: Omit<import("react-native").ViewProps, keyof {
153
- ref?: React.Ref<React.ComponentRef<typeof import("react-native").unstable_NativeView>>;
154
- }> & {
155
- ref?: React.Ref<React.ComponentRef<typeof import("react-native").unstable_NativeView>>;
156
- }) => React.ReactNode;
157
- ScreenChange: (props: Omit<import("react-native").ViewProps, keyof {
158
- ref?: React.Ref<React.ComponentRef<typeof import("react-native").unstable_NativeView>>;
159
- }> & {
160
- ref?: React.Ref<React.ComponentRef<typeof import("react-native").unstable_NativeView>>;
161
- }) => React.ReactNode;
162
- FocusFrame: (props: Omit<import("react-native").ViewProps, keyof {
163
- ref?: React.Ref<React.ComponentRef<typeof import("react-native").unstable_NativeView>>;
164
- }> & {
165
- ref?: React.Ref<React.ComponentRef<typeof import("react-native").unstable_NativeView>>;
166
- }) => React.ReactNode;
167
- FocusTrap: (props: Omit<import("react-native").ViewProps, keyof {
168
- ref?: React.Ref<React.ComponentRef<typeof import("react-native").unstable_NativeView>>;
169
- }> & {
170
- ref?: React.Ref<React.ComponentRef<typeof import("react-native").unstable_NativeView>>;
171
- }) => React.ReactNode;
172
- Card: (props: Omit<import("react-native").ViewProps, keyof {
173
- ref?: React.Ref<React.ComponentRef<typeof import("react-native").unstable_NativeView>>;
174
- }> & {
175
- ref?: React.Ref<React.ComponentRef<typeof import("react-native").unstable_NativeView>>;
176
- }) => React.ReactNode;
19
+ } & import("react").RefAttributes<import(".").IndexCommands>>>;
20
+ View: typeof View;
21
+ PaneTitle: typeof View;
22
+ ScreenChange: typeof View;
23
+ FocusFrame: typeof View;
24
+ FocusTrap: typeof View;
25
+ Card: typeof View;
177
26
  };
178
- export { A11yModule } from './modules/A11yAnnounceModule';
27
+ export { ScreenReader } from './modules/A11yAnnounceModule';
179
28
  //# sourceMappingURL=index.web.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../src/index.web.ts"],"names":[],"mappings":"AAGA,YAAY,EACV,aAAa,EACb,aAAa,EACb,cAAc,GACf,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAE3E,YAAY,EAAE,uCAAuC,EAAE,MAAM,sCAAsC,CAAC;AAEpG,YAAY,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAE1E,eAAO,MAAM,IAAI;;WAYsH,CAAC;;WAAyE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAA3E,CAAC;;WAAyE,CAAC;;;WAA3E,CAAC;;WAAyE,CAAC;;;WAA3E,CAAC;;WAAyE,CAAC;;;WAA3E,CAAC;;WAAyE,CAAC;;;WAA3E,CAAC;;WAAyE,CAAC;;;WAA3E,CAAC;;WAAyE,CAAC;;CAHjN,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../src/index.web.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,YAAY,EACV,aAAa,EACb,aAAa,EACb,cAAc,GACf,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAE3E,YAAY,EAAE,uCAAuC,EAAE,MAAM,sCAAsC,CAAC;AAEpG,YAAY,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAE1E,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;CAShB,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC"}
@@ -1,4 +1,27 @@
1
- export declare const A11yModule: {
2
- announce: (announcement: string) => void;
1
+ export declare const ScreenReader: {
2
+ announce: (message: string) => Promise<{
3
+ id: string;
4
+ status: "fired";
5
+ }>;
6
+ cancel: () => Promise<{
7
+ id: string;
8
+ status: "cancelled";
9
+ }>;
10
+ cancelAll: () => Promise<{
11
+ id: string;
12
+ status: "cancelled";
13
+ }>;
3
14
  };
15
+ export declare const announce: (message: string) => Promise<{
16
+ id: string;
17
+ status: "fired";
18
+ }>;
19
+ export declare const cancel: () => Promise<{
20
+ id: string;
21
+ status: "cancelled";
22
+ }>;
23
+ export declare const cancelAll: () => Promise<{
24
+ id: string;
25
+ status: "cancelled";
26
+ }>;
4
27
  //# sourceMappingURL=A11yAnnounceModule.android.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"A11yAnnounceModule.android.d.ts","sourceRoot":"","sources":["../../../../src/modules/A11yAnnounceModule.android.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU;;CAEtB,CAAC"}
1
+ {"version":3,"file":"A11yAnnounceModule.android.d.ts","sourceRoot":"","sources":["../../../../src/modules/A11yAnnounceModule.android.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY;wBACH,MAAM;;;;;;;;;;;;CAM3B,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,SAAS,MAAM;;;EAGvC,CAAC;AAEF,eAAO,MAAM,MAAM;;;EACwC,CAAC;AAC5D,eAAO,MAAM,SAAS;;;EACqC,CAAC"}
@@ -1,6 +1,114 @@
1
- export declare const A11yAnnounce: any;
2
- export declare function announce(message: string): void;
3
- export declare const A11yModule: {
4
- announce: typeof announce;
1
+ export type AnnouncePriority = 'low' | 'default' | 'high';
2
+ export type AnnounceStatus = 'spoken' | 'fired' | 'cancelled';
3
+ export type AnnounceOptions = {
4
+ /**
5
+ * Controls urgency. iOS 17+: maps to `UIAccessibilityPriority`.
6
+ *
7
+ * - `'low'` — spoken only when the screen reader is fully idle
8
+ * - `'default'` — standard queued announcement (default)
9
+ * - `'high'` — may preempt lower-priority pending items
10
+ */
11
+ priority?: AnnouncePriority;
12
+ /**
13
+ * When `true`, waits for current speech before speaking.
14
+ * When `false`, may interrupt current speech.
15
+ * Default: `true`
16
+ */
17
+ queue?: boolean;
18
+ /**
19
+ * Navigation-aware mode. When `true`, the announcement waits for:
20
+ * - Active navigation transitions to finish (1 s lock after screen change)
21
+ * - The screen reader to have a focused element
22
+ * - A 300 ms debounce to prevent overlap with focus changes
23
+ *
24
+ * Promise resolves when the service **actually fires** the announcement
25
+ * (not just when it's enqueued), so `await` is meaningful.
26
+ * Default: `false`
27
+ */
28
+ calm?: boolean;
29
+ /**
30
+ * Explicit delay in milliseconds before the announcement is posted.
31
+ * In `calm` mode the service manages its own timing; this is ignored.
32
+ * Default: `0`
33
+ */
34
+ delayMs?: number;
35
+ /**
36
+ * iOS-only speech characteristics. No-op on Android.
37
+ * Only relevant in direct mode (`calm: false`).
38
+ */
39
+ speech?: {
40
+ /**
41
+ * BCP-47 language tag (e.g. `'fr-FR'`). Defaults to the system language.
42
+ * @platform ios
43
+ */
44
+ language?: string;
45
+ /**
46
+ * Voice pitch multiplier, range `0.0`–`2.0`. Default: `1.0`.
47
+ * @platform ios
48
+ */
49
+ pitch?: number;
50
+ /**
51
+ * Spell each character individually.
52
+ * Useful for codes, CAPTCHAs, or abbreviations.
53
+ * @platform ios
54
+ */
55
+ spellOut?: boolean;
56
+ /**
57
+ * Read punctuation marks aloud (e.g. "comma", "period").
58
+ * @platform ios
59
+ */
60
+ punctuation?: boolean;
61
+ /**
62
+ * IPA pronunciation hint applied to the entire string.
63
+ * @platform ios
64
+ */
65
+ ipaNotation?: string;
66
+ };
67
+ };
68
+ export type AnnouncementResult = {
69
+ /** UUID assigned at enqueue time. */
70
+ id: string;
71
+ /**
72
+ * - `'spoken'` — VoiceOver confirmed full speech (iOS direct mode only).
73
+ * - `'fired'` — posted to the screen reader; completion not confirmed.
74
+ * Always the case on Android. iOS calm mode resolves here
75
+ * once the service actually fires the announcement.
76
+ * - `'cancelled'` — explicitly cancelled via `cancel()` or `cancelAll()`.
77
+ */
78
+ status: AnnounceStatus;
79
+ };
80
+ /**
81
+ * Posts a screen reader announcement.
82
+ *
83
+ * **calm mode** (`calm: true`): navigation-aware — waits for transitions to
84
+ * settle and for VoiceOver/TalkBack to have a focused element. Promise
85
+ * resolves when the announcement is **actually fired** (not just enqueued).
86
+ *
87
+ * **direct mode** (`calm: false`, default): posts immediately with speech
88
+ * attributes. On iOS, Promise resolves when VoiceOver confirms speech finished
89
+ * (`status: 'spoken'`) or was interrupted (`status: 'fired'`).
90
+ * On Android, always resolves immediately with `status: 'fired'`.
91
+ */
92
+ export declare function announce(message: string, options?: AnnounceOptions): Promise<AnnouncementResult>;
93
+ /**
94
+ * Cancels the announcement with the given `id`.
95
+ * In calm mode, removes it from the service queue if not yet fired.
96
+ * In direct mode, interrupts the active announcement if it matches.
97
+ */
98
+ export declare function cancel(id: string): Promise<AnnouncementResult>;
99
+ /**
100
+ * Cancels all pending and active announcements.
101
+ * Calm-mode promises resolve with `status: 'cancelled'`.
102
+ */
103
+ export declare function cancelAll(): Promise<AnnouncementResult>;
104
+ export declare const ScreenReader: {
105
+ /**
106
+ * Posts a navigation-aware announcement (calm mode).
107
+ * Waits for transitions to finish before speaking.
108
+ * Promise resolves when the announcement is actually fired.
109
+ */
110
+ announce: (message: string, options?: AnnounceOptions) => Promise<AnnouncementResult>;
111
+ cancel: typeof cancel;
112
+ cancelAll: typeof cancelAll;
5
113
  };
6
114
  //# sourceMappingURL=A11yAnnounceModule.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"A11yAnnounceModule.d.ts","sourceRoot":"","sources":["../../../../src/modules/A11yAnnounceModule.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,YAAY,KAStB,CAAC;AAEJ,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,QAEvC;AAED,eAAO,MAAM,UAAU;;CAEtB,CAAC"}
1
+ {"version":3,"file":"A11yAnnounceModule.d.ts","sourceRoot":"","sources":["../../../../src/modules/A11yAnnounceModule.ts"],"names":[],"mappings":"AA6BA,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC;AAE1D,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,OAAO,GAAG,WAAW,CAAC;AAE9D,MAAM,MAAM,eAAe,GAAG;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAE5B;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;;;;;;;OASG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,MAAM,CAAC,EAAE;QACP;;;WAGG;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC;QAElB;;;WAGG;QACH,KAAK,CAAC,EAAE,MAAM,CAAC;QAEf;;;;WAIG;QACH,QAAQ,CAAC,EAAE,OAAO,CAAC;QAEnB;;;WAGG;QACH,WAAW,CAAC,EAAE,OAAO,CAAC;QAEtB;;;WAGG;QACH,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,qCAAqC;IACrC,EAAE,EAAE,MAAM,CAAC;IACX;;;;;;OAMG;IACH,MAAM,EAAE,cAAc,CAAC;CACxB,CAAC;AAIF;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CACtB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,kBAAkB,CAAC,CAM7B;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAE9D;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAEvD;AAID,eAAO,MAAM,YAAY;IACvB;;;;OAIG;wBACiB,MAAM,YAAY,eAAe;;;CAKtD,CAAC"}
@@ -1,8 +1,6 @@
1
1
  import type { ViewProps } from 'react-native';
2
2
  export interface A11yCardNativeComponentProps extends ViewProps {
3
3
  }
4
- declare const _default: (props: Omit<A11yCardNativeComponentProps, "ref"> & {
5
- ref?: React.Ref<import("react-native").HostInstance>;
6
- }) => React.ReactNode;
4
+ declare const _default: import("react-native/Libraries/Utilities/codegenNativeComponent").NativeComponentType<A11yCardNativeComponentProps>;
7
5
  export default _default;
8
6
  //# sourceMappingURL=A11yCardNativeComponent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"A11yCardNativeComponent.d.ts","sourceRoot":"","sources":["../../../../src/nativeSpecs/A11yCardNativeComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAI9C,MAAM,WAAW,4BAA6B,SAAQ,SAAS;CAAG;;;;AAElE,wBAEE"}
1
+ {"version":3,"file":"A11yCardNativeComponent.d.ts","sourceRoot":"","sources":["../../../../src/nativeSpecs/A11yCardNativeComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAI9C,MAAM,WAAW,4BAA6B,SAAQ,SAAS;CAAG;;AAElE,wBAEE"}
@@ -13,7 +13,6 @@ export interface A11yIndexNativeComponentProps extends ViewProps {
13
13
  orderKey?: string;
14
14
  orderFocusType?: Int32;
15
15
  shouldGroupAccessibilityChildren?: Int32;
16
- autoFocus?: boolean;
17
16
  descendantFocusChangedEnabled?: boolean;
18
17
  onScreenReaderFocused?: DirectEventHandler<{}>;
19
18
  onScreenReaderDescendantFocusChanged?: DirectEventHandler<ScreenReaderDescendantFocusChanged>;
@@ -24,8 +23,6 @@ export interface NativeCommands {
24
23
  focus: (viewRef: React.ElementRef<ComponentType>) => void;
25
24
  }
26
25
  export declare const Commands: NativeCommands;
27
- declare const _default: (props: Omit<A11yIndexNativeComponentProps, "ref"> & {
28
- ref?: React.Ref<import("react-native").HostInstance>;
29
- }) => React.ReactNode;
26
+ declare const _default: import("react-native/Libraries/Utilities/codegenNativeComponent").NativeComponentType<A11yIndexNativeComponentProps>;
30
27
  export default _default;
31
28
  //# sourceMappingURL=A11yIndexNativeComponent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"A11yIndexNativeComponent.d.ts","sourceRoot":"","sources":["../../../../src/nativeSpecs/A11yIndexNativeComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EACV,kBAAkB,EAClB,KAAK,EACN,MAAM,2CAA2C,CAAC;AAMnD,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC;IAC7C,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC,CAAC;AAEH,MAAM,MAAM,kCAAkC,GAAG,QAAQ,CAAC;IACxD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC,CAAC;AAEH,MAAM,WAAW,6BAA8B,SAAQ,SAAS;IAC9D,UAAU,CAAC,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,KAAK,CAAC;IACvB,gCAAgC,CAAC,EAAE,KAAK,CAAC;IAEzC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6BAA6B,CAAC,EAAE,OAAO,CAAC;IAExC,qBAAqB,CAAC,EAAE,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAC/C,oCAAoC,CAAC,EAAE,kBAAkB,CAAC,kCAAkC,CAAC,CAAC;IAC9F,yBAAyB,CAAC,EAAE,kBAAkB,CAAC,uBAAuB,CAAC,CAAC;IAExE,aAAa,CAAC,EAAE,KAAK,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAE7B,KAAK,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;CAC3D;AAED,eAAO,MAAM,QAAQ,EAAE,cAErB,CAAC;;;;AAEH,wBAEE"}
1
+ {"version":3,"file":"A11yIndexNativeComponent.d.ts","sourceRoot":"","sources":["../../../../src/nativeSpecs/A11yIndexNativeComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EACV,kBAAkB,EAClB,KAAK,EACN,MAAM,2CAA2C,CAAC;AAMnD,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC;IAC7C,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC,CAAC;AAEH,MAAM,MAAM,kCAAkC,GAAG,QAAQ,CAAC;IACxD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC,CAAC;AAEH,MAAM,WAAW,6BAA8B,SAAQ,SAAS;IAC9D,UAAU,CAAC,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,KAAK,CAAC;IACvB,gCAAgC,CAAC,EAAE,KAAK,CAAC;IAEzC,6BAA6B,CAAC,EAAE,OAAO,CAAC;IAExC,qBAAqB,CAAC,EAAE,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAC/C,oCAAoC,CAAC,EAAE,kBAAkB,CAAC,kCAAkC,CAAC,CAAC;IAC9F,yBAAyB,CAAC,EAAE,kBAAkB,CAAC,uBAAuB,CAAC,CAAC;IAExE,aAAa,CAAC,EAAE,KAAK,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAE7B,KAAK,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;CAC3D;AAED,eAAO,MAAM,QAAQ,EAAE,cAErB,CAAC;;AAEH,wBAEE"}
@@ -6,8 +6,6 @@ export interface A11yLockNativeComponentProps extends ViewProps {
6
6
  lockDisabled?: boolean;
7
7
  forceLock?: boolean;
8
8
  }
9
- declare const _default: (props: Omit<A11yLockNativeComponentProps, "ref"> & {
10
- ref?: React.Ref<import("react-native").HostInstance>;
11
- }) => React.ReactNode;
9
+ declare const _default: import("react-native/Libraries/Utilities/codegenNativeComponent").NativeComponentType<A11yLockNativeComponentProps>;
12
10
  export default _default;
13
11
  //# sourceMappingURL=A11yLockNativeComponent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"A11yLockNativeComponent.d.ts","sourceRoot":"","sources":["../../../../src/nativeSpecs/A11yLockNativeComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2CAA2C,CAAC;AAIvE,MAAM,WAAW,4BAA6B,SAAQ,SAAS;IAC7D,aAAa,EAAE,KAAK,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;;;;AAED,wBAAgF"}
1
+ {"version":3,"file":"A11yLockNativeComponent.d.ts","sourceRoot":"","sources":["../../../../src/nativeSpecs/A11yLockNativeComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2CAA2C,CAAC;AAIvE,MAAM,WAAW,4BAA6B,SAAQ,SAAS;IAC7D,aAAa,EAAE,KAAK,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;;AAED,wBAAgF"}
@@ -2,8 +2,6 @@ import type { ViewProps } from 'react-native';
2
2
  export interface A11yOrderNativeComponentProps extends ViewProps {
3
3
  orderKey: string;
4
4
  }
5
- declare const _default: (props: Omit<A11yOrderNativeComponentProps, "ref"> & {
6
- ref?: React.Ref<import("react-native").HostInstance>;
7
- }) => React.ReactNode;
5
+ declare const _default: import("react-native/Libraries/Utilities/codegenNativeComponent").NativeComponentType<A11yOrderNativeComponentProps>;
8
6
  export default _default;
9
7
  //# sourceMappingURL=A11yOrderNativeComponent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"A11yOrderNativeComponent.d.ts","sourceRoot":"","sources":["../../../../src/nativeSpecs/A11yOrderNativeComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAI9C,MAAM,WAAW,6BAA8B,SAAQ,SAAS;IAC9D,QAAQ,EAAE,MAAM,CAAC;CAClB;;;;AAED,wBAEE"}
1
+ {"version":3,"file":"A11yOrderNativeComponent.d.ts","sourceRoot":"","sources":["../../../../src/nativeSpecs/A11yOrderNativeComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAI9C,MAAM,WAAW,6BAA8B,SAAQ,SAAS;IAC9D,QAAQ,EAAE,MAAM,CAAC;CAClB;;AAED,wBAEE"}
@@ -6,8 +6,6 @@ export interface A11yPaneTitleProps extends ViewProps {
6
6
  type: Int32;
7
7
  withFocusRestore?: boolean;
8
8
  }
9
- declare const _default: (props: Omit<A11yPaneTitleProps, "ref"> & {
10
- ref?: React.Ref<import("react-native").HostInstance>;
11
- }) => React.ReactNode;
9
+ declare const _default: import("react-native/Libraries/Utilities/codegenNativeComponent").NativeComponentType<A11yPaneTitleProps>;
12
10
  export default _default;
13
11
  //# sourceMappingURL=A11yPaneTitleNativeComponent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"A11yPaneTitleNativeComponent.d.ts","sourceRoot":"","sources":["../../../../src/nativeSpecs/A11yPaneTitleNativeComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2CAA2C,CAAC;AAIvE,MAAM,WAAW,kBAAmB,SAAQ,SAAS;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,KAAK,CAAC;IACZ,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;;;;AAED,wBAA2E"}
1
+ {"version":3,"file":"A11yPaneTitleNativeComponent.d.ts","sourceRoot":"","sources":["../../../../src/nativeSpecs/A11yPaneTitleNativeComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2CAA2C,CAAC;AAIvE,MAAM,WAAW,kBAAmB,SAAQ,SAAS;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,KAAK,CAAC;IACZ,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;;AAED,wBAA2E"}
@@ -1,7 +1,27 @@
1
1
  import type { TurboModule } from 'react-native';
2
+ type AnnounceOptions = Readonly<{
3
+ priority?: string;
4
+ queue?: boolean;
5
+ calm?: boolean;
6
+ delayMs?: number;
7
+ language?: string;
8
+ pitch?: number;
9
+ spellOut?: boolean;
10
+ punctuation?: boolean;
11
+ ipaNotation?: string;
12
+ }>;
13
+ type AnnouncementResult = Readonly<{
14
+ id: string;
15
+ status: string;
16
+ }>;
2
17
  export interface Spec extends TurboModule {
3
- announce(message: string): void;
18
+ /** Enqueues a screen reader announcement. Resolves with AnnouncementResult. */
19
+ announce(message: string, options?: AnnounceOptions): Promise<AnnouncementResult>;
20
+ /** Cancels a specific announcement by its id. Resolves with the cancelled item's result. */
21
+ cancel(id: string): Promise<AnnouncementResult>;
22
+ /** Drains the queue and interrupts current speech. */
23
+ cancelAll(): Promise<AnnouncementResult>;
4
24
  }
5
- declare const _default: Spec | null | undefined;
25
+ declare const _default: Spec | null;
6
26
  export default _default;
7
27
  //# sourceMappingURL=NativeA11yAnnounceModule.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NativeA11yAnnounceModule.d.ts","sourceRoot":"","sources":["../../../../src/nativeSpecs/NativeA11yAnnounceModule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;;AAED,wBAAmE"}
1
+ {"version":3,"file":"NativeA11yAnnounceModule.d.ts","sourceRoot":"","sources":["../../../../src/nativeSpecs/NativeA11yAnnounceModule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAKhD,KAAK,eAAe,GAAG,QAAQ,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC,CAAC;AAEH,KAAK,kBAAkB,GAAG,QAAQ,CAAC;IACjC,EAAE,EAAE,MAAM,CAAC;IAIX,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAAC;AAEH,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,+EAA+E;IAC/E,QAAQ,CACN,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC/B,4FAA4F;IAC5F,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAChD,sDAAsD;IACtD,SAAS,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAC1C;;AAED,wBAAmE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-a11y-order",
3
- "version": "0.11.0-rc",
3
+ "version": "0.11.0",
4
4
  "description": "ReactNative library for managing screen reader focus ordering",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -22,6 +22,7 @@ export const A11yCard = ({
22
22
  {...accessibility}
23
23
  accessible
24
24
  pointerEvents="none"
25
+ collapsable={false}
25
26
  onAccessibilityTap={onPress}
26
27
  style={styles.overlay}
27
28
  />
@@ -40,5 +41,11 @@ export const A11yCard = ({
40
41
 
41
42
  const styles = StyleSheet.create({
42
43
  container: { position: 'relative' },
43
- overlay: StyleSheet.absoluteFillObject,
44
+ overlay: {
45
+ position: 'absolute',
46
+ top: 0,
47
+ left: 0,
48
+ right: 0,
49
+ bottom: 0,
50
+ },
44
51
  });
@@ -102,16 +102,17 @@ function useOrderProps(
102
102
  }
103
103
 
104
104
  const resolvedOrderType = orderType ?? 'default';
105
- const importantForAccessibilityFallback =
106
- resolvedOrderType === 'default' ? ('yes' as const) : undefined;
105
+ const isDefaultOrderType = resolvedOrderType === 'default';
106
+
107
+ const importantForAccessibility =
108
+ hasOrderInfo && isDefaultOrderType ? 'yes' : importantForAccessibilityProp;
107
109
 
108
110
  return {
109
111
  orderKey,
110
112
  orderFocusType: hasOrderInfo
111
113
  ? A11yOrderTypeEnum[resolvedOrderType]
112
114
  : undefined,
113
- importantForAccessibility:
114
- importantForAccessibilityProp ?? importantForAccessibilityFallback,
115
+ importantForAccessibility,
115
116
  };
116
117
  }
117
118
 
@@ -88,11 +88,6 @@ export type A11yIndexProps = ViewProps & {
88
88
  */
89
89
  shouldGroupAccessibilityChildren?: boolean;
90
90
 
91
- /**
92
- * When `true`, requests screen reader focus on this element immediately after mount.
93
- */
94
- autoFocus?: boolean;
95
-
96
91
  /**
97
92
  * Called when the screen reader focuses this element directly (not a descendant).
98
93
  */
package/src/index.ts CHANGED
@@ -46,4 +46,15 @@ export const A11y = {
46
46
  Card: A11yCard,
47
47
  };
48
48
 
49
- export { A11yModule } from './modules/A11yAnnounceModule';
49
+ export {
50
+ ScreenReader,
51
+ announce,
52
+ cancel,
53
+ cancelAll,
54
+ } from './modules/A11yAnnounceModule';
55
+ export type {
56
+ AnnouncePriority,
57
+ AnnounceStatus,
58
+ AnnounceOptions,
59
+ AnnouncementResult,
60
+ } from './modules/A11yAnnounceModule';
package/src/index.web.ts CHANGED
@@ -23,4 +23,4 @@ export const A11y = {
23
23
  Card: View,
24
24
  };
25
25
 
26
- export { A11yModule } from './modules/A11yAnnounceModule';
26
+ export { ScreenReader } from './modules/A11yAnnounceModule';