react-native-drawer-layout 2.0.0 → 3.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 (109) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +235 -35
  3. package/lib/commonjs/constants.js +15 -0
  4. package/lib/commonjs/constants.js.map +1 -0
  5. package/lib/commonjs/index.js +35 -0
  6. package/lib/commonjs/index.js.map +1 -0
  7. package/lib/commonjs/types.js +6 -0
  8. package/lib/commonjs/types.js.map +1 -0
  9. package/lib/commonjs/utils/DrawerGestureContext.js +12 -0
  10. package/lib/commonjs/utils/DrawerGestureContext.js.map +1 -0
  11. package/lib/commonjs/utils/DrawerProgressContext.js +12 -0
  12. package/lib/commonjs/utils/DrawerProgressContext.js.map +1 -0
  13. package/lib/commonjs/utils/useDrawerProgress.js +19 -0
  14. package/lib/commonjs/utils/useDrawerProgress.js.map +1 -0
  15. package/lib/commonjs/views/Drawer.js +89 -0
  16. package/lib/commonjs/views/Drawer.js.map +1 -0
  17. package/lib/commonjs/views/GestureHandler.android.js +17 -0
  18. package/lib/commonjs/views/GestureHandler.android.js.map +1 -0
  19. package/lib/commonjs/views/GestureHandler.ios.js +17 -0
  20. package/lib/commonjs/views/GestureHandler.ios.js.map +1 -0
  21. package/lib/commonjs/views/GestureHandler.js +33 -0
  22. package/lib/commonjs/views/GestureHandler.js.map +1 -0
  23. package/lib/commonjs/views/GestureHandlerNative.js +37 -0
  24. package/lib/commonjs/views/GestureHandlerNative.js.map +1 -0
  25. package/lib/commonjs/views/legacy/Drawer.js +419 -0
  26. package/lib/commonjs/views/legacy/Drawer.js.map +1 -0
  27. package/lib/commonjs/views/legacy/Overlay.js +74 -0
  28. package/lib/commonjs/views/legacy/Overlay.js.map +1 -0
  29. package/lib/commonjs/views/modern/Drawer.js +285 -0
  30. package/lib/commonjs/views/modern/Drawer.js.map +1 -0
  31. package/lib/commonjs/views/modern/Overlay.js +69 -0
  32. package/lib/commonjs/views/modern/Overlay.js.map +1 -0
  33. package/lib/module/constants.js +5 -0
  34. package/lib/module/constants.js.map +1 -0
  35. package/lib/module/index.js +5 -0
  36. package/lib/module/index.js.map +1 -0
  37. package/lib/module/types.js +2 -0
  38. package/lib/module/types.js.map +1 -0
  39. package/lib/module/utils/DrawerGestureContext.js +3 -0
  40. package/lib/module/utils/DrawerGestureContext.js.map +1 -0
  41. package/lib/module/utils/DrawerProgressContext.js +3 -0
  42. package/lib/module/utils/DrawerProgressContext.js.map +1 -0
  43. package/lib/module/utils/useDrawerProgress.js +10 -0
  44. package/lib/module/utils/useDrawerProgress.js.map +1 -0
  45. package/lib/module/views/Drawer.js +81 -0
  46. package/lib/module/views/Drawer.js.map +1 -0
  47. package/lib/module/views/GestureHandler.android.js +2 -0
  48. package/lib/module/views/GestureHandler.android.js.map +1 -0
  49. package/lib/module/views/GestureHandler.ios.js +2 -0
  50. package/lib/module/views/GestureHandler.ios.js.map +1 -0
  51. package/lib/module/views/GestureHandler.js +21 -0
  52. package/lib/module/views/GestureHandler.js.map +1 -0
  53. package/lib/module/views/GestureHandlerNative.js +11 -0
  54. package/lib/module/views/GestureHandlerNative.js.map +1 -0
  55. package/lib/module/views/legacy/Drawer.js +409 -0
  56. package/lib/module/views/legacy/Drawer.js.map +1 -0
  57. package/lib/module/views/legacy/Overlay.js +64 -0
  58. package/lib/module/views/legacy/Overlay.js.map +1 -0
  59. package/lib/module/views/modern/Drawer.js +276 -0
  60. package/lib/module/views/modern/Drawer.js.map +1 -0
  61. package/lib/module/views/modern/Overlay.js +60 -0
  62. package/lib/module/views/modern/Overlay.js.map +1 -0
  63. package/lib/typescript/src/constants.d.ts +5 -0
  64. package/lib/typescript/src/constants.d.ts.map +1 -0
  65. package/lib/typescript/src/index.d.ts +5 -0
  66. package/lib/typescript/src/index.d.ts.map +1 -0
  67. package/lib/typescript/src/types.d.ts +110 -0
  68. package/lib/typescript/src/types.d.ts.map +1 -0
  69. package/lib/typescript/src/utils/DrawerGestureContext.d.ts +4 -0
  70. package/lib/typescript/src/utils/DrawerGestureContext.d.ts.map +1 -0
  71. package/lib/typescript/src/utils/DrawerProgressContext.d.ts +5 -0
  72. package/lib/typescript/src/utils/DrawerProgressContext.d.ts.map +1 -0
  73. package/lib/typescript/src/utils/useDrawerProgress.d.ts +3 -0
  74. package/lib/typescript/src/utils/useDrawerProgress.d.ts.map +1 -0
  75. package/lib/typescript/src/views/Drawer.d.ts +20 -0
  76. package/lib/typescript/src/views/Drawer.d.ts.map +1 -0
  77. package/lib/typescript/src/views/GestureHandler.android.d.ts +2 -0
  78. package/lib/typescript/src/views/GestureHandler.android.d.ts.map +1 -0
  79. package/lib/typescript/src/views/GestureHandler.d.ts +15 -0
  80. package/lib/typescript/src/views/GestureHandler.d.ts.map +1 -0
  81. package/lib/typescript/src/views/GestureHandler.ios.d.ts +2 -0
  82. package/lib/typescript/src/views/GestureHandler.ios.d.ts.map +1 -0
  83. package/lib/typescript/src/views/GestureHandlerNative.d.ts +6 -0
  84. package/lib/typescript/src/views/GestureHandlerNative.d.ts.map +1 -0
  85. package/lib/typescript/src/views/legacy/Drawer.d.ts +51 -0
  86. package/lib/typescript/src/views/legacy/Drawer.d.ts.map +1 -0
  87. package/lib/typescript/src/views/legacy/Overlay.d.ts +89 -0
  88. package/lib/typescript/src/views/legacy/Overlay.d.ts.map +1 -0
  89. package/lib/typescript/src/views/modern/Drawer.d.ts +10 -0
  90. package/lib/typescript/src/views/modern/Drawer.d.ts.map +1 -0
  91. package/lib/typescript/src/views/modern/Overlay.d.ts +89 -0
  92. package/lib/typescript/src/views/modern/Overlay.d.ts.map +1 -0
  93. package/package.json +54 -94
  94. package/src/constants.tsx +4 -0
  95. package/src/index.tsx +4 -0
  96. package/src/types.tsx +122 -0
  97. package/src/utils/DrawerGestureContext.tsx +3 -0
  98. package/src/utils/DrawerProgressContext.tsx +6 -0
  99. package/src/utils/useDrawerProgress.tsx +18 -0
  100. package/src/views/Drawer.tsx +122 -0
  101. package/src/views/GestureHandler.android.tsx +1 -0
  102. package/src/views/GestureHandler.ios.tsx +1 -0
  103. package/src/views/GestureHandler.tsx +29 -0
  104. package/src/views/GestureHandlerNative.tsx +24 -0
  105. package/src/views/legacy/Drawer.tsx +682 -0
  106. package/src/views/legacy/Overlay.tsx +87 -0
  107. package/src/views/modern/Drawer.tsx +413 -0
  108. package/src/views/modern/Overlay.tsx +82 -0
  109. package/dist/DrawerLayout.js +0 -430
@@ -0,0 +1,51 @@
1
+ import * as React from 'react';
2
+ import type { DrawerProps } from '../../types';
3
+ type Props = DrawerProps & {
4
+ layout: {
5
+ width: number;
6
+ };
7
+ };
8
+ export default class Drawer extends React.Component<Props> {
9
+ componentDidUpdate(prevProps: Props): void;
10
+ componentWillUnmount(): void;
11
+ private handleEndInteraction;
12
+ private handleStartInteraction;
13
+ private getDrawerWidth;
14
+ private clock;
15
+ private interactionHandle;
16
+ private isDrawerTypeFront;
17
+ private isOpen;
18
+ private nextIsOpen;
19
+ private isSwiping;
20
+ private initialDrawerWidth;
21
+ private gestureState;
22
+ private touchX;
23
+ private velocityX;
24
+ private gestureX;
25
+ private offsetX;
26
+ private position;
27
+ private containerWidth;
28
+ private drawerWidth;
29
+ private drawerOpacity;
30
+ private drawerPosition;
31
+ private touchDistanceFromDrawer;
32
+ private swipeDistanceThreshold;
33
+ private swipeVelocityThreshold;
34
+ private currentOpenValue;
35
+ private pendingOpenValue;
36
+ private isStatusBarHidden;
37
+ private manuallyTriggerSpring;
38
+ private transitionTo;
39
+ private dragX;
40
+ private translateX;
41
+ private progress;
42
+ private handleGestureEvent;
43
+ private handleGestureStateChange;
44
+ private handleContainerLayout;
45
+ private handleDrawerLayout;
46
+ private toggleDrawer;
47
+ private toggleStatusBar;
48
+ render(): JSX.Element;
49
+ }
50
+ export {};
51
+ //# sourceMappingURL=Drawer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Drawer.d.ts","sourceRoot":"","sources":["../../../../../src/views/legacy/Drawer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAmB/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAuD/C,KAAK,KAAK,GAAG,WAAW,GAAG;IACzB,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;IACxD,kBAAkB,CAAC,SAAS,EAAE,KAAK;IA+CnC,oBAAoB;IAKpB,OAAO,CAAC,oBAAoB,CAK1B;IAEF,OAAO,CAAC,sBAAsB,CAI5B;IAEF,OAAO,CAAC,cAAc,CAepB;IAEF,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,iBAAiB,CAAqB;IAE9C,OAAO,CAAC,iBAAiB,CAEvB;IAEF,OAAO,CAAC,MAAM,CAAqD;IACnE,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,SAAS,CAA4B;IAE7C,OAAO,CAAC,kBAAkB,CAAyB;IAEnD,OAAO,CAAC,YAAY,CAAgD;IACpE,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,QAAQ,CAOd;IAEF,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,WAAW,CAA8C;IACjE,OAAO,CAAC,aAAa,CAEnB;IACF,OAAO,CAAC,cAAc,CAEpB;IA2BF,OAAO,CAAC,uBAAuB,CAsB7B;IAEF,OAAO,CAAC,sBAAsB,CAE5B;IACF,OAAO,CAAC,sBAAsB,CAE5B;IAEF,OAAO,CAAC,gBAAgB,CAA4B;IACpD,OAAO,CAAC,gBAAgB,CAAsB;IAE9C,OAAO,CAAC,iBAAiB,CAAkB;IAE3C,OAAO,CAAC,qBAAqB,CAA4B;IAEzD,OAAO,CAAC,YAAY,CA8ClB;IAEF,OAAO,CAAC,KAAK,CAoHV;IAEH,OAAO,CAAC,UAAU,CAIhB;IAEF,OAAO,CAAC,QAAQ,CAKd;IAEF,OAAO,CAAC,kBAAkB,CAQvB;IAEH,OAAO,CAAC,wBAAwB,CAM7B;IAEH,OAAO,CAAC,qBAAqB,CAC8B;IAE3D,OAAO,CAAC,kBAAkB,CAUxB;IAEF,OAAO,CAAC,YAAY,CAQlB;IAEF,OAAO,CAAC,eAAe,CAQrB;IAEF,MAAM;CAoKP"}
@@ -0,0 +1,89 @@
1
+ import * as React from 'react';
2
+ import Animated from 'react-native-reanimated';
3
+ declare const Overlay: React.ForwardRefExoticComponent<{
4
+ children?: React.ReactNode | Animated.Node<React.ReactNode>;
5
+ hitSlop?: import("react-native").Insets | Animated.Node<import("react-native").Insets | undefined> | undefined;
6
+ onLayout?: ((event: import("react-native").LayoutChangeEvent) => void) | Animated.Node<((event: import("react-native").LayoutChangeEvent) => void) | undefined> | undefined;
7
+ pointerEvents?: "none" | "auto" | "box-none" | "box-only" | Animated.Node<"none" | "auto" | "box-none" | "box-only" | undefined> | undefined;
8
+ removeClippedSubviews?: boolean | Animated.Node<boolean | undefined> | undefined;
9
+ testID?: string | Animated.Node<string | undefined> | undefined;
10
+ nativeID?: string | Animated.Node<string | undefined> | undefined;
11
+ collapsable?: boolean | Animated.Node<boolean | undefined> | undefined;
12
+ needsOffscreenAlphaCompositing?: boolean | Animated.Node<boolean | undefined> | undefined;
13
+ renderToHardwareTextureAndroid?: boolean | Animated.Node<boolean | undefined> | undefined;
14
+ focusable?: boolean | Animated.Node<boolean | undefined> | undefined;
15
+ shouldRasterizeIOS?: boolean | Animated.Node<boolean | undefined> | undefined;
16
+ isTVSelectable?: boolean | Animated.Node<boolean | undefined> | undefined;
17
+ hasTVPreferredFocus?: boolean | Animated.Node<boolean | undefined> | undefined;
18
+ tvParallaxProperties?: import("react-native").TVParallaxProperties | Animated.Node<import("react-native").TVParallaxProperties | undefined> | undefined;
19
+ tvParallaxShiftDistanceX?: number | Animated.Node<number | undefined> | undefined;
20
+ tvParallaxShiftDistanceY?: number | Animated.Node<number | undefined> | undefined;
21
+ tvParallaxTiltAngle?: number | Animated.Node<number | undefined> | undefined;
22
+ tvParallaxMagnification?: number | Animated.Node<number | undefined> | undefined;
23
+ onStartShouldSetResponder?: ((event: import("react-native").GestureResponderEvent) => boolean) | Animated.Node<((event: import("react-native").GestureResponderEvent) => boolean) | undefined> | undefined;
24
+ onMoveShouldSetResponder?: ((event: import("react-native").GestureResponderEvent) => boolean) | Animated.Node<((event: import("react-native").GestureResponderEvent) => boolean) | undefined> | undefined;
25
+ onResponderEnd?: ((event: import("react-native").GestureResponderEvent) => void) | Animated.Node<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
26
+ onResponderGrant?: ((event: import("react-native").GestureResponderEvent) => void) | Animated.Node<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
27
+ onResponderReject?: ((event: import("react-native").GestureResponderEvent) => void) | Animated.Node<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
28
+ onResponderMove?: ((event: import("react-native").GestureResponderEvent) => void) | Animated.Node<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
29
+ onResponderRelease?: ((event: import("react-native").GestureResponderEvent) => void) | Animated.Node<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
30
+ onResponderStart?: ((event: import("react-native").GestureResponderEvent) => void) | Animated.Node<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
31
+ onResponderTerminationRequest?: ((event: import("react-native").GestureResponderEvent) => boolean) | Animated.Node<((event: import("react-native").GestureResponderEvent) => boolean) | undefined> | undefined;
32
+ onResponderTerminate?: ((event: import("react-native").GestureResponderEvent) => void) | Animated.Node<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
33
+ onStartShouldSetResponderCapture?: ((event: import("react-native").GestureResponderEvent) => boolean) | Animated.Node<((event: import("react-native").GestureResponderEvent) => boolean) | undefined> | undefined;
34
+ onMoveShouldSetResponderCapture?: ((event: import("react-native").GestureResponderEvent) => boolean) | Animated.Node<((event: import("react-native").GestureResponderEvent) => boolean) | undefined> | undefined;
35
+ onTouchStart?: ((event: import("react-native").GestureResponderEvent) => void) | Animated.Node<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
36
+ onTouchMove?: ((event: import("react-native").GestureResponderEvent) => void) | Animated.Node<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
37
+ onTouchEnd?: ((event: import("react-native").GestureResponderEvent) => void) | Animated.Node<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
38
+ onTouchCancel?: ((event: import("react-native").GestureResponderEvent) => void) | Animated.Node<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
39
+ onTouchEndCapture?: ((event: import("react-native").GestureResponderEvent) => void) | Animated.Node<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
40
+ onPointerEnter?: ((event: import("react-native").PointerEvent) => void) | Animated.Node<((event: import("react-native").PointerEvent) => void) | undefined> | undefined;
41
+ onPointerEnterCapture?: ((event: import("react-native").PointerEvent) => void) | Animated.Node<((event: import("react-native").PointerEvent) => void) | undefined> | undefined;
42
+ onPointerLeave?: ((event: import("react-native").PointerEvent) => void) | Animated.Node<((event: import("react-native").PointerEvent) => void) | undefined> | undefined;
43
+ onPointerLeaveCapture?: ((event: import("react-native").PointerEvent) => void) | Animated.Node<((event: import("react-native").PointerEvent) => void) | undefined> | undefined;
44
+ onPointerMove?: ((event: import("react-native").PointerEvent) => void) | Animated.Node<((event: import("react-native").PointerEvent) => void) | undefined> | undefined;
45
+ onPointerMoveCapture?: ((event: import("react-native").PointerEvent) => void) | Animated.Node<((event: import("react-native").PointerEvent) => void) | undefined> | undefined;
46
+ onPointerCancel?: ((event: import("react-native").PointerEvent) => void) | Animated.Node<((event: import("react-native").PointerEvent) => void) | undefined> | undefined;
47
+ onPointerCancelCapture?: ((event: import("react-native").PointerEvent) => void) | Animated.Node<((event: import("react-native").PointerEvent) => void) | undefined> | undefined;
48
+ onPointerDown?: ((event: import("react-native").PointerEvent) => void) | Animated.Node<((event: import("react-native").PointerEvent) => void) | undefined> | undefined;
49
+ onPointerDownCapture?: ((event: import("react-native").PointerEvent) => void) | Animated.Node<((event: import("react-native").PointerEvent) => void) | undefined> | undefined;
50
+ onPointerUp?: ((event: import("react-native").PointerEvent) => void) | Animated.Node<((event: import("react-native").PointerEvent) => void) | undefined> | undefined;
51
+ onPointerUpCapture?: ((event: import("react-native").PointerEvent) => void) | Animated.Node<((event: import("react-native").PointerEvent) => void) | undefined> | undefined;
52
+ accessible?: boolean | Animated.Node<boolean | undefined> | undefined;
53
+ accessibilityActions?: readonly Readonly<{
54
+ name: string;
55
+ label?: string | undefined;
56
+ }>[] | Animated.Node<readonly Readonly<{
57
+ name: string;
58
+ label?: string | undefined;
59
+ }>[] | undefined> | undefined;
60
+ accessibilityLabel?: string | Animated.Node<string | undefined> | undefined;
61
+ accessibilityRole?: import("react-native").AccessibilityRole | Animated.Node<import("react-native").AccessibilityRole | undefined> | undefined;
62
+ accessibilityState?: import("react-native").AccessibilityState | Animated.Node<import("react-native").AccessibilityState | undefined> | undefined;
63
+ accessibilityHint?: string | Animated.Node<string | undefined> | undefined;
64
+ accessibilityValue?: import("react-native").AccessibilityValue | Animated.Node<import("react-native").AccessibilityValue | undefined> | undefined;
65
+ onAccessibilityAction?: ((event: import("react-native").AccessibilityActionEvent) => void) | Animated.Node<((event: import("react-native").AccessibilityActionEvent) => void) | undefined> | undefined;
66
+ accessibilityLabelledBy?: string | string[] | Animated.Node<string | string[] | undefined> | undefined;
67
+ accessibilityLiveRegion?: "none" | "polite" | "assertive" | Animated.Node<"none" | "polite" | "assertive" | undefined> | undefined;
68
+ importantForAccessibility?: "auto" | "no-hide-descendants" | "yes" | "no" | Animated.Node<"auto" | "no-hide-descendants" | "yes" | "no" | undefined> | undefined;
69
+ accessibilityElementsHidden?: boolean | Animated.Node<boolean | undefined> | undefined;
70
+ accessibilityLanguage?: string | Animated.Node<string | undefined> | undefined;
71
+ accessibilityViewIsModal?: boolean | Animated.Node<boolean | undefined> | undefined;
72
+ onAccessibilityEscape?: (() => void) | Animated.Node<(() => void) | undefined> | undefined;
73
+ onAccessibilityTap?: (() => void) | Animated.Node<(() => void) | undefined> | undefined;
74
+ onMagicTap?: (() => void) | Animated.Node<(() => void) | undefined> | undefined;
75
+ accessibilityIgnoresInvertColors?: boolean | Animated.Node<boolean | undefined> | undefined;
76
+ } & {
77
+ style?: import("react-native").StyleProp<Animated.AnimateStyle<import("react-native").StyleProp<import("react-native").ViewStyle>>>;
78
+ } & {
79
+ animatedProps?: Partial<Animated.AnimateProps<import("react-native").ViewProps>> | undefined;
80
+ layout?: import("react-native-reanimated").BaseAnimationBuilder | import("react-native-reanimated").LayoutAnimationFunction | typeof import("react-native-reanimated").BaseAnimationBuilder | undefined;
81
+ entering?: import("react-native-reanimated").BaseAnimationBuilder | typeof import("react-native-reanimated").BaseAnimationBuilder | import("react-native-reanimated").EntryExitAnimationFunction | import("react-native-reanimated").Keyframe | undefined;
82
+ exiting?: import("react-native-reanimated").BaseAnimationBuilder | typeof import("react-native-reanimated").BaseAnimationBuilder | import("react-native-reanimated").EntryExitAnimationFunction | import("react-native-reanimated").Keyframe | undefined;
83
+ } & {
84
+ progress: Animated.Node<number>;
85
+ onPress: () => void;
86
+ accessibilityLabel?: string | undefined;
87
+ } & React.RefAttributes<Animated.View>>;
88
+ export default Overlay;
89
+ //# sourceMappingURL=Overlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Overlay.d.ts","sourceRoot":"","sources":["../../../../../src/views/legacy/Overlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAqB/C,QAAA,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cALD,aAAa,CAAC,MAAM,CAAC;aACtB,MAAM,IAAI;;uCA8CnB,CAAC;AAqBH,eAAe,OAAO,CAAC"}
@@ -0,0 +1,10 @@
1
+ /// <reference types="react" />
2
+ import type { DrawerProps } from '../../types';
3
+ type Props = DrawerProps & {
4
+ layout: {
5
+ width: number;
6
+ };
7
+ };
8
+ export default function Drawer({ layout, drawerPosition, drawerStyle, drawerType, gestureHandlerProps, hideStatusBarOnOpen, keyboardDismissMode, onClose, onOpen, open, overlayStyle, overlayAccessibilityLabel, statusBarAnimation, swipeEnabled, swipeEdgeWidth, swipeMinDistance, swipeMinVelocity, renderDrawerContent, children, }: Props): JSX.Element;
9
+ export {};
10
+ //# sourceMappingURL=Drawer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Drawer.d.ts","sourceRoot":"","sources":["../../../../../src/views/modern/Drawer.tsx"],"names":[],"mappings":";AA0BA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAe/C,KAAK,KAAK,GAAG,WAAW,GAAG;IACzB,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAC7B,MAAM,EACN,cAAc,EACd,WAAW,EACX,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,OAAO,EACP,MAAM,EACN,IAAI,EACJ,YAAY,EACZ,yBAAyB,EACzB,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,gBAAqC,EACrC,gBAAqC,EACrC,mBAAmB,EACnB,QAAQ,GACT,EAAE,KAAK,eAsUP"}
@@ -0,0 +1,89 @@
1
+ import * as React from 'react';
2
+ import Animated from 'react-native-reanimated';
3
+ declare const Overlay: React.ForwardRefExoticComponent<{
4
+ children?: React.ReactNode | Animated.Node<React.ReactNode>;
5
+ hitSlop?: import("react-native").Insets | Animated.Node<import("react-native").Insets | undefined> | undefined;
6
+ onLayout?: ((event: import("react-native").LayoutChangeEvent) => void) | Animated.Node<((event: import("react-native").LayoutChangeEvent) => void) | undefined> | undefined;
7
+ pointerEvents?: "none" | "auto" | "box-none" | "box-only" | Animated.Node<"none" | "auto" | "box-none" | "box-only" | undefined> | undefined;
8
+ removeClippedSubviews?: boolean | Animated.Node<boolean | undefined> | undefined;
9
+ testID?: string | Animated.Node<string | undefined> | undefined;
10
+ nativeID?: string | Animated.Node<string | undefined> | undefined;
11
+ collapsable?: boolean | Animated.Node<boolean | undefined> | undefined;
12
+ needsOffscreenAlphaCompositing?: boolean | Animated.Node<boolean | undefined> | undefined;
13
+ renderToHardwareTextureAndroid?: boolean | Animated.Node<boolean | undefined> | undefined;
14
+ focusable?: boolean | Animated.Node<boolean | undefined> | undefined;
15
+ shouldRasterizeIOS?: boolean | Animated.Node<boolean | undefined> | undefined;
16
+ isTVSelectable?: boolean | Animated.Node<boolean | undefined> | undefined;
17
+ hasTVPreferredFocus?: boolean | Animated.Node<boolean | undefined> | undefined;
18
+ tvParallaxProperties?: import("react-native").TVParallaxProperties | Animated.Node<import("react-native").TVParallaxProperties | undefined> | undefined;
19
+ tvParallaxShiftDistanceX?: number | Animated.Node<number | undefined> | undefined;
20
+ tvParallaxShiftDistanceY?: number | Animated.Node<number | undefined> | undefined;
21
+ tvParallaxTiltAngle?: number | Animated.Node<number | undefined> | undefined;
22
+ tvParallaxMagnification?: number | Animated.Node<number | undefined> | undefined;
23
+ onStartShouldSetResponder?: ((event: import("react-native").GestureResponderEvent) => boolean) | Animated.Node<((event: import("react-native").GestureResponderEvent) => boolean) | undefined> | undefined;
24
+ onMoveShouldSetResponder?: ((event: import("react-native").GestureResponderEvent) => boolean) | Animated.Node<((event: import("react-native").GestureResponderEvent) => boolean) | undefined> | undefined;
25
+ onResponderEnd?: ((event: import("react-native").GestureResponderEvent) => void) | Animated.Node<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
26
+ onResponderGrant?: ((event: import("react-native").GestureResponderEvent) => void) | Animated.Node<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
27
+ onResponderReject?: ((event: import("react-native").GestureResponderEvent) => void) | Animated.Node<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
28
+ onResponderMove?: ((event: import("react-native").GestureResponderEvent) => void) | Animated.Node<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
29
+ onResponderRelease?: ((event: import("react-native").GestureResponderEvent) => void) | Animated.Node<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
30
+ onResponderStart?: ((event: import("react-native").GestureResponderEvent) => void) | Animated.Node<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
31
+ onResponderTerminationRequest?: ((event: import("react-native").GestureResponderEvent) => boolean) | Animated.Node<((event: import("react-native").GestureResponderEvent) => boolean) | undefined> | undefined;
32
+ onResponderTerminate?: ((event: import("react-native").GestureResponderEvent) => void) | Animated.Node<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
33
+ onStartShouldSetResponderCapture?: ((event: import("react-native").GestureResponderEvent) => boolean) | Animated.Node<((event: import("react-native").GestureResponderEvent) => boolean) | undefined> | undefined;
34
+ onMoveShouldSetResponderCapture?: ((event: import("react-native").GestureResponderEvent) => boolean) | Animated.Node<((event: import("react-native").GestureResponderEvent) => boolean) | undefined> | undefined;
35
+ onTouchStart?: ((event: import("react-native").GestureResponderEvent) => void) | Animated.Node<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
36
+ onTouchMove?: ((event: import("react-native").GestureResponderEvent) => void) | Animated.Node<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
37
+ onTouchEnd?: ((event: import("react-native").GestureResponderEvent) => void) | Animated.Node<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
38
+ onTouchCancel?: ((event: import("react-native").GestureResponderEvent) => void) | Animated.Node<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
39
+ onTouchEndCapture?: ((event: import("react-native").GestureResponderEvent) => void) | Animated.Node<((event: import("react-native").GestureResponderEvent) => void) | undefined> | undefined;
40
+ onPointerEnter?: ((event: import("react-native").PointerEvent) => void) | Animated.Node<((event: import("react-native").PointerEvent) => void) | undefined> | undefined;
41
+ onPointerEnterCapture?: ((event: import("react-native").PointerEvent) => void) | Animated.Node<((event: import("react-native").PointerEvent) => void) | undefined> | undefined;
42
+ onPointerLeave?: ((event: import("react-native").PointerEvent) => void) | Animated.Node<((event: import("react-native").PointerEvent) => void) | undefined> | undefined;
43
+ onPointerLeaveCapture?: ((event: import("react-native").PointerEvent) => void) | Animated.Node<((event: import("react-native").PointerEvent) => void) | undefined> | undefined;
44
+ onPointerMove?: ((event: import("react-native").PointerEvent) => void) | Animated.Node<((event: import("react-native").PointerEvent) => void) | undefined> | undefined;
45
+ onPointerMoveCapture?: ((event: import("react-native").PointerEvent) => void) | Animated.Node<((event: import("react-native").PointerEvent) => void) | undefined> | undefined;
46
+ onPointerCancel?: ((event: import("react-native").PointerEvent) => void) | Animated.Node<((event: import("react-native").PointerEvent) => void) | undefined> | undefined;
47
+ onPointerCancelCapture?: ((event: import("react-native").PointerEvent) => void) | Animated.Node<((event: import("react-native").PointerEvent) => void) | undefined> | undefined;
48
+ onPointerDown?: ((event: import("react-native").PointerEvent) => void) | Animated.Node<((event: import("react-native").PointerEvent) => void) | undefined> | undefined;
49
+ onPointerDownCapture?: ((event: import("react-native").PointerEvent) => void) | Animated.Node<((event: import("react-native").PointerEvent) => void) | undefined> | undefined;
50
+ onPointerUp?: ((event: import("react-native").PointerEvent) => void) | Animated.Node<((event: import("react-native").PointerEvent) => void) | undefined> | undefined;
51
+ onPointerUpCapture?: ((event: import("react-native").PointerEvent) => void) | Animated.Node<((event: import("react-native").PointerEvent) => void) | undefined> | undefined;
52
+ accessible?: boolean | Animated.Node<boolean | undefined> | undefined;
53
+ accessibilityActions?: readonly Readonly<{
54
+ name: string;
55
+ label?: string | undefined;
56
+ }>[] | Animated.Node<readonly Readonly<{
57
+ name: string;
58
+ label?: string | undefined;
59
+ }>[] | undefined> | undefined;
60
+ accessibilityLabel?: string | Animated.Node<string | undefined> | undefined;
61
+ accessibilityRole?: import("react-native").AccessibilityRole | Animated.Node<import("react-native").AccessibilityRole | undefined> | undefined;
62
+ accessibilityState?: import("react-native").AccessibilityState | Animated.Node<import("react-native").AccessibilityState | undefined> | undefined;
63
+ accessibilityHint?: string | Animated.Node<string | undefined> | undefined;
64
+ accessibilityValue?: import("react-native").AccessibilityValue | Animated.Node<import("react-native").AccessibilityValue | undefined> | undefined;
65
+ onAccessibilityAction?: ((event: import("react-native").AccessibilityActionEvent) => void) | Animated.Node<((event: import("react-native").AccessibilityActionEvent) => void) | undefined> | undefined;
66
+ accessibilityLabelledBy?: string | string[] | Animated.Node<string | string[] | undefined> | undefined;
67
+ accessibilityLiveRegion?: "none" | "polite" | "assertive" | Animated.Node<"none" | "polite" | "assertive" | undefined> | undefined;
68
+ importantForAccessibility?: "auto" | "no-hide-descendants" | "yes" | "no" | Animated.Node<"auto" | "no-hide-descendants" | "yes" | "no" | undefined> | undefined;
69
+ accessibilityElementsHidden?: boolean | Animated.Node<boolean | undefined> | undefined;
70
+ accessibilityLanguage?: string | Animated.Node<string | undefined> | undefined;
71
+ accessibilityViewIsModal?: boolean | Animated.Node<boolean | undefined> | undefined;
72
+ onAccessibilityEscape?: (() => void) | Animated.Node<(() => void) | undefined> | undefined;
73
+ onAccessibilityTap?: (() => void) | Animated.Node<(() => void) | undefined> | undefined;
74
+ onMagicTap?: (() => void) | Animated.Node<(() => void) | undefined> | undefined;
75
+ accessibilityIgnoresInvertColors?: boolean | Animated.Node<boolean | undefined> | undefined;
76
+ } & {
77
+ style?: import("react-native").StyleProp<Animated.AnimateStyle<import("react-native").StyleProp<import("react-native").ViewStyle>>>;
78
+ } & {
79
+ animatedProps?: Partial<Animated.AnimateProps<import("react-native").ViewProps>> | undefined;
80
+ layout?: import("react-native-reanimated").BaseAnimationBuilder | import("react-native-reanimated").LayoutAnimationFunction | typeof import("react-native-reanimated").BaseAnimationBuilder | undefined;
81
+ entering?: import("react-native-reanimated").BaseAnimationBuilder | typeof import("react-native-reanimated").BaseAnimationBuilder | import("react-native-reanimated").EntryExitAnimationFunction | import("react-native-reanimated").Keyframe | undefined;
82
+ exiting?: import("react-native-reanimated").BaseAnimationBuilder | typeof import("react-native-reanimated").BaseAnimationBuilder | import("react-native-reanimated").EntryExitAnimationFunction | import("react-native-reanimated").Keyframe | undefined;
83
+ } & {
84
+ progress: Animated.SharedValue<number>;
85
+ onPress: () => void;
86
+ accessibilityLabel?: string | undefined;
87
+ } & React.RefAttributes<Animated.View>>;
88
+ export default Overlay;
89
+ //# sourceMappingURL=Overlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Overlay.d.ts","sourceRoot":"","sources":["../../../../../src/views/modern/Overlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,QAGN,MAAM,yBAAyB,CAAC;AAUjC,QAAA,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cALD,SAAS,WAAW,CAAC,MAAM,CAAC;aAC7B,MAAM,IAAI;;uCAgDnB,CAAC;AAsBH,eAAe,OAAO,CAAC"}
package/package.json CHANGED
@@ -1,107 +1,67 @@
1
1
  {
2
2
  "name": "react-native-drawer-layout",
3
- "version": "2.0.0",
4
- "description": "A platform-agnostic drawer layout. Pure JavaScript implementation on iOS and native implementation on Android. Why? Because the drawer layout is a useful component regardless of the platform! And if you can use it without changing any code, that's perfect.",
5
- "main": "dist/DrawerLayout.js",
6
- "scripts": {
7
- "babel": "babel src --out-dir dist",
8
- "build": "npm run-script clear && npm run-script babel",
9
- "clear": "rm -rf dist/ && mkdir dist/",
10
- "lint:staged": "lint-staged",
11
- "prepublish": "npm run build",
12
- "test": "flow --show-all-errors",
13
- "format": "prettier --write --single-quote --trailing-comma all --tab-width 4 src/**/*.js"
14
- },
15
- "lint-staged": {
16
- "*.js": [
17
- "prettier --write --single-quote --trailing-comma all --tabWidth 4",
18
- "git add"
19
- ]
20
- },
21
- "pre-commit": [
22
- "lint:staged",
23
- "test"
24
- ],
25
- "files": [
26
- "dist/"
27
- ],
28
- "repository": {
29
- "type": "git",
30
- "url": "git@github.com:react-native-community/react-native-drawer-layout.git"
31
- },
32
- "author": "Brent Vatne <brentvatne@gmail.com> (https://github.com/brentvatne)",
33
- "contributors": [
34
- {
35
- "name": "Marc Mendiola",
36
- "email": "marc@iodine.com"
37
- },
38
- {
39
- "name": "Daniel Schmidt",
40
- "email": "daniel.maximilian@gmx.net",
41
- "url": "http://danielmschmidt.de"
42
- }
43
- ],
44
- "xo": {
45
- "ignores": [
46
- "DrawerLayoutExample/**",
47
- "dist/*"
48
- ],
49
- "esnext": true,
50
- "plugins": [
51
- "react"
52
- ],
53
- "rules": {
54
- "indent": 0,
55
- "babel/object-curly-spacing": [
56
- 2,
57
- "always"
58
- ],
59
- "comma-dangle": [
60
- 2,
61
- "always-multiline"
62
- ],
63
- "react/jsx-curly-spacing": 2,
64
- "strict": [
65
- 2,
66
- "never"
67
- ],
68
- "no-use-before-define": 0,
69
- "one-var": [
70
- 2,
71
- {
72
- "uninitialized": "always",
73
- "initialized": "never"
74
- }
75
- ],
76
- "react/no-set-state": 1,
77
- "react/prop-types": 2,
78
- "react/jsx-sort-prop-types": 2,
79
- "react/self-closing-comp": 2
80
- }
81
- },
3
+ "description": "Drawer component for React Native",
4
+ "version": "3.1.0",
82
5
  "keywords": [
83
- "react",
6
+ "react-native-component",
7
+ "react-component",
84
8
  "react-native",
85
9
  "ios",
86
10
  "android",
87
11
  "drawer",
88
- "layout",
89
- "menu"
12
+ "swipe"
90
13
  ],
91
14
  "license": "MIT",
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "https://github.com/react-navigation/react-navigation.git",
18
+ "directory": "packages/react-native-drawer-layout"
19
+ },
20
+ "bugs": {
21
+ "url": "https://github.com/react-navigation/react-navigation/issues"
22
+ },
23
+ "homepage": "https://github.com/react-navigation/react-navigation/tree/main/packages/react-native-drawer-layout#readme",
24
+ "main": "lib/commonjs/index.js",
25
+ "react-native": "src/index.tsx",
26
+ "source": "src/index.tsx",
27
+ "module": "lib/module/index.js",
28
+ "types": "lib/typescript/src/index.d.ts",
29
+ "files": [
30
+ "src",
31
+ "lib",
32
+ "!**/__tests__"
33
+ ],
34
+ "sideEffects": false,
35
+ "scripts": {
36
+ "prepack": "bob build",
37
+ "clean": "del lib"
38
+ },
39
+ "devDependencies": {
40
+ "del-cli": "^5.0.0",
41
+ "react": "18.1.0",
42
+ "react-native": "0.70.5",
43
+ "react-native-builder-bob": "^0.20.3",
44
+ "typescript": "^4.9.4"
45
+ },
92
46
  "peerDependencies": {
93
47
  "react": "*",
94
- "react-native": "*"
48
+ "react-native": "*",
49
+ "react-native-gesture-handler": ">= 1.0.0",
50
+ "react-native-reanimated": ">= 1.0.0"
95
51
  },
96
- "devDependencies": {
97
- "babel-cli": "^6.0.0",
98
- "babel-plugin-transform-decorators-legacy": "^1.3.4",
99
- "babel-preset-react-native": "^1.8.0",
100
- "flow-bin": "^0.42.0",
101
- "lint-staged": "^3.3.1",
102
- "pre-commit": "^1.2.2",
103
- "prettier": "^0.19.0",
104
- "react": "16.0.0-alpha.12",
105
- "react-native": "0.48.1"
106
- }
52
+ "react-native-builder-bob": {
53
+ "source": "src",
54
+ "output": "lib",
55
+ "targets": [
56
+ "commonjs",
57
+ "module",
58
+ [
59
+ "typescript",
60
+ {
61
+ "project": "tsconfig.build.json"
62
+ }
63
+ ]
64
+ ]
65
+ },
66
+ "gitHead": "ad722b882e0c40b1d1bc025d70112ddb126f265e"
107
67
  }
@@ -0,0 +1,4 @@
1
+ export const SWIPE_MIN_OFFSET = 5;
2
+ export const SWIPE_MIN_DISTANCE = 60;
3
+ export const SWIPE_MIN_VELOCITY = 500;
4
+ export const DEFAULT_DRAWER_WIDTH = '80%';
package/src/index.tsx ADDED
@@ -0,0 +1,4 @@
1
+ export { default as DrawerGestureContext } from './utils/DrawerGestureContext';
2
+ export { default as DrawerProgressContext } from './utils/DrawerProgressContext';
3
+ export { default as useDrawerProgress } from './utils/useDrawerProgress';
4
+ export { default as Drawer } from './views/Drawer';
package/src/types.tsx ADDED
@@ -0,0 +1,122 @@
1
+ import type { StyleProp, ViewStyle } from 'react-native';
2
+ import type { PanGestureHandler } from 'react-native-gesture-handler';
3
+
4
+ export type Layout = { width: number; height: number };
5
+
6
+ export type DrawerProps = {
7
+ /**
8
+ * Whether the drawer is open or not.
9
+ */
10
+ open: boolean;
11
+
12
+ /**
13
+ * Callback which is called when the drawer is opened.
14
+ */
15
+ onOpen: () => void;
16
+
17
+ /**
18
+ * Callback which is called when the drawer is closed.
19
+ */
20
+ onClose: () => void;
21
+
22
+ /**
23
+ * Callback which returns a react element to render as the content of the drawer.
24
+ */
25
+ renderDrawerContent: () => React.ReactNode;
26
+
27
+ /**
28
+ * Object containing the layout of the container.
29
+ * Defaults to the dimensions of the application's window.
30
+ */
31
+ layout?: { width: number; height: number };
32
+
33
+ /**
34
+ * Position of the drawer on the screen.
35
+ * Defaults to `right` in RTL mode, otherwise `left`.
36
+ */
37
+ drawerPosition?: 'left' | 'right';
38
+
39
+ /**
40
+ * Type of the drawer. It determines how the drawer looks and animates.
41
+ * - `front`: Traditional drawer which covers the screen with a overlay behind it.
42
+ * - `back`: The drawer is revealed behind the screen on swipe.
43
+ * - `slide`: Both the screen and the drawer slide on swipe to reveal the drawer.
44
+ * - `permanent`: A permanent drawer is shown as a sidebar.
45
+ *
46
+ * Defaults to `slide` on iOS and `front` on other platforms.
47
+ */
48
+ drawerType?: 'front' | 'back' | 'slide' | 'permanent';
49
+
50
+ /**
51
+ * Style object for the drawer component.
52
+ * You can pass a custom background color for drawer or a custom width here.
53
+ */
54
+ drawerStyle?: StyleProp<ViewStyle>;
55
+
56
+ /**
57
+ * Style object for the drawer overlay.
58
+ */
59
+ overlayStyle?: StyleProp<ViewStyle>;
60
+
61
+ /**
62
+ * Accessibility label for the overlay. This is read by the screen reader when the user taps the overlay.
63
+ * Defaults to "Close drawer".
64
+ */
65
+ overlayAccessibilityLabel?: string;
66
+
67
+ /**
68
+ * Whether the keyboard should be dismissed when the swipe gesture begins.
69
+ * Defaults to `'on-drag'`. Set to `'none'` to disable keyboard handling.
70
+ */
71
+ keyboardDismissMode?: 'none' | 'on-drag';
72
+
73
+ /**
74
+ * Whether the statusbar should be hidden when the drawer is pulled or opens.
75
+ * Defaults to `false`.
76
+ */
77
+ hideStatusBarOnOpen?: boolean;
78
+
79
+ /**
80
+ * Animation of the statusbar when hiding it. Use in combination with `hideStatusBarOnOpen`.
81
+ */
82
+ statusBarAnimation?: 'slide' | 'fade' | 'none';
83
+
84
+ /**
85
+ * Whether you can use swipe gestures to open or close the drawer.
86
+ * Defaults to `true`.
87
+ * This is not supported on Web.
88
+ */
89
+ swipeEnabled?: boolean;
90
+
91
+ /**
92
+ * How far from the edge of the screen the swipe gesture should activate.
93
+ * Defaults to `32`.
94
+ * This is not supported on Web.
95
+ */
96
+ swipeEdgeWidth?: number;
97
+
98
+ /**
99
+ * Minimum swipe distance that should activate opening the drawer.
100
+ * Defaults to `60`.
101
+ * This is not supported on Web.
102
+ */
103
+ swipeMinDistance?: number;
104
+
105
+ /**
106
+ * Minimum swipe velocity that should activate opening the drawer.
107
+ * Defaults to `500`.
108
+ * This is not supported on Web.
109
+ */
110
+ swipeMinVelocity?: number;
111
+
112
+ /**
113
+ * Props to pass to the underlying pan gesture handler.
114
+ * This is not supported on Web.
115
+ */
116
+ gestureHandlerProps?: React.ComponentProps<typeof PanGestureHandler>;
117
+
118
+ /**
119
+ * Content that the drawer should wrap.
120
+ */
121
+ children: React.ReactNode;
122
+ };
@@ -0,0 +1,3 @@
1
+ import * as React from 'react';
2
+
3
+ export default React.createContext<React.RefObject<any> | null>(null);
@@ -0,0 +1,6 @@
1
+ import * as React from 'react';
2
+ import type Animated from 'react-native-reanimated';
3
+
4
+ export default React.createContext<
5
+ Readonly<Animated.SharedValue<number>> | Animated.Node<number> | undefined
6
+ >(undefined);
@@ -0,0 +1,18 @@
1
+ import * as React from 'react';
2
+ import type Animated from 'react-native-reanimated';
3
+
4
+ import DrawerProgressContext from './DrawerProgressContext';
5
+
6
+ export default function useDrawerProgress():
7
+ | Readonly<Animated.SharedValue<number>>
8
+ | Animated.Node<number> {
9
+ const progress = React.useContext(DrawerProgressContext);
10
+
11
+ if (progress === undefined) {
12
+ throw new Error(
13
+ "Couldn't find a drawer. Is your component inside a drawer?"
14
+ );
15
+ }
16
+
17
+ return progress;
18
+ }