react-native-a11y-order 0.1.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 (146) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +53 -0
  3. package/android/build.gradle +90 -0
  4. package/android/gradle.properties +5 -0
  5. package/android/src/main/AndroidManifest.xml +4 -0
  6. package/android/src/main/java/com/a11yorder/A11yOrderModule.java +83 -0
  7. package/android/src/main/java/com/a11yorder/A11yOrderPackage.java +45 -0
  8. package/android/src/newarch/A11yOrderSpec.java +9 -0
  9. package/android/src/oldarch/A11yOrderSpec.java +15 -0
  10. package/ios/A11yOrder-Bridging-Header.h +3 -0
  11. package/ios/A11yOrder.h +6 -0
  12. package/ios/A11yOrder.mm +72 -0
  13. package/ios/A11yOrder.xcodeproj/project.pbxproj +281 -0
  14. package/ios/A11yOrder.xcodeproj/project.xcworkspace/contents.xcworkspacedata +4 -0
  15. package/ios/A11yOrder.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  16. package/ios/A11yOrder.xcodeproj/project.xcworkspace/xcuserdata/Artur_Kalach.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  17. package/ios/A11yOrder.xcodeproj/xcuserdata/Artur_Kalach.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +40 -0
  18. package/ios/A11yOrder.xcodeproj/xcuserdata/Artur_Kalach.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
  19. package/lib/commonjs/A11yModule/helper.js +21 -0
  20. package/lib/commonjs/A11yModule/helper.js.map +1 -0
  21. package/lib/commonjs/A11yModule/index.js +20 -0
  22. package/lib/commonjs/A11yModule/index.js.map +1 -0
  23. package/lib/commonjs/A11yModule/module.js +24 -0
  24. package/lib/commonjs/A11yModule/module.js.map +1 -0
  25. package/lib/commonjs/components/A11yOrder/A11yOrder.js +32 -0
  26. package/lib/commonjs/components/A11yOrder/A11yOrder.js.map +1 -0
  27. package/lib/commonjs/components/A11yOrder/A11yOrder.types.js +6 -0
  28. package/lib/commonjs/components/A11yOrder/A11yOrder.types.js.map +1 -0
  29. package/lib/commonjs/components/A11yOrder/index.js +13 -0
  30. package/lib/commonjs/components/A11yOrder/index.js.map +1 -0
  31. package/lib/commonjs/components/index.js +13 -0
  32. package/lib/commonjs/components/index.js.map +1 -0
  33. package/lib/commonjs/hooks/index.js +27 -0
  34. package/lib/commonjs/hooks/index.js.map +1 -0
  35. package/lib/commonjs/hooks/useA11yOrderManager/index.js +13 -0
  36. package/lib/commonjs/hooks/useA11yOrderManager/index.js.map +1 -0
  37. package/lib/commonjs/hooks/useA11yOrderManager/useA11yOrderManager.js +66 -0
  38. package/lib/commonjs/hooks/useA11yOrderManager/useA11yOrderManager.js.map +1 -0
  39. package/lib/commonjs/hooks/useDynamicFocusOrder/index.js +20 -0
  40. package/lib/commonjs/hooks/useDynamicFocusOrder/index.js.map +1 -0
  41. package/lib/commonjs/hooks/useDynamicFocusOrder/useDynamicFocusOrder.js +29 -0
  42. package/lib/commonjs/hooks/useDynamicFocusOrder/useDynamicFocusOrder.js.map +1 -0
  43. package/lib/commonjs/hooks/useDynamicFocusOrder/useDynamicFocusOrder.types.js +6 -0
  44. package/lib/commonjs/hooks/useDynamicFocusOrder/useDynamicFocusOrder.types.js.map +1 -0
  45. package/lib/commonjs/hooks/useFocusOrder/index.js +13 -0
  46. package/lib/commonjs/hooks/useFocusOrder/index.js.map +1 -0
  47. package/lib/commonjs/hooks/useFocusOrder/useFocusOrder.js +25 -0
  48. package/lib/commonjs/hooks/useFocusOrder/useFocusOrder.js.map +1 -0
  49. package/lib/commonjs/hooks/useFocusOrder/useFocusOrder.types.js +6 -0
  50. package/lib/commonjs/hooks/useFocusOrder/useFocusOrder.types.js.map +1 -0
  51. package/lib/commonjs/index.js +32 -0
  52. package/lib/commonjs/index.js.map +1 -0
  53. package/lib/commonjs/nativeSpecs/NativeA11yOrder.js +10 -0
  54. package/lib/commonjs/nativeSpecs/NativeA11yOrder.js.map +1 -0
  55. package/lib/module/A11yModule/helper.js +14 -0
  56. package/lib/module/A11yModule/helper.js.map +1 -0
  57. package/lib/module/A11yModule/index.js +3 -0
  58. package/lib/module/A11yModule/index.js.map +1 -0
  59. package/lib/module/A11yModule/module.js +18 -0
  60. package/lib/module/A11yModule/module.js.map +1 -0
  61. package/lib/module/components/A11yOrder/A11yOrder.js +23 -0
  62. package/lib/module/components/A11yOrder/A11yOrder.js.map +1 -0
  63. package/lib/module/components/A11yOrder/A11yOrder.types.js +2 -0
  64. package/lib/module/components/A11yOrder/A11yOrder.types.js.map +1 -0
  65. package/lib/module/components/A11yOrder/index.js +2 -0
  66. package/lib/module/components/A11yOrder/index.js.map +1 -0
  67. package/lib/module/components/index.js +2 -0
  68. package/lib/module/components/index.js.map +1 -0
  69. package/lib/module/hooks/index.js +4 -0
  70. package/lib/module/hooks/index.js.map +1 -0
  71. package/lib/module/hooks/useA11yOrderManager/index.js +2 -0
  72. package/lib/module/hooks/useA11yOrderManager/index.js.map +1 -0
  73. package/lib/module/hooks/useA11yOrderManager/useA11yOrderManager.js +58 -0
  74. package/lib/module/hooks/useA11yOrderManager/useA11yOrderManager.js.map +1 -0
  75. package/lib/module/hooks/useDynamicFocusOrder/index.js +3 -0
  76. package/lib/module/hooks/useDynamicFocusOrder/index.js.map +1 -0
  77. package/lib/module/hooks/useDynamicFocusOrder/useDynamicFocusOrder.js +22 -0
  78. package/lib/module/hooks/useDynamicFocusOrder/useDynamicFocusOrder.js.map +1 -0
  79. package/lib/module/hooks/useDynamicFocusOrder/useDynamicFocusOrder.types.js +2 -0
  80. package/lib/module/hooks/useDynamicFocusOrder/useDynamicFocusOrder.types.js.map +1 -0
  81. package/lib/module/hooks/useFocusOrder/index.js +2 -0
  82. package/lib/module/hooks/useFocusOrder/index.js.map +1 -0
  83. package/lib/module/hooks/useFocusOrder/useFocusOrder.js +18 -0
  84. package/lib/module/hooks/useFocusOrder/useFocusOrder.js.map +1 -0
  85. package/lib/module/hooks/useFocusOrder/useFocusOrder.types.js +2 -0
  86. package/lib/module/hooks/useFocusOrder/useFocusOrder.types.js.map +1 -0
  87. package/lib/module/index.js +3 -0
  88. package/lib/module/index.js.map +1 -0
  89. package/lib/module/nativeSpecs/NativeA11yOrder.js +3 -0
  90. package/lib/module/nativeSpecs/NativeA11yOrder.js.map +1 -0
  91. package/lib/typescript/A11yModule/helper.d.ts +8 -0
  92. package/lib/typescript/A11yModule/helper.d.ts.map +1 -0
  93. package/lib/typescript/A11yModule/index.d.ts +3 -0
  94. package/lib/typescript/A11yModule/index.d.ts.map +1 -0
  95. package/lib/typescript/A11yModule/module.d.ts +2 -0
  96. package/lib/typescript/A11yModule/module.d.ts.map +1 -0
  97. package/lib/typescript/components/A11yOrder/A11yOrder.d.ts +4 -0
  98. package/lib/typescript/components/A11yOrder/A11yOrder.d.ts.map +1 -0
  99. package/lib/typescript/components/A11yOrder/A11yOrder.types.d.ts +9 -0
  100. package/lib/typescript/components/A11yOrder/A11yOrder.types.d.ts.map +1 -0
  101. package/lib/typescript/components/A11yOrder/index.d.ts +2 -0
  102. package/lib/typescript/components/A11yOrder/index.d.ts.map +1 -0
  103. package/lib/typescript/components/index.d.ts +2 -0
  104. package/lib/typescript/components/index.d.ts.map +1 -0
  105. package/lib/typescript/hooks/index.d.ts +4 -0
  106. package/lib/typescript/hooks/index.d.ts.map +1 -0
  107. package/lib/typescript/hooks/useA11yOrderManager/index.d.ts +2 -0
  108. package/lib/typescript/hooks/useA11yOrderManager/index.d.ts.map +1 -0
  109. package/lib/typescript/hooks/useA11yOrderManager/useA11yOrderManager.d.ts +11 -0
  110. package/lib/typescript/hooks/useA11yOrderManager/useA11yOrderManager.d.ts.map +1 -0
  111. package/lib/typescript/hooks/useDynamicFocusOrder/index.d.ts +3 -0
  112. package/lib/typescript/hooks/useDynamicFocusOrder/index.d.ts.map +1 -0
  113. package/lib/typescript/hooks/useDynamicFocusOrder/useDynamicFocusOrder.d.ts +5 -0
  114. package/lib/typescript/hooks/useDynamicFocusOrder/useDynamicFocusOrder.d.ts.map +1 -0
  115. package/lib/typescript/hooks/useDynamicFocusOrder/useDynamicFocusOrder.types.d.ts +12 -0
  116. package/lib/typescript/hooks/useDynamicFocusOrder/useDynamicFocusOrder.types.d.ts.map +1 -0
  117. package/lib/typescript/hooks/useFocusOrder/index.d.ts +2 -0
  118. package/lib/typescript/hooks/useFocusOrder/index.d.ts.map +1 -0
  119. package/lib/typescript/hooks/useFocusOrder/useFocusOrder.d.ts +5 -0
  120. package/lib/typescript/hooks/useFocusOrder/useFocusOrder.d.ts.map +1 -0
  121. package/lib/typescript/hooks/useFocusOrder/useFocusOrder.types.d.ts +6 -0
  122. package/lib/typescript/hooks/useFocusOrder/useFocusOrder.types.d.ts.map +1 -0
  123. package/lib/typescript/index.d.ts +3 -0
  124. package/lib/typescript/index.d.ts.map +1 -0
  125. package/lib/typescript/nativeSpecs/NativeA11yOrder.d.ts +7 -0
  126. package/lib/typescript/nativeSpecs/NativeA11yOrder.d.ts.map +1 -0
  127. package/package.json +165 -0
  128. package/react-native-a11y-order.podspec +35 -0
  129. package/src/A11yModule/helper.ts +26 -0
  130. package/src/A11yModule/index.tsx +2 -0
  131. package/src/A11yModule/module.ts +32 -0
  132. package/src/components/A11yOrder/A11yOrder.tsx +28 -0
  133. package/src/components/A11yOrder/A11yOrder.types.ts +8 -0
  134. package/src/components/A11yOrder/index.ts +1 -0
  135. package/src/components/index.ts +1 -0
  136. package/src/hooks/index.ts +3 -0
  137. package/src/hooks/useA11yOrderManager/index.ts +1 -0
  138. package/src/hooks/useA11yOrderManager/useA11yOrderManager.ts +78 -0
  139. package/src/hooks/useDynamicFocusOrder/index.ts +2 -0
  140. package/src/hooks/useDynamicFocusOrder/useDynamicFocusOrder.ts +30 -0
  141. package/src/hooks/useDynamicFocusOrder/useDynamicFocusOrder.types.ts +12 -0
  142. package/src/hooks/useFocusOrder/index.ts +1 -0
  143. package/src/hooks/useFocusOrder/useFocusOrder.ts +25 -0
  144. package/src/hooks/useFocusOrder/useFocusOrder.types.ts +9 -0
  145. package/src/index.ts +7 -0
  146. package/src/nativeSpecs/NativeA11yOrder.ts +8 -0
@@ -0,0 +1,35 @@
1
+ require "json"
2
+
3
+ package = JSON.parse(File.read(File.join(__dir__, "package.json")))
4
+ folly_compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32'
5
+
6
+ Pod::Spec.new do |s|
7
+ s.name = "react-native-a11y-order"
8
+ s.version = package["version"]
9
+ s.summary = package["description"]
10
+ s.homepage = package["homepage"]
11
+ s.license = package["license"]
12
+ s.authors = package["author"]
13
+
14
+ s.platforms = { :ios => "11.0" }
15
+ s.source = { :git => "https://github.com/ArturKalach/react-native-a11y-order.git", :tag => "#{s.version}" }
16
+
17
+ s.source_files = "ios/**/*.{h,m,mm}"
18
+
19
+ s.dependency "React-Core"
20
+
21
+ # Don't install the dependencies when we run `pod install` in the old architecture.
22
+ if ENV['RCT_NEW_ARCH_ENABLED'] == '1' then
23
+ s.compiler_flags = folly_compiler_flags + " -DRCT_NEW_ARCH_ENABLED=1"
24
+ s.pod_target_xcconfig = {
25
+ "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\"",
26
+ "OTHER_CPLUSPLUSFLAGS" => "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1",
27
+ "CLANG_CXX_LANGUAGE_STANDARD" => "c++17"
28
+ }
29
+ s.dependency "React-Codegen"
30
+ s.dependency "RCT-Folly"
31
+ s.dependency "RCTRequired"
32
+ s.dependency "RCTTypeSafety"
33
+ s.dependency "ReactCommon/turbomodule/core"
34
+ end
35
+ end
@@ -0,0 +1,26 @@
1
+ import type { RefObject } from 'react';
2
+ import type { View } from 'react-native';
3
+ import { findNodeHandle } from 'react-native';
4
+
5
+ import { setA11yOrder } from './module';
6
+
7
+ export type A11yOrderInfo<T> = {
8
+ tag?: RefObject<View>;
9
+ views: (T | null)[];
10
+ };
11
+
12
+ export const setA11yElementsOrder = <T extends React.Component>({
13
+ tag,
14
+ views,
15
+ }: A11yOrderInfo<T>) => {
16
+ if (!tag) return;
17
+
18
+ const targetView = findNodeHandle(tag.current as React.Component);
19
+ if (!targetView) return;
20
+
21
+ const tags = views
22
+ .map((view) => findNodeHandle(view as React.Component))
23
+ .filter((view) => Boolean(view)) as number[];
24
+
25
+ setA11yOrder?.(tags, targetView);
26
+ };
@@ -0,0 +1,2 @@
1
+ export { setA11yElementsOrder } from './helper';
2
+ export { setA11yOrder } from './module';
@@ -0,0 +1,32 @@
1
+ import { NativeModules, Platform } from 'react-native';
2
+
3
+ const LINKING_ERROR =
4
+ `The package 'react-native-a11y-order' doesn't seem to be linked. Make sure: \n\n` +
5
+ Platform.select({ ios: "- You have run 'pod install'\n", default: '' }) +
6
+ '- You rebuilt the app after installing the package\n' +
7
+ '- You are not using Expo Go\n';
8
+
9
+ // @ts-expect-error
10
+ const isTurboModuleEnabled = global.__turboModuleProxy != null;
11
+
12
+ const A11yOrderModule = isTurboModuleEnabled
13
+ ? require('../nativeSpecs/NativeA11yOrder').default
14
+ : NativeModules.A11yOrder;
15
+
16
+ const A11yOrder = A11yOrderModule
17
+ ? A11yOrderModule
18
+ : new Proxy(
19
+ {},
20
+ {
21
+ get() {
22
+ throw new Error(LINKING_ERROR);
23
+ },
24
+ }
25
+ );
26
+
27
+ export function setA11yOrder(
28
+ tags: number[],
29
+ targetView?: number
30
+ ): Promise<number> {
31
+ return A11yOrder.setA11yOrder(tags, targetView);
32
+ }
@@ -0,0 +1,28 @@
1
+ import React, { useCallback, useId } from 'react';
2
+ import { View, LayoutChangeEvent } from 'react-native';
3
+ import type { A11yOrderProps } from './A11yOrder.types';
4
+
5
+ export const A11yOrder: React.FC<A11yOrderProps> = ({
6
+ a11yOrder,
7
+ onLayout,
8
+ ...props
9
+ }) => {
10
+ const onLayoutHandler = useCallback(
11
+ (e: LayoutChangeEvent) => {
12
+ onLayout?.(e);
13
+ a11yOrder.onLayout();
14
+ },
15
+ [a11yOrder, onLayout]
16
+ );
17
+
18
+ const id = useId?.() || 'mock_id'; // ToDo: use native component with tag to nativeTag
19
+
20
+ return (
21
+ <View
22
+ nativeID={id}
23
+ {...props}
24
+ onLayout={onLayoutHandler}
25
+ ref={a11yOrder.ref}
26
+ />
27
+ );
28
+ };
@@ -0,0 +1,8 @@
1
+ import type { ViewProps, View } from 'react-native';
2
+
3
+ export type A11yOrderProps = {
4
+ a11yOrder: {
5
+ ref: React.RefObject<View>;
6
+ onLayout: () => void;
7
+ };
8
+ } & ViewProps;
@@ -0,0 +1 @@
1
+ export { A11yOrder } from './A11yOrder';
@@ -0,0 +1 @@
1
+ export { A11yOrder } from './A11yOrder';
@@ -0,0 +1,3 @@
1
+ export { useA11yOrderManager } from './useA11yOrderManager';
2
+ export { useFocusOrder } from './useFocusOrder';
3
+ export { useDynamicFocusOrder } from './useDynamicFocusOrder';
@@ -0,0 +1 @@
1
+ export { useA11yOrderManager } from './useA11yOrderManager';
@@ -0,0 +1,78 @@
1
+ import { useRef, useCallback, RefObject, useMemo } from 'react';
2
+ import { Platform } from 'react-native';
3
+ import type { View } from 'react-native';
4
+ import { setA11yElementsOrder } from '../../A11yModule';
5
+
6
+ export const debounce = <T extends Function>(callback: T, timeout = 100) => {
7
+ let timer: NodeJS.Timeout | null;
8
+
9
+ return (...args: any) => {
10
+ if (timer) {
11
+ clearTimeout(timer);
12
+ timer = null;
13
+ }
14
+ timer = setTimeout(() => callback(args), timeout);
15
+ };
16
+ };
17
+
18
+ const SECONDS_PER_FRAME = 16;
19
+ const COUNT_OF_FRAMES = 1;
20
+
21
+ const DEBOUNCE_DELAY = SECONDS_PER_FRAME * COUNT_OF_FRAMES;
22
+
23
+ export const useA11yOrderManager = <T extends React.Component>(
24
+ orderRef: RefObject<View>,
25
+ onlyFor?: Platform['OS']
26
+ ) => {
27
+ const currentRef = useRef<(T | null)[]>([]);
28
+ const registeredRefs = useRef<(T | null)[]>([]);
29
+
30
+ const refWasUpdated = useRef<boolean>(false);
31
+
32
+ const setOrder = useCallback(() => {
33
+ if (!onlyFor || onlyFor === Platform.OS) {
34
+ setA11yElementsOrder({
35
+ tag: orderRef,
36
+ views: registeredRefs.current,
37
+ });
38
+ }
39
+ }, [onlyFor, orderRef]);
40
+
41
+ const debounceOrder = useMemo(
42
+ () => debounce(setOrder, DEBOUNCE_DELAY),
43
+ [setOrder]
44
+ );
45
+
46
+ const registerOrderRef = useCallback(
47
+ (order: number) =>
48
+ (ref: T | null): void => {
49
+ refWasUpdated.current = true;
50
+ registeredRefs.current[order] = ref;
51
+ },
52
+ []
53
+ );
54
+
55
+ const updateRefList = useCallback(() => {
56
+ if (!refWasUpdated.current) {
57
+ return;
58
+ }
59
+
60
+ refWasUpdated.current = false;
61
+ currentRef.current = registeredRefs.current.filter((v) => v);
62
+
63
+ debounceOrder();
64
+ }, [debounceOrder]);
65
+
66
+ const reset = useCallback(() => {
67
+ currentRef.current = [];
68
+ registeredRefs.current = [];
69
+ refWasUpdated.current = false;
70
+ }, []);
71
+
72
+ return {
73
+ registerOrderRef,
74
+ updateRefList,
75
+ reset,
76
+ setOrder,
77
+ };
78
+ };
@@ -0,0 +1,2 @@
1
+ export { useDynamicFocusOrder } from './useDynamicFocusOrder';
2
+ export { UseDynamicFocusOrder } from './useDynamicFocusOrder.types';
@@ -0,0 +1,30 @@
1
+ import { useRef, useLayoutEffect } from 'react';
2
+ import type { View, Platform } from 'react-native';
3
+
4
+ import { useA11yOrderManager } from '../useA11yOrderManager';
5
+ import type { UseDynamicFocusOrder } from './useDynamicFocusOrder.types';
6
+
7
+ export const useDynamicFocusOrder = <T extends React.Component>(
8
+ onlyFor?: Platform['OS']
9
+ ): UseDynamicFocusOrder<T> => {
10
+ const a11yOrderRef = useRef<View>(null);
11
+
12
+ const {
13
+ registerOrderRef: registerOrder,
14
+ updateRefList,
15
+ reset,
16
+ setOrder,
17
+ } = useA11yOrderManager(a11yOrderRef, onlyFor);
18
+
19
+ useLayoutEffect(updateRefList);
20
+
21
+ return {
22
+ a11yOrder: {
23
+ ref: a11yOrderRef,
24
+ onLayout: updateRefList,
25
+ },
26
+ registerOrder,
27
+ reset,
28
+ setOrder,
29
+ };
30
+ };
@@ -0,0 +1,12 @@
1
+ import type { RefObject, RefCallback } from 'react';
2
+ import type { View } from 'react-native';
3
+
4
+ export type UseDynamicFocusOrder<T extends React.Component> = {
5
+ a11yOrder: {
6
+ ref: RefObject<View>;
7
+ onLayout: () => void;
8
+ };
9
+ registerOrder: (order: number) => RefCallback<T>;
10
+ reset: () => void;
11
+ setOrder: () => void;
12
+ };
@@ -0,0 +1 @@
1
+ export { useFocusOrder } from './useFocusOrder';
@@ -0,0 +1,25 @@
1
+ import { useRef } from 'react';
2
+ import type { Platform } from 'react-native';
3
+ import { useDynamicFocusOrder } from '../useDynamicFocusOrder';
4
+ import type { FocusOrderInfo } from './useFocusOrder.types';
5
+
6
+ export const useFocusOrder = <T extends React.Component>(
7
+ size: number,
8
+ onlyFor?: Platform['OS']
9
+ ): FocusOrderInfo<T> => {
10
+ const { a11yOrder, registerOrder, reset, setOrder } =
11
+ useDynamicFocusOrder(onlyFor);
12
+
13
+ const refs = useRef(
14
+ Array(size)
15
+ .fill(null)
16
+ .map((_, i) => registerOrder(i))
17
+ ).current;
18
+
19
+ return {
20
+ a11yOrder,
21
+ refs,
22
+ reset,
23
+ setOrder,
24
+ };
25
+ };
@@ -0,0 +1,9 @@
1
+ import type { RefCallback } from 'react';
2
+ import type { UseDynamicFocusOrder } from '../useDynamicFocusOrder';
3
+
4
+ export type FocusOrderInfo<T extends React.Component> = Pick<
5
+ UseDynamicFocusOrder<T>,
6
+ 'a11yOrder' | 'reset' | 'setOrder'
7
+ > & {
8
+ refs: RefCallback<T>[];
9
+ };
package/src/index.ts ADDED
@@ -0,0 +1,7 @@
1
+ export {
2
+ useFocusOrder,
3
+ useDynamicFocusOrder,
4
+ useA11yOrderManager,
5
+ } from './hooks';
6
+
7
+ export { A11yOrder } from './components';
@@ -0,0 +1,8 @@
1
+ import type { TurboModule } from 'react-native';
2
+ import { TurboModuleRegistry } from 'react-native';
3
+
4
+ export interface Spec extends TurboModule {
5
+ setA11yOrder: (tags: number[], nativeTag?: number) => void;
6
+ }
7
+
8
+ export default TurboModuleRegistry.getEnforcing<Spec>('A11yOrder');