react-native-gesture-handler 2.23.1 → 2.24.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 (73) hide show
  1. package/android/build.gradle +9 -3
  2. package/android/paper/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerInterface.java +2 -1
  3. package/android/paper/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerInterface.java +2 -1
  4. package/android/paper77/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerDelegate.java +60 -0
  5. package/android/paper77/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerInterface.java +26 -0
  6. package/android/paper77/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerDelegate.java +26 -0
  7. package/android/paper77/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerInterface.java +16 -0
  8. package/android/paper77/src/main/java/com/swmansion/gesturehandler/NativeRNGestureHandlerModuleSpec.java +67 -0
  9. package/android/paper77/src/main/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +13 -0
  10. package/lib/commonjs/components/GestureComponents.js.map +1 -1
  11. package/lib/commonjs/components/ReanimatedDrawerLayout.js +10 -6
  12. package/lib/commonjs/components/ReanimatedDrawerLayout.js.map +1 -1
  13. package/lib/commonjs/components/Text.js +5 -1
  14. package/lib/commonjs/components/Text.js.map +1 -1
  15. package/lib/commonjs/components/touchables/ExtraButtonProps.js +2 -0
  16. package/lib/commonjs/components/touchables/ExtraButtonProps.js.map +1 -0
  17. package/lib/commonjs/components/touchables/GenericTouchable.js.map +1 -1
  18. package/lib/commonjs/components/touchables/TouchableWithoutFeedback.js +12 -4
  19. package/lib/commonjs/components/touchables/TouchableWithoutFeedback.js.map +1 -1
  20. package/lib/commonjs/handlers/createHandler.js +13 -10
  21. package/lib/commonjs/handlers/createHandler.js.map +1 -1
  22. package/lib/commonjs/handlers/createNativeWrapper.js +5 -3
  23. package/lib/commonjs/handlers/createNativeWrapper.js.map +1 -1
  24. package/lib/commonjs/handlers/gestures/GestureDetector/Wrap.web.js +3 -5
  25. package/lib/commonjs/handlers/gestures/GestureDetector/Wrap.web.js.map +1 -1
  26. package/lib/commonjs/utils.js +9 -0
  27. package/lib/commonjs/utils.js.map +1 -1
  28. package/lib/commonjs/web/utils.js +23 -3
  29. package/lib/commonjs/web/utils.js.map +1 -1
  30. package/lib/module/components/GestureComponents.js.map +1 -1
  31. package/lib/module/components/ReanimatedDrawerLayout.js +10 -6
  32. package/lib/module/components/ReanimatedDrawerLayout.js.map +1 -1
  33. package/lib/module/components/Text.js +5 -1
  34. package/lib/module/components/Text.js.map +1 -1
  35. package/lib/module/components/touchables/ExtraButtonProps.js +2 -0
  36. package/lib/module/components/touchables/ExtraButtonProps.js.map +1 -0
  37. package/lib/module/components/touchables/GenericTouchable.js.map +1 -1
  38. package/lib/module/components/touchables/TouchableWithoutFeedback.js +12 -4
  39. package/lib/module/components/touchables/TouchableWithoutFeedback.js.map +1 -1
  40. package/lib/module/handlers/createHandler.js +14 -11
  41. package/lib/module/handlers/createHandler.js.map +1 -1
  42. package/lib/module/handlers/createNativeWrapper.js +5 -3
  43. package/lib/module/handlers/createNativeWrapper.js.map +1 -1
  44. package/lib/module/handlers/gestures/GestureDetector/Wrap.web.js +2 -4
  45. package/lib/module/handlers/gestures/GestureDetector/Wrap.web.js.map +1 -1
  46. package/lib/module/utils.js +4 -0
  47. package/lib/module/utils.js.map +1 -1
  48. package/lib/module/web/utils.js +18 -2
  49. package/lib/module/web/utils.js.map +1 -1
  50. package/lib/typescript/components/GestureComponents.d.ts +1 -1
  51. package/lib/typescript/components/ReanimatedDrawerLayout.d.ts +5 -0
  52. package/lib/typescript/components/touchables/ExtraButtonProps.d.ts +7 -0
  53. package/lib/typescript/components/touchables/GenericTouchable.d.ts +0 -2
  54. package/lib/typescript/components/touchables/GenericTouchableProps.d.ts +2 -0
  55. package/lib/typescript/components/touchables/TouchableNativeFeedback.android.d.ts +2 -2
  56. package/lib/typescript/components/touchables/TouchableNativeFeedbackProps.d.ts +2 -6
  57. package/lib/typescript/handlers/gestures/GestureDetector/utils.d.ts +1 -1
  58. package/lib/typescript/utils.d.ts +1 -0
  59. package/lib/typescript/web/utils.d.ts +2 -0
  60. package/package.json +9 -8
  61. package/src/components/GestureComponents.tsx +1 -1
  62. package/src/components/ReanimatedDrawerLayout.tsx +17 -4
  63. package/src/components/Text.tsx +5 -0
  64. package/src/components/touchables/ExtraButtonProps.ts +7 -0
  65. package/src/components/touchables/GenericTouchable.tsx +0 -2
  66. package/src/components/touchables/GenericTouchableProps.ts +2 -0
  67. package/src/components/touchables/TouchableNativeFeedbackProps.tsx +2 -7
  68. package/src/components/touchables/TouchableWithoutFeedback.tsx +20 -2
  69. package/src/handlers/createHandler.tsx +20 -9
  70. package/src/handlers/createNativeWrapper.tsx +7 -3
  71. package/src/handlers/gestures/GestureDetector/Wrap.web.tsx +2 -4
  72. package/src/utils.ts +6 -0
  73. package/src/web/utils.ts +21 -3
@@ -125,7 +125,8 @@ android {
125
125
  cppFlags "-O2", "-frtti", "-fexceptions", "-Wall", "-Werror", "-std=c++20", "-DANDROID"
126
126
  arguments "-DREACT_NATIVE_DIR=${REACT_NATIVE_DIR}",
127
127
  "-DREACT_NATIVE_MINOR_VERSION=${REACT_NATIVE_MINOR_VERSION}",
128
- "-DANDROID_STL=c++_shared"
128
+ "-DANDROID_STL=c++_shared",
129
+ "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON"
129
130
  abiFilters (*reactNativeArchitectures())
130
131
  }
131
132
  }
@@ -170,9 +171,14 @@ android {
170
171
  if (isNewArchitectureEnabled()) {
171
172
  srcDirs += 'fabric/src/main/java'
172
173
  } else {
173
- // this folder also includes files from codegen so the library can compile with
174
+ // 'paper/src/main/java' includes files from codegen so the library can compile with
174
175
  // codegen turned off
175
- srcDirs += 'paper/src/main/java'
176
+
177
+ if (REACT_NATIVE_MINOR_VERSION > 77){
178
+ srcDirs += 'paper/src/main/java'
179
+ } else {
180
+ srcDirs += 'paper77/src/main/java'
181
+ }
176
182
  }
177
183
 
178
184
  if (REACT_NATIVE_MINOR_VERSION >= 77) {
@@ -11,8 +11,9 @@ package com.facebook.react.viewmanagers;
11
11
 
12
12
  import android.view.View;
13
13
  import androidx.annotation.Nullable;
14
+ import com.facebook.react.uimanager.ViewManagerWithGeneratedInterface;
14
15
 
15
- public interface RNGestureHandlerButtonManagerInterface<T extends View> {
16
+ public interface RNGestureHandlerButtonManagerInterface<T extends View> extends ViewManagerWithGeneratedInterface {
16
17
  void setExclusive(T view, boolean value);
17
18
  void setForeground(T view, boolean value);
18
19
  void setBorderless(T view, boolean value);
@@ -10,7 +10,8 @@
10
10
  package com.facebook.react.viewmanagers;
11
11
 
12
12
  import android.view.View;
13
+ import com.facebook.react.uimanager.ViewManagerWithGeneratedInterface;
13
14
 
14
- public interface RNGestureHandlerRootViewManagerInterface<T extends View> {
15
+ public interface RNGestureHandlerRootViewManagerInterface<T extends View> extends ViewManagerWithGeneratedInterface {
15
16
  // No props
16
17
  }
@@ -0,0 +1,60 @@
1
+ /**
2
+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
3
+ *
4
+ * Do not edit this file as changes may cause incorrect behavior and will be lost
5
+ * once the code is regenerated.
6
+ *
7
+ * @generated by codegen project: GeneratePropsJavaDelegate.js
8
+ */
9
+
10
+ package com.facebook.react.viewmanagers;
11
+
12
+ import android.view.View;
13
+ import androidx.annotation.Nullable;
14
+ import com.facebook.react.bridge.ColorPropConverter;
15
+ import com.facebook.react.uimanager.BaseViewManager;
16
+ import com.facebook.react.uimanager.BaseViewManagerDelegate;
17
+ import com.facebook.react.uimanager.LayoutShadowNode;
18
+
19
+ public class RNGestureHandlerButtonManagerDelegate<T extends View, U extends BaseViewManager<T, ? extends LayoutShadowNode> & RNGestureHandlerButtonManagerInterface<T>> extends BaseViewManagerDelegate<T, U> {
20
+ public RNGestureHandlerButtonManagerDelegate(U viewManager) {
21
+ super(viewManager);
22
+ }
23
+ @Override
24
+ public void setProperty(T view, String propName, @Nullable Object value) {
25
+ switch (propName) {
26
+ case "exclusive":
27
+ mViewManager.setExclusive(view, value == null ? true : (boolean) value);
28
+ break;
29
+ case "foreground":
30
+ mViewManager.setForeground(view, value == null ? false : (boolean) value);
31
+ break;
32
+ case "borderless":
33
+ mViewManager.setBorderless(view, value == null ? false : (boolean) value);
34
+ break;
35
+ case "enabled":
36
+ mViewManager.setEnabled(view, value == null ? true : (boolean) value);
37
+ break;
38
+ case "rippleColor":
39
+ mViewManager.setRippleColor(view, ColorPropConverter.getColor(value, view.getContext()));
40
+ break;
41
+ case "rippleRadius":
42
+ mViewManager.setRippleRadius(view, value == null ? 0 : ((Double) value).intValue());
43
+ break;
44
+ case "touchSoundDisabled":
45
+ mViewManager.setTouchSoundDisabled(view, value == null ? false : (boolean) value);
46
+ break;
47
+ case "borderWidth":
48
+ mViewManager.setBorderWidth(view, value == null ? 0f : ((Double) value).floatValue());
49
+ break;
50
+ case "borderColor":
51
+ mViewManager.setBorderColor(view, ColorPropConverter.getColor(value, view.getContext()));
52
+ break;
53
+ case "borderStyle":
54
+ mViewManager.setBorderStyle(view, value == null ? "solid" : (String) value);
55
+ break;
56
+ default:
57
+ super.setProperty(view, propName, value);
58
+ }
59
+ }
60
+ }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
3
+ *
4
+ * Do not edit this file as changes may cause incorrect behavior and will be lost
5
+ * once the code is regenerated.
6
+ *
7
+ * @generated by codegen project: GeneratePropsJavaInterface.js
8
+ */
9
+
10
+ package com.facebook.react.viewmanagers;
11
+
12
+ import android.view.View;
13
+ import androidx.annotation.Nullable;
14
+
15
+ public interface RNGestureHandlerButtonManagerInterface<T extends View> {
16
+ void setExclusive(T view, boolean value);
17
+ void setForeground(T view, boolean value);
18
+ void setBorderless(T view, boolean value);
19
+ void setEnabled(T view, boolean value);
20
+ void setRippleColor(T view, @Nullable Integer value);
21
+ void setRippleRadius(T view, int value);
22
+ void setTouchSoundDisabled(T view, boolean value);
23
+ void setBorderWidth(T view, float value);
24
+ void setBorderColor(T view, @Nullable Integer value);
25
+ void setBorderStyle(T view, @Nullable String value);
26
+ }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
3
+ *
4
+ * Do not edit this file as changes may cause incorrect behavior and will be lost
5
+ * once the code is regenerated.
6
+ *
7
+ * @generated by codegen project: GeneratePropsJavaDelegate.js
8
+ */
9
+
10
+ package com.facebook.react.viewmanagers;
11
+
12
+ import android.view.View;
13
+ import androidx.annotation.Nullable;
14
+ import com.facebook.react.uimanager.BaseViewManager;
15
+ import com.facebook.react.uimanager.BaseViewManagerDelegate;
16
+ import com.facebook.react.uimanager.LayoutShadowNode;
17
+
18
+ public class RNGestureHandlerRootViewManagerDelegate<T extends View, U extends BaseViewManager<T, ? extends LayoutShadowNode> & RNGestureHandlerRootViewManagerInterface<T>> extends BaseViewManagerDelegate<T, U> {
19
+ public RNGestureHandlerRootViewManagerDelegate(U viewManager) {
20
+ super(viewManager);
21
+ }
22
+ @Override
23
+ public void setProperty(T view, String propName, @Nullable Object value) {
24
+ super.setProperty(view, propName, value);
25
+ }
26
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
3
+ *
4
+ * Do not edit this file as changes may cause incorrect behavior and will be lost
5
+ * once the code is regenerated.
6
+ *
7
+ * @generated by codegen project: GeneratePropsJavaInterface.js
8
+ */
9
+
10
+ package com.facebook.react.viewmanagers;
11
+
12
+ import android.view.View;
13
+
14
+ public interface RNGestureHandlerRootViewManagerInterface<T extends View> {
15
+ // No props
16
+ }
@@ -0,0 +1,67 @@
1
+
2
+ /**
3
+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
4
+ *
5
+ * Do not edit this file as changes may cause incorrect behavior and will be lost
6
+ * once the code is regenerated.
7
+ *
8
+ * @generated by codegen project: GenerateModuleJavaSpec.js
9
+ *
10
+ * @nolint
11
+ */
12
+
13
+ package com.swmansion.gesturehandler;
14
+
15
+ import com.facebook.proguard.annotations.DoNotStrip;
16
+ import com.facebook.react.bridge.ReactApplicationContext;
17
+ import com.facebook.react.bridge.ReactContextBaseJavaModule;
18
+ import com.facebook.react.bridge.ReactMethod;
19
+ import com.facebook.react.bridge.ReactModuleWithSpec;
20
+ import com.facebook.react.bridge.ReadableMap;
21
+ import com.facebook.react.turbomodule.core.interfaces.TurboModule;
22
+ import javax.annotation.Nonnull;
23
+
24
+ public abstract class NativeRNGestureHandlerModuleSpec extends ReactContextBaseJavaModule implements ReactModuleWithSpec, TurboModule {
25
+ public static final String NAME = "RNGestureHandlerModule";
26
+
27
+ public NativeRNGestureHandlerModuleSpec(ReactApplicationContext reactContext) {
28
+ super(reactContext);
29
+ }
30
+
31
+ @Override
32
+ public @Nonnull String getName() {
33
+ return NAME;
34
+ }
35
+
36
+ @ReactMethod
37
+ @DoNotStrip
38
+ public abstract void handleSetJSResponder(double tag, boolean blockNativeResponder);
39
+
40
+ @ReactMethod
41
+ @DoNotStrip
42
+ public abstract void handleClearJSResponder();
43
+
44
+ @ReactMethod
45
+ @DoNotStrip
46
+ public abstract void createGestureHandler(String handlerName, double handlerTag, ReadableMap config);
47
+
48
+ @ReactMethod
49
+ @DoNotStrip
50
+ public abstract void attachGestureHandler(double handlerTag, double newView, double actionType);
51
+
52
+ @ReactMethod
53
+ @DoNotStrip
54
+ public abstract void updateGestureHandler(double handlerTag, ReadableMap newConfig);
55
+
56
+ @ReactMethod
57
+ @DoNotStrip
58
+ public abstract void dropGestureHandler(double handlerTag);
59
+
60
+ @ReactMethod(isBlockingSynchronousMethod = true)
61
+ @DoNotStrip
62
+ public abstract boolean install();
63
+
64
+ @ReactMethod
65
+ @DoNotStrip
66
+ public abstract void flushOperations();
67
+ }
@@ -0,0 +1,13 @@
1
+ package com.swmansion.gesturehandler
2
+
3
+ import com.facebook.react.bridge.ReactContext
4
+ import com.facebook.react.uimanager.UIManagerModule
5
+ import com.facebook.react.uimanager.events.Event
6
+
7
+ fun ReactContext.dispatchEvent(event: Event<*>) {
8
+ try {
9
+ this.getNativeModule(UIManagerModule::class.java)!!.eventDispatcher.dispatchEvent(event)
10
+ } catch (e: NullPointerException) {
11
+ throw Exception("Couldn't get an instance of UIManagerModule. Gesture Handler is unable to send an event.", e)
12
+ }
13
+ }
@@ -1 +1 @@
1
- {"version":3,"sources":["GestureComponents.tsx"],"names":["RefreshControl","RNRefreshControl","disallowInterruption","shouldCancelWhenOutside","GHScrollView","RNScrollView","ScrollView","React","forwardRef","props","ref","refreshControlGestureRef","useRef","refreshControl","waitFor","rest","cloneElement","undefined","Switch","RNSwitch","shouldActivateOnStart","TextInput","RNTextInput","DrawerLayoutAndroid","RNDrawerLayoutAndroid","FlatList","flatListProps","scrollViewProps","propName","value","Object","entries","nativeViewProps","includes","scrollProps"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n PropsWithChildren,\n ForwardedRef,\n RefAttributes,\n ReactElement,\n} from 'react';\nimport {\n ScrollView as RNScrollView,\n ScrollViewProps as RNScrollViewProps,\n Switch as RNSwitch,\n SwitchProps as RNSwitchProps,\n TextInput as RNTextInput,\n TextInputProps as RNTextInputProps,\n DrawerLayoutAndroid as RNDrawerLayoutAndroid,\n DrawerLayoutAndroidProps as RNDrawerLayoutAndroidProps,\n FlatList as RNFlatList,\n FlatListProps as RNFlatListProps,\n RefreshControl as RNRefreshControl,\n} from 'react-native';\n\nimport createNativeWrapper from '../handlers/createNativeWrapper';\n\nimport {\n NativeViewGestureHandlerProps,\n nativeViewProps,\n} from '../handlers/NativeViewGestureHandler';\n\nimport { toArray } from '../utils';\n\nexport const RefreshControl = createNativeWrapper(RNRefreshControl, {\n disallowInterruption: true,\n shouldCancelWhenOutside: false,\n});\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type RefreshControl = typeof RefreshControl & RNRefreshControl;\n\nconst GHScrollView = createNativeWrapper<PropsWithChildren<RNScrollViewProps>>(\n RNScrollView,\n {\n disallowInterruption: true,\n shouldCancelWhenOutside: false,\n }\n);\nexport const ScrollView = React.forwardRef<\n RNScrollView,\n RNScrollViewProps & NativeViewGestureHandlerProps\n>((props, ref) => {\n const refreshControlGestureRef = React.useRef<RefreshControl>(null);\n const { refreshControl, waitFor, ...rest } = props;\n\n return (\n <GHScrollView\n {...rest}\n // @ts-ignore `ref` exists on `GHScrollView`\n ref={ref}\n waitFor={[...toArray(waitFor ?? []), refreshControlGestureRef]}\n // @ts-ignore we don't pass `refreshing` prop as we only want to override the ref\n refreshControl={\n refreshControl\n ? React.cloneElement(refreshControl, {\n // @ts-ignore for reasons unknown to me, `ref` doesn't exist on the type inferred by TS\n ref: refreshControlGestureRef,\n })\n : undefined\n }\n />\n );\n});\n// Backward type compatibility with https://github.com/software-mansion/react-native-gesture-handler/blob/db78d3ca7d48e8ba57482d3fe9b0a15aa79d9932/react-native-gesture-handler.d.ts#L440-L457\n// include methods of wrapped components by creating an intersection type with the RN component instead of duplicating them.\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type ScrollView = typeof GHScrollView & RNScrollView;\n\nexport const Switch = createNativeWrapper<RNSwitchProps>(RNSwitch, {\n shouldCancelWhenOutside: false,\n shouldActivateOnStart: true,\n disallowInterruption: true,\n});\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type Switch = typeof Switch & RNSwitch;\n\nexport const TextInput = createNativeWrapper<RNTextInputProps>(RNTextInput);\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type TextInput = typeof TextInput & RNTextInput;\n\nexport const DrawerLayoutAndroid = createNativeWrapper<\n PropsWithChildren<RNDrawerLayoutAndroidProps>\n>(RNDrawerLayoutAndroid, { disallowInterruption: true });\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type DrawerLayoutAndroid = typeof DrawerLayoutAndroid &\n RNDrawerLayoutAndroid;\n\nexport const FlatList = React.forwardRef((props, ref) => {\n const refreshControlGestureRef = React.useRef<RefreshControl>(null);\n\n const { waitFor, refreshControl, ...rest } = props;\n\n const flatListProps = {};\n const scrollViewProps = {};\n for (const [propName, value] of Object.entries(rest)) {\n // https://github.com/microsoft/TypeScript/issues/26255\n if ((nativeViewProps as readonly string[]).includes(propName)) {\n // @ts-ignore - this function cannot have generic type so we have to ignore this error\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n scrollViewProps[propName] = value;\n } else {\n // @ts-ignore - this function cannot have generic type so we have to ignore this error\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n flatListProps[propName] = value;\n }\n }\n\n return (\n // @ts-ignore - this function cannot have generic type so we have to ignore this error\n <RNFlatList\n ref={ref}\n {...flatListProps}\n renderScrollComponent={(scrollProps) => (\n <ScrollView\n {...{\n ...scrollProps,\n ...scrollViewProps,\n waitFor: [...toArray(waitFor ?? []), refreshControlGestureRef],\n }}\n />\n )}\n // @ts-ignore we don't pass `refreshing` prop as we only want to override the ref\n refreshControl={\n refreshControl\n ? React.cloneElement(refreshControl, {\n // @ts-ignore for reasons unknown to me, `ref` doesn't exist on the type inferred by TS\n ref: refreshControlGestureRef,\n })\n : undefined\n }\n />\n );\n}) as <ItemT = any>(\n props: PropsWithChildren<\n Omit<RNFlatListProps<ItemT>, 'renderScrollComponent'> &\n RefAttributes<FlatList<ItemT>> &\n NativeViewGestureHandlerProps\n >,\n ref: ForwardedRef<FlatList<ItemT>>\n) => ReactElement | null;\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type FlatList<ItemT = any> = typeof FlatList & RNFlatList<ItemT>;\n"]}
1
+ {"version":3,"sources":["GestureComponents.tsx"],"names":["RefreshControl","RNRefreshControl","disallowInterruption","shouldCancelWhenOutside","GHScrollView","RNScrollView","ScrollView","React","forwardRef","props","ref","refreshControlGestureRef","useRef","refreshControl","waitFor","rest","cloneElement","undefined","Switch","RNSwitch","shouldActivateOnStart","TextInput","RNTextInput","DrawerLayoutAndroid","RNDrawerLayoutAndroid","FlatList","flatListProps","scrollViewProps","propName","value","Object","entries","nativeViewProps","includes","scrollProps"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n PropsWithChildren,\n ForwardedRef,\n RefAttributes,\n ReactElement,\n} from 'react';\nimport {\n ScrollView as RNScrollView,\n ScrollViewProps as RNScrollViewProps,\n Switch as RNSwitch,\n SwitchProps as RNSwitchProps,\n TextInput as RNTextInput,\n TextInputProps as RNTextInputProps,\n DrawerLayoutAndroid as RNDrawerLayoutAndroid,\n DrawerLayoutAndroidProps as RNDrawerLayoutAndroidProps,\n FlatList as RNFlatList,\n FlatListProps as RNFlatListProps,\n RefreshControl as RNRefreshControl,\n} from 'react-native';\n\nimport createNativeWrapper from '../handlers/createNativeWrapper';\n\nimport {\n NativeViewGestureHandlerProps,\n nativeViewProps,\n} from '../handlers/NativeViewGestureHandler';\n\nimport { toArray } from '../utils';\n\nexport const RefreshControl = createNativeWrapper(RNRefreshControl, {\n disallowInterruption: true,\n shouldCancelWhenOutside: false,\n});\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type RefreshControl = typeof RefreshControl & RNRefreshControl;\n\nconst GHScrollView = createNativeWrapper<PropsWithChildren<RNScrollViewProps>>(\n RNScrollView,\n {\n disallowInterruption: true,\n shouldCancelWhenOutside: false,\n }\n);\nexport const ScrollView = React.forwardRef<\n RNScrollView,\n RNScrollViewProps & NativeViewGestureHandlerProps\n>((props, ref) => {\n const refreshControlGestureRef = React.useRef<RefreshControl>(null);\n const { refreshControl, waitFor, ...rest } = props;\n\n return (\n <GHScrollView\n {...rest}\n // @ts-ignore `ref` exists on `GHScrollView`\n ref={ref}\n waitFor={[...toArray(waitFor ?? []), refreshControlGestureRef]}\n // @ts-ignore we don't pass `refreshing` prop as we only want to override the ref\n refreshControl={\n refreshControl\n ? React.cloneElement(refreshControl, {\n // @ts-ignore for reasons unknown to me, `ref` doesn't exist on the type inferred by TS\n ref: refreshControlGestureRef,\n })\n : undefined\n }\n />\n );\n});\n// Backward type compatibility with https://github.com/software-mansion/react-native-gesture-handler/blob/db78d3ca7d48e8ba57482d3fe9b0a15aa79d9932/react-native-gesture-handler.d.ts#L440-L457\n// include methods of wrapped components by creating an intersection type with the RN component instead of duplicating them.\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type ScrollView = typeof GHScrollView & RNScrollView;\n\nexport const Switch = createNativeWrapper<RNSwitchProps>(RNSwitch, {\n shouldCancelWhenOutside: false,\n shouldActivateOnStart: true,\n disallowInterruption: true,\n});\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type Switch = typeof Switch & RNSwitch;\n\nexport const TextInput = createNativeWrapper<RNTextInputProps>(RNTextInput);\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type TextInput = typeof TextInput & RNTextInput;\n\nexport const DrawerLayoutAndroid = createNativeWrapper<\n PropsWithChildren<RNDrawerLayoutAndroidProps>\n>(RNDrawerLayoutAndroid, { disallowInterruption: true });\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type DrawerLayoutAndroid = typeof DrawerLayoutAndroid &\n RNDrawerLayoutAndroid;\n\nexport const FlatList = React.forwardRef((props, ref) => {\n const refreshControlGestureRef = React.useRef<RefreshControl>(null);\n\n const { waitFor, refreshControl, ...rest } = props;\n\n const flatListProps = {};\n const scrollViewProps = {};\n for (const [propName, value] of Object.entries(rest)) {\n // https://github.com/microsoft/TypeScript/issues/26255\n if ((nativeViewProps as readonly string[]).includes(propName)) {\n // @ts-ignore - this function cannot have generic type so we have to ignore this error\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n scrollViewProps[propName] = value;\n } else {\n // @ts-ignore - this function cannot have generic type so we have to ignore this error\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n flatListProps[propName] = value;\n }\n }\n\n return (\n // @ts-ignore - this function cannot have generic type so we have to ignore this error\n <RNFlatList\n ref={ref}\n {...flatListProps}\n renderScrollComponent={(scrollProps) => (\n <ScrollView\n {...{\n ...scrollProps,\n ...scrollViewProps,\n waitFor: [...toArray(waitFor ?? []), refreshControlGestureRef],\n }}\n />\n )}\n // @ts-ignore we don't pass `refreshing` prop as we only want to override the ref\n refreshControl={\n refreshControl\n ? React.cloneElement(refreshControl, {\n // @ts-ignore for reasons unknown to me, `ref` doesn't exist on the type inferred by TS\n ref: refreshControlGestureRef,\n })\n : undefined\n }\n />\n );\n}) as <ItemT = any>(\n props: PropsWithChildren<\n Omit<RNFlatListProps<ItemT>, 'renderScrollComponent'> &\n RefAttributes<FlatList<ItemT>> &\n NativeViewGestureHandlerProps\n >,\n ref?: ForwardedRef<FlatList<ItemT>>\n) => ReactElement | null;\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type FlatList<ItemT = any> = typeof FlatList & RNFlatList<ItemT>;\n"]}
@@ -80,7 +80,10 @@ const defaultProps = {
80
80
  activeCursor: 'auto',
81
81
  mouseButton: _gestureHandlerCommon.MouseButton.LEFT,
82
82
  statusBarAnimation: 'slide'
83
- };
83
+ }; // StatusBar.setHidden and Keyboard.dismiss cannot be directly referenced in worklets.
84
+
85
+ const setStatusBarHidden = _reactNative.StatusBar.setHidden;
86
+ const dismissKeyboard = _reactNative.Keyboard.dismiss;
84
87
  const DrawerLayout = /*#__PURE__*/(0, _react.forwardRef)(function DrawerLayout(props, ref) {
85
88
  const [containerWidth, setContainerWidth] = (0, _react.useState)(0);
86
89
  const [drawerState, setDrawerState] = (0, _react.useState)(DrawerState.IDLE);
@@ -108,7 +111,8 @@ const DrawerLayout = /*#__PURE__*/(0, _react.forwardRef)(function DrawerLayout(p
108
111
  onDrawerSlide,
109
112
  onDrawerClose,
110
113
  onDrawerOpen,
111
- onDrawerStateChanged
114
+ onDrawerStateChanged,
115
+ animationSpeed: animationSpeedProp
112
116
  } = props;
113
117
  const isFromLeft = drawerPosition === DrawerPosition.LEFT;
114
118
  const sideCorrection = isFromLeft ? 1 : -1; // While closing the drawer when user starts gesture in the greyed out part of the window,
@@ -176,7 +180,7 @@ const DrawerLayout = /*#__PURE__*/(0, _react.forwardRef)(function DrawerLayout(p
176
180
  (0, _reactNativeReanimated.runOnJS)(setDrawerState)(DrawerState.SETTLING);
177
181
 
178
182
  if (hideStatusBar) {
179
- (0, _reactNativeReanimated.runOnJS)(_reactNative.StatusBar.setHidden)(willShow, statusBarAnimation);
183
+ (0, _reactNativeReanimated.runOnJS)(setStatusBarHidden)(willShow, statusBarAnimation);
180
184
  }
181
185
 
182
186
  const normalizedToValue = (0, _reactNativeReanimated.interpolate)(toValue, [0, drawerWidth], [0, 1], _reactNativeReanimated.Extrapolation.CLAMP);
@@ -184,7 +188,7 @@ const DrawerLayout = /*#__PURE__*/(0, _react.forwardRef)(function DrawerLayout(p
184
188
  openValue.value = (0, _reactNativeReanimated.withSpring)(normalizedToValue, {
185
189
  overshootClamping: true,
186
190
  velocity: normalizedInitialVelocity,
187
- mass: animationSpeed ? 1 / animationSpeed : 1,
191
+ mass: animationSpeed ? 1 / animationSpeed : 1 / (animationSpeedProp !== null && animationSpeedProp !== void 0 ? animationSpeedProp : 1),
188
192
  damping: 40,
189
193
  stiffness: 500
190
194
  }, finished => {
@@ -273,11 +277,11 @@ const DrawerLayout = /*#__PURE__*/(0, _react.forwardRef)(function DrawerLayout(p
273
277
  (0, _reactNativeReanimated.runOnJS)(setDrawerState)(DrawerState.DRAGGING);
274
278
 
275
279
  if (keyboardDismissMode === DrawerKeyboardDismissMode.ON_DRAG) {
276
- (0, _reactNativeReanimated.runOnJS)(_reactNative.Keyboard.dismiss)();
280
+ (0, _reactNativeReanimated.runOnJS)(dismissKeyboard)();
277
281
  }
278
282
 
279
283
  if (hideStatusBar) {
280
- (0, _reactNativeReanimated.runOnJS)(_reactNative.StatusBar.setHidden)(true, statusBarAnimation);
284
+ (0, _reactNativeReanimated.runOnJS)(setStatusBarHidden)(true, statusBarAnimation);
281
285
  }
282
286
  }).onUpdate(event => {
283
287
  const startedOutsideTranslation = isFromLeft ? (0, _reactNativeReanimated.interpolate)(event.x, [0, drawerWidth, drawerWidth + 1], [0, drawerWidth, drawerWidth]) : (0, _reactNativeReanimated.interpolate)(event.x - containerWidth, [-drawerWidth - 1, -drawerWidth, 0], [drawerWidth, drawerWidth, 0]);
@@ -1 +1 @@
1
- {"version":3,"sources":["ReanimatedDrawerLayout.tsx"],"names":["DRAG_TOSS","DrawerPosition","DrawerState","DrawerType","DrawerLockMode","DrawerKeyboardDismissMode","defaultProps","drawerWidth","drawerPosition","LEFT","drawerType","FRONT","edgeWidth","minSwipeDistance","overlayColor","drawerLockMode","UNLOCKED","enableTrackpadTwoFingerGesture","activeCursor","mouseButton","MouseButton","statusBarAnimation","DrawerLayout","props","ref","containerWidth","setContainerWidth","drawerState","setDrawerState","IDLE","drawerOpened","setDrawerOpened","drawerBackgroundColor","drawerContainerStyle","contentContainerStyle","hideStatusBar","keyboardDismissMode","userSelect","enableContextMenu","renderNavigationView","onDrawerSlide","onDrawerClose","onDrawerOpen","onDrawerStateChanged","isFromLeft","sideCorrection","openValue","value","isDrawerOpen","handleContainerLayout","nativeEvent","layout","width","emitStateChanged","newState","drawerWillShow","drawerAnimatedProps","accessibilityViewIsModal","overlayAnimatedProps","pointerEvents","edgeHitSlop","setEdgeHitSlop","left","right","gestureOrientation","animateDrawer","toValue","initialVelocity","animationSpeed","willShow","SETTLING","StatusBar","setHidden","normalizedToValue","Extrapolation","CLAMP","normalizedInitialVelocity","overshootClamping","velocity","mass","damping","stiffness","finished","handleRelease","event","translationX","dragX","velocityX","x","touchX","gestureStartX","dragOffsetBasedOnStart","startOffsetX","projOffsetX","shouldOpen","openDrawer","options","closeDrawer","overlayDismissGesture","Gesture","Tap","maxDistance","onEnd","LOCKED_OPEN","overlayAnimatedStyle","opacity","backgroundColor","fillHitSlop","panGesture","Pan","hitSlop","minDistance","activeOffsetX","failOffsetY","simultaneousWithExternalGesture","enabled","LOCKED_CLOSED","onStart","DRAGGING","ON_DRAG","Keyboard","dismiss","onUpdate","startedOutsideTranslation","startedInsideTranslation","adjustedTranslation","Math","max","reverseContentDirection","I18nManager","isRTL","dynamicDrawerStyles","containerStyles","transform","translateX","drawerAnimatedStyle","closedDrawerOffset","isBack","BACK","isIdle","flexDirection","containerAnimatedProps","importantForAccessibility","Platform","OS","undefined","children","styles","main","containerOnBack","containerInFront","overlay","drawerContainer","StyleSheet","create","absoluteFillObject","zIndex","flex","overflow"],"mappings":"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","sourcesContent":["// This component is based on RN's DrawerLayoutAndroid API\n// It's cross-compatible with all platforms despite\n// `DrawerLayoutAndroid` only being available on android\n\nimport React, {\n ReactNode,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState,\n} from 'react';\n\nimport {\n StyleSheet,\n Keyboard,\n StatusBar,\n I18nManager,\n StatusBarAnimation,\n StyleProp,\n ViewStyle,\n LayoutChangeEvent,\n Platform,\n} from 'react-native';\n\nimport Animated, {\n Extrapolation,\n SharedValue,\n interpolate,\n runOnJS,\n useAnimatedProps,\n useAnimatedStyle,\n useDerivedValue,\n useSharedValue,\n withSpring,\n} from 'react-native-reanimated';\n\nimport { GestureObjects as Gesture } from '../handlers/gestures/gestureObjects';\nimport { GestureDetector } from '../handlers/gestures/GestureDetector';\nimport {\n UserSelect,\n ActiveCursor,\n MouseButton,\n HitSlop,\n GestureStateChangeEvent,\n} from '../handlers/gestureHandlerCommon';\nimport { PanGestureHandlerEventPayload } from '../handlers/GestureHandlerEventPayload';\n\nconst DRAG_TOSS = 0.05;\n\nexport enum DrawerPosition {\n LEFT,\n RIGHT,\n}\n\nexport enum DrawerState {\n IDLE,\n DRAGGING,\n SETTLING,\n}\n\nexport enum DrawerType {\n FRONT,\n BACK,\n SLIDE,\n}\n\nexport enum DrawerLockMode {\n UNLOCKED,\n LOCKED_CLOSED,\n LOCKED_OPEN,\n}\n\nexport enum DrawerKeyboardDismissMode {\n NONE,\n ON_DRAG,\n}\n\nexport interface DrawerLayoutProps {\n /**\n * This attribute is present in the native android implementation already and is one\n * of the required params. The gesture handler version of DrawerLayout makes it\n * possible for the function passed as `renderNavigationView` to take an\n * Animated value as a parameter that indicates the progress of drawer\n * opening/closing animation (progress value is 0 when closed and 1 when\n * opened). This can be used by the drawer component to animated its children\n * while the drawer is opening or closing.\n */\n renderNavigationView: (\n progressAnimatedValue: SharedValue<number>\n ) => ReactNode;\n\n /**\n * Determines the side from which the drawer will open.\n */\n drawerPosition?: DrawerPosition;\n\n /**\n * Width of the drawer.\n */\n drawerWidth?: number;\n\n /**\n * Background color of the drawer.\n */\n drawerBackgroundColor?: string;\n\n /**\n * Specifies the lock mode of the drawer.\n * Programatic opening/closing isn't affected by the lock mode. Defaults to `UNLOCKED`.\n * - `UNLOCKED` - the drawer will respond to gestures.\n * - `LOCKED_CLOSED` - the drawer will move freely until it settles in a closed position, then the gestures will be disabled.\n * - `LOCKED_OPEN` - the drawer will move freely until it settles in an opened position, then the gestures will be disabled.\n */\n drawerLockMode?: DrawerLockMode;\n\n /**\n * Determines if system keyboard should be closed upon dragging the drawer.\n */\n keyboardDismissMode?: DrawerKeyboardDismissMode;\n\n /**\n * Called when the drawer is closed.\n */\n onDrawerClose?: () => void;\n\n /**\n * Called when the drawer is opened.\n */\n onDrawerOpen?: () => void;\n\n /**\n * Called when the status of the drawer changes.\n */\n onDrawerStateChanged?: (\n newState: DrawerState,\n drawerWillShow: boolean\n ) => void;\n\n /**\n * Type of animation that will play when opening the drawer.\n */\n drawerType?: DrawerType;\n\n /**\n * Defines how far from the edge of the content view the gesture should\n * activate.\n */\n edgeWidth?: number;\n\n /**\n * Minimal distance to swipe before the drawer starts moving.\n */\n minSwipeDistance?: number;\n\n /**\n * When set to true Drawer component will use\n * {@link https://reactnative.dev/docs/statusbar StatusBar} API to hide the OS\n * status bar whenever the drawer is pulled or when its in an \"open\" state.\n */\n hideStatusBar?: boolean;\n\n /**\n * @default 'slide'\n *\n * Can be used when hideStatusBar is set to true and will select the animation\n * used for hiding/showing the status bar. See\n * {@link https://reactnative.dev/docs/statusbar StatusBar} documentation for\n * more details\n */\n statusBarAnimation?: StatusBarAnimation;\n\n /**\n * @default 'rgba(0, 0, 0, 0.7)'\n *\n * Color of the background overlay.\n * Animated from `0%` to `100%` as the drawer opens.\n */\n overlayColor?: string;\n\n /**\n * Style wrapping the content.\n */\n contentContainerStyle?: StyleProp<ViewStyle>;\n\n /**\n * Style wrapping the drawer.\n */\n drawerContainerStyle?: StyleProp<ViewStyle>;\n\n /**\n * Enables two-finger gestures on supported devices, for example iPads with\n * trackpads. If not enabled the gesture will require click + drag, with\n * `enableTrackpadTwoFingerGesture` swiping with two fingers will also trigger\n * the gesture.\n */\n enableTrackpadTwoFingerGesture?: boolean;\n\n onDrawerSlide?: (position: number) => void;\n\n // Implicit `children` prop has been removed in @types/react^18.0.\n /**\n * Elements that will be rendered inside the content view.\n */\n children?: ReactNode | ((openValue?: SharedValue<number>) => ReactNode);\n\n /**\n * @default 'none'\n * Sets whether the text inside both the drawer and the context window can be selected.\n * Values: 'none' | 'text' | 'auto'\n */\n userSelect?: UserSelect;\n\n /**\n * @default 'auto'\n * Sets the displayed cursor pictogram when the drawer is being dragged.\n * Values: see CSS cursor values\n */\n activeCursor?: ActiveCursor;\n\n /**\n * @default 'MouseButton.LEFT'\n * Allows to choose which mouse button should underlying pan handler react to.\n */\n mouseButton?: MouseButton;\n\n /**\n * @default 'false if MouseButton.RIGHT is specified'\n * Allows to enable/disable context menu.\n */\n enableContextMenu?: boolean;\n}\n\nexport type DrawerMovementOption = {\n initialVelocity?: number;\n animationSpeed?: number;\n};\n\nexport interface DrawerLayoutMethods {\n openDrawer: (options?: DrawerMovementOption) => void;\n closeDrawer: (options?: DrawerMovementOption) => void;\n}\n\nconst defaultProps = {\n drawerWidth: 200,\n drawerPosition: DrawerPosition.LEFT,\n drawerType: DrawerType.FRONT,\n edgeWidth: 20,\n minSwipeDistance: 3,\n overlayColor: 'rgba(0, 0, 0, 0.7)',\n drawerLockMode: DrawerLockMode.UNLOCKED,\n enableTrackpadTwoFingerGesture: false,\n activeCursor: 'auto' as ActiveCursor,\n mouseButton: MouseButton.LEFT,\n statusBarAnimation: 'slide' as StatusBarAnimation,\n};\n\nconst DrawerLayout = forwardRef<DrawerLayoutMethods, DrawerLayoutProps>(\n function DrawerLayout(props: DrawerLayoutProps, ref) {\n const [containerWidth, setContainerWidth] = useState(0);\n const [drawerState, setDrawerState] = useState<DrawerState>(\n DrawerState.IDLE\n );\n const [drawerOpened, setDrawerOpened] = useState(false);\n\n const {\n drawerPosition = defaultProps.drawerPosition,\n drawerWidth = defaultProps.drawerWidth,\n drawerType = defaultProps.drawerType,\n drawerBackgroundColor,\n drawerContainerStyle,\n contentContainerStyle,\n minSwipeDistance = defaultProps.minSwipeDistance,\n edgeWidth = defaultProps.edgeWidth,\n drawerLockMode = defaultProps.drawerLockMode,\n overlayColor = defaultProps.overlayColor,\n enableTrackpadTwoFingerGesture = defaultProps.enableTrackpadTwoFingerGesture,\n activeCursor = defaultProps.activeCursor,\n mouseButton = defaultProps.mouseButton,\n statusBarAnimation = defaultProps.statusBarAnimation,\n hideStatusBar,\n keyboardDismissMode,\n userSelect,\n enableContextMenu,\n renderNavigationView,\n onDrawerSlide,\n onDrawerClose,\n onDrawerOpen,\n onDrawerStateChanged,\n } = props;\n\n const isFromLeft = drawerPosition === DrawerPosition.LEFT;\n\n const sideCorrection = isFromLeft ? 1 : -1;\n\n // While closing the drawer when user starts gesture in the greyed out part of the window,\n // we want the drawer to follow only once the finger reaches the edge of the drawer.\n // See the diagram for reference. * = starting finger position, < = current finger position\n // 1) +---------------+ 2) +---------------+ 3) +---------------+ 4) +---------------+\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|..<*..| |XXXXXXXX|.<-*..| |XXXXXXXX|<--*..| |XXXXX|<-----*..|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // +---------------+ +---------------+ +---------------+ +---------------+\n\n const openValue = useSharedValue<number>(0);\n\n useDerivedValue(() => {\n onDrawerSlide && runOnJS(onDrawerSlide)(openValue.value);\n }, []);\n\n const isDrawerOpen = useSharedValue(false);\n\n const handleContainerLayout = ({ nativeEvent }: LayoutChangeEvent) => {\n setContainerWidth(nativeEvent.layout.width);\n };\n\n const emitStateChanged = useCallback(\n (newState: DrawerState, drawerWillShow: boolean) => {\n 'worklet';\n onDrawerStateChanged &&\n runOnJS(onDrawerStateChanged)?.(newState, drawerWillShow);\n },\n [onDrawerStateChanged]\n );\n\n const drawerAnimatedProps = useAnimatedProps(() => ({\n accessibilityViewIsModal: isDrawerOpen.value,\n }));\n\n const overlayAnimatedProps = useAnimatedProps(() => ({\n pointerEvents: isDrawerOpen.value ? ('auto' as const) : ('none' as const),\n }));\n\n // While the drawer is hidden, it's hitSlop overflows onto the main view by edgeWidth\n // This way it can be swiped open even when it's hidden\n const [edgeHitSlop, setEdgeHitSlop] = useState<HitSlop>(\n isFromLeft\n ? { left: 0, width: edgeWidth }\n : { right: 0, width: edgeWidth }\n );\n\n // gestureOrientation is 1 if the gesture is expected to move from left to right and -1 otherwise\n const gestureOrientation = useMemo(\n () => sideCorrection * (drawerOpened ? -1 : 1),\n [sideCorrection, drawerOpened]\n );\n\n useEffect(() => {\n setEdgeHitSlop(\n isFromLeft\n ? { left: 0, width: edgeWidth }\n : { right: 0, width: edgeWidth }\n );\n }, [isFromLeft, edgeWidth]);\n\n const animateDrawer = useCallback(\n (toValue: number, initialVelocity: number, animationSpeed?: number) => {\n 'worklet';\n const willShow = toValue !== 0;\n isDrawerOpen.value = willShow;\n\n emitStateChanged(DrawerState.SETTLING, willShow);\n runOnJS(setDrawerState)(DrawerState.SETTLING);\n\n if (hideStatusBar) {\n runOnJS(StatusBar.setHidden)(willShow, statusBarAnimation);\n }\n\n const normalizedToValue = interpolate(\n toValue,\n [0, drawerWidth],\n [0, 1],\n Extrapolation.CLAMP\n );\n\n const normalizedInitialVelocity = interpolate(\n initialVelocity,\n [0, drawerWidth],\n [0, 1],\n Extrapolation.CLAMP\n );\n\n openValue.value = withSpring(\n normalizedToValue,\n {\n overshootClamping: true,\n velocity: normalizedInitialVelocity,\n mass: animationSpeed ? 1 / animationSpeed : 1,\n damping: 40,\n stiffness: 500,\n },\n (finished) => {\n if (finished) {\n emitStateChanged(DrawerState.IDLE, willShow);\n runOnJS(setDrawerOpened)(willShow);\n runOnJS(setDrawerState)(DrawerState.IDLE);\n if (willShow) {\n onDrawerOpen && runOnJS(onDrawerOpen)?.();\n } else {\n onDrawerClose && runOnJS(onDrawerClose)?.();\n }\n }\n }\n );\n },\n [\n openValue,\n emitStateChanged,\n isDrawerOpen,\n hideStatusBar,\n onDrawerClose,\n onDrawerOpen,\n drawerWidth,\n statusBarAnimation,\n ]\n );\n\n const handleRelease = useCallback(\n (event: GestureStateChangeEvent<PanGestureHandlerEventPayload>) => {\n 'worklet';\n let { translationX: dragX, velocityX, x: touchX } = event;\n\n if (drawerPosition !== DrawerPosition.LEFT) {\n // See description in _updateAnimatedEvent about why events are flipped\n // for right-side drawer\n dragX = -dragX;\n touchX = containerWidth - touchX;\n velocityX = -velocityX;\n }\n\n const gestureStartX = touchX - dragX;\n let dragOffsetBasedOnStart = 0;\n\n if (drawerType === DrawerType.FRONT) {\n dragOffsetBasedOnStart =\n gestureStartX > drawerWidth ? gestureStartX - drawerWidth : 0;\n }\n\n const startOffsetX =\n dragX +\n dragOffsetBasedOnStart +\n (isDrawerOpen.value ? drawerWidth : 0);\n\n const projOffsetX = startOffsetX + DRAG_TOSS * velocityX;\n\n const shouldOpen = projOffsetX > drawerWidth / 2;\n\n if (shouldOpen) {\n animateDrawer(drawerWidth, velocityX);\n } else {\n animateDrawer(0, velocityX);\n }\n },\n [\n animateDrawer,\n containerWidth,\n drawerPosition,\n drawerType,\n drawerWidth,\n isDrawerOpen,\n ]\n );\n\n const openDrawer = useCallback(\n (options: DrawerMovementOption = {}) => {\n 'worklet';\n animateDrawer(\n drawerWidth,\n options.initialVelocity ?? 0,\n options.animationSpeed\n );\n },\n [animateDrawer, drawerWidth]\n );\n\n const closeDrawer = useCallback(\n (options: DrawerMovementOption = {}) => {\n 'worklet';\n animateDrawer(0, options.initialVelocity ?? 0, options.animationSpeed);\n },\n [animateDrawer]\n );\n\n const overlayDismissGesture = useMemo(\n () =>\n Gesture.Tap()\n .maxDistance(25)\n .onEnd(() => {\n if (\n isDrawerOpen.value &&\n drawerLockMode !== DrawerLockMode.LOCKED_OPEN\n ) {\n closeDrawer();\n }\n }),\n [closeDrawer, isDrawerOpen, drawerLockMode]\n );\n\n const overlayAnimatedStyle = useAnimatedStyle(() => ({\n opacity: openValue.value,\n backgroundColor: overlayColor,\n }));\n\n const fillHitSlop = useMemo(\n () => (isFromLeft ? { left: drawerWidth } : { right: drawerWidth }),\n [drawerWidth, isFromLeft]\n );\n\n const panGesture = useMemo(() => {\n return Gesture.Pan()\n .activeCursor(activeCursor)\n .mouseButton(mouseButton)\n .hitSlop(drawerOpened ? fillHitSlop : edgeHitSlop)\n .minDistance(drawerOpened ? 100 : 0)\n .activeOffsetX(gestureOrientation * minSwipeDistance)\n .failOffsetY([-15, 15])\n .simultaneousWithExternalGesture(overlayDismissGesture)\n .enableTrackpadTwoFingerGesture(enableTrackpadTwoFingerGesture)\n .enabled(\n drawerState !== DrawerState.SETTLING &&\n (drawerOpened\n ? drawerLockMode !== DrawerLockMode.LOCKED_OPEN\n : drawerLockMode !== DrawerLockMode.LOCKED_CLOSED)\n )\n .onStart(() => {\n emitStateChanged(DrawerState.DRAGGING, false);\n runOnJS(setDrawerState)(DrawerState.DRAGGING);\n if (keyboardDismissMode === DrawerKeyboardDismissMode.ON_DRAG) {\n runOnJS(Keyboard.dismiss)();\n }\n if (hideStatusBar) {\n runOnJS(StatusBar.setHidden)(true, statusBarAnimation);\n }\n })\n .onUpdate((event) => {\n const startedOutsideTranslation = isFromLeft\n ? interpolate(\n event.x,\n [0, drawerWidth, drawerWidth + 1],\n [0, drawerWidth, drawerWidth]\n )\n : interpolate(\n event.x - containerWidth,\n [-drawerWidth - 1, -drawerWidth, 0],\n [drawerWidth, drawerWidth, 0]\n );\n\n const startedInsideTranslation =\n sideCorrection *\n (event.translationX +\n (drawerOpened ? drawerWidth * -gestureOrientation : 0));\n\n const adjustedTranslation = Math.max(\n drawerOpened ? startedOutsideTranslation : 0,\n startedInsideTranslation\n );\n\n openValue.value = interpolate(\n adjustedTranslation,\n [-drawerWidth, 0, drawerWidth],\n [1, 0, 1],\n Extrapolation.CLAMP\n );\n })\n .onEnd(handleRelease);\n }, [\n drawerLockMode,\n openValue,\n drawerWidth,\n emitStateChanged,\n gestureOrientation,\n handleRelease,\n edgeHitSlop,\n fillHitSlop,\n minSwipeDistance,\n hideStatusBar,\n keyboardDismissMode,\n overlayDismissGesture,\n drawerOpened,\n isFromLeft,\n containerWidth,\n sideCorrection,\n drawerState,\n activeCursor,\n enableTrackpadTwoFingerGesture,\n mouseButton,\n statusBarAnimation,\n ]);\n\n // When using RTL, row and row-reverse flex directions are flipped.\n const reverseContentDirection = I18nManager.isRTL\n ? isFromLeft\n : !isFromLeft;\n\n const dynamicDrawerStyles = {\n backgroundColor: drawerBackgroundColor,\n width: drawerWidth,\n };\n\n const containerStyles = useAnimatedStyle(() => {\n if (drawerType === DrawerType.FRONT) {\n return {};\n }\n\n return {\n transform: [\n {\n translateX: interpolate(\n openValue.value,\n [0, 1],\n [0, drawerWidth * sideCorrection],\n Extrapolation.CLAMP\n ),\n },\n ],\n };\n });\n\n const drawerAnimatedStyle = useAnimatedStyle(() => {\n const closedDrawerOffset = drawerWidth * -sideCorrection;\n const isBack = drawerType === DrawerType.BACK;\n const isIdle = drawerState === DrawerState.IDLE;\n\n if (isBack) {\n return {\n transform: [{ translateX: 0 }],\n flexDirection: reverseContentDirection ? 'row-reverse' : 'row',\n };\n }\n\n let translateX = 0;\n\n if (isIdle) {\n translateX = drawerOpened ? 0 : closedDrawerOffset;\n } else {\n translateX = interpolate(\n openValue.value,\n [0, 1],\n [closedDrawerOffset, 0],\n Extrapolation.CLAMP\n );\n }\n\n return {\n transform: [{ translateX }],\n flexDirection: reverseContentDirection ? 'row-reverse' : 'row',\n };\n });\n\n const containerAnimatedProps = useAnimatedProps(() => ({\n importantForAccessibility:\n Platform.OS === 'android'\n ? isDrawerOpen.value\n ? ('no-hide-descendants' as const)\n : ('yes' as const)\n : undefined,\n }));\n\n const children =\n typeof props.children === 'function'\n ? props.children(openValue) // renderer function\n : props.children;\n\n useImperativeHandle(\n ref,\n () => ({\n openDrawer,\n closeDrawer,\n }),\n [openDrawer, closeDrawer]\n );\n\n return (\n <GestureDetector\n gesture={panGesture}\n userSelect={userSelect}\n enableContextMenu={enableContextMenu}>\n <Animated.View style={styles.main} onLayout={handleContainerLayout}>\n <GestureDetector gesture={overlayDismissGesture}>\n <Animated.View\n style={[\n drawerType === DrawerType.FRONT\n ? styles.containerOnBack\n : styles.containerInFront,\n containerStyles,\n contentContainerStyle,\n ]}\n animatedProps={containerAnimatedProps}>\n {children}\n <Animated.View\n animatedProps={overlayAnimatedProps}\n style={[styles.overlay, overlayAnimatedStyle]}\n />\n </Animated.View>\n </GestureDetector>\n <Animated.View\n pointerEvents=\"box-none\"\n animatedProps={drawerAnimatedProps}\n style={[\n styles.drawerContainer,\n drawerAnimatedStyle,\n drawerContainerStyle,\n ]}>\n <Animated.View style={dynamicDrawerStyles}>\n {renderNavigationView(openValue)}\n </Animated.View>\n </Animated.View>\n </Animated.View>\n </GestureDetector>\n );\n }\n);\n\nexport default DrawerLayout;\n\nconst styles = StyleSheet.create({\n drawerContainer: {\n ...StyleSheet.absoluteFillObject,\n zIndex: 1001,\n flexDirection: 'row',\n },\n containerInFront: {\n ...StyleSheet.absoluteFillObject,\n zIndex: 1002,\n },\n containerOnBack: {\n ...StyleSheet.absoluteFillObject,\n },\n main: {\n flex: 1,\n zIndex: 0,\n overflow: 'hidden',\n },\n overlay: {\n ...StyleSheet.absoluteFillObject,\n zIndex: 1000,\n },\n});\n"]}
1
+ {"version":3,"sources":["ReanimatedDrawerLayout.tsx"],"names":["DRAG_TOSS","DrawerPosition","DrawerState","DrawerType","DrawerLockMode","DrawerKeyboardDismissMode","defaultProps","drawerWidth","drawerPosition","LEFT","drawerType","FRONT","edgeWidth","minSwipeDistance","overlayColor","drawerLockMode","UNLOCKED","enableTrackpadTwoFingerGesture","activeCursor","mouseButton","MouseButton","statusBarAnimation","setStatusBarHidden","StatusBar","setHidden","dismissKeyboard","Keyboard","dismiss","DrawerLayout","props","ref","containerWidth","setContainerWidth","drawerState","setDrawerState","IDLE","drawerOpened","setDrawerOpened","drawerBackgroundColor","drawerContainerStyle","contentContainerStyle","hideStatusBar","keyboardDismissMode","userSelect","enableContextMenu","renderNavigationView","onDrawerSlide","onDrawerClose","onDrawerOpen","onDrawerStateChanged","animationSpeed","animationSpeedProp","isFromLeft","sideCorrection","openValue","value","isDrawerOpen","handleContainerLayout","nativeEvent","layout","width","emitStateChanged","newState","drawerWillShow","drawerAnimatedProps","accessibilityViewIsModal","overlayAnimatedProps","pointerEvents","edgeHitSlop","setEdgeHitSlop","left","right","gestureOrientation","animateDrawer","toValue","initialVelocity","willShow","SETTLING","normalizedToValue","Extrapolation","CLAMP","normalizedInitialVelocity","overshootClamping","velocity","mass","damping","stiffness","finished","handleRelease","event","translationX","dragX","velocityX","x","touchX","gestureStartX","dragOffsetBasedOnStart","startOffsetX","projOffsetX","shouldOpen","openDrawer","options","closeDrawer","overlayDismissGesture","Gesture","Tap","maxDistance","onEnd","LOCKED_OPEN","overlayAnimatedStyle","opacity","backgroundColor","fillHitSlop","panGesture","Pan","hitSlop","minDistance","activeOffsetX","failOffsetY","simultaneousWithExternalGesture","enabled","LOCKED_CLOSED","onStart","DRAGGING","ON_DRAG","onUpdate","startedOutsideTranslation","startedInsideTranslation","adjustedTranslation","Math","max","reverseContentDirection","I18nManager","isRTL","dynamicDrawerStyles","containerStyles","transform","translateX","drawerAnimatedStyle","closedDrawerOffset","isBack","BACK","isIdle","flexDirection","containerAnimatedProps","importantForAccessibility","Platform","OS","undefined","children","styles","main","containerOnBack","containerInFront","overlay","drawerContainer","StyleSheet","create","absoluteFillObject","zIndex","flex","overflow"],"mappings":";;;;;;;AAIA;;AAUA;;AAYA;;AAYA;;AACA;;AACA;;;;;;AAxCA;AACA;AACA;AA+CA,MAAMA,SAAS,GAAG,IAAlB;IAEYC,c;;;WAAAA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;GAAAA,c,8BAAAA,c;;IAKAC,W;;;WAAAA,W;AAAAA,EAAAA,W,CAAAA,W;AAAAA,EAAAA,W,CAAAA,W;AAAAA,EAAAA,W,CAAAA,W;GAAAA,W,2BAAAA,W;;IAMAC,U;;;WAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;GAAAA,U,0BAAAA,U;;IAMAC,c;;;WAAAA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;GAAAA,c,8BAAAA,c;;IAMAC,yB;;;WAAAA,yB;AAAAA,EAAAA,yB,CAAAA,yB;AAAAA,EAAAA,yB,CAAAA,yB;GAAAA,yB,yCAAAA,yB;;AAgLZ,MAAMC,YAAY,GAAG;AACnBC,EAAAA,WAAW,EAAE,GADM;AAEnBC,EAAAA,cAAc,EAAEP,cAAc,CAACQ,IAFZ;AAGnBC,EAAAA,UAAU,EAAEP,UAAU,CAACQ,KAHJ;AAInBC,EAAAA,SAAS,EAAE,EAJQ;AAKnBC,EAAAA,gBAAgB,EAAE,CALC;AAMnBC,EAAAA,YAAY,EAAE,oBANK;AAOnBC,EAAAA,cAAc,EAAEX,cAAc,CAACY,QAPZ;AAQnBC,EAAAA,8BAA8B,EAAE,KARb;AASnBC,EAAAA,YAAY,EAAE,MATK;AAUnBC,EAAAA,WAAW,EAAEC,kCAAYX,IAVN;AAWnBY,EAAAA,kBAAkB,EAAE;AAXD,CAArB,C,CAcA;;AACA,MAAMC,kBAAkB,GAAGC,uBAAUC,SAArC;AACA,MAAMC,eAAe,GAAGC,sBAASC,OAAjC;AAEA,MAAMC,YAAY,gBAAG,uBACnB,SAASA,YAAT,CAAsBC,KAAtB,EAAgDC,GAAhD,EAAqD;AACnD,QAAM,CAACC,cAAD,EAAiBC,iBAAjB,IAAsC,qBAAS,CAAT,CAA5C;AACA,QAAM,CAACC,WAAD,EAAcC,cAAd,IAAgC,qBACpChC,WAAW,CAACiC,IADwB,CAAtC;AAGA,QAAM,CAACC,YAAD,EAAeC,eAAf,IAAkC,qBAAS,KAAT,CAAxC;AAEA,QAAM;AACJ7B,IAAAA,cAAc,GAAGF,YAAY,CAACE,cAD1B;AAEJD,IAAAA,WAAW,GAAGD,YAAY,CAACC,WAFvB;AAGJG,IAAAA,UAAU,GAAGJ,YAAY,CAACI,UAHtB;AAIJ4B,IAAAA,qBAJI;AAKJC,IAAAA,oBALI;AAMJC,IAAAA,qBANI;AAOJ3B,IAAAA,gBAAgB,GAAGP,YAAY,CAACO,gBAP5B;AAQJD,IAAAA,SAAS,GAAGN,YAAY,CAACM,SARrB;AASJG,IAAAA,cAAc,GAAGT,YAAY,CAACS,cAT1B;AAUJD,IAAAA,YAAY,GAAGR,YAAY,CAACQ,YAVxB;AAWJG,IAAAA,8BAA8B,GAAGX,YAAY,CAACW,8BAX1C;AAYJC,IAAAA,YAAY,GAAGZ,YAAY,CAACY,YAZxB;AAaJC,IAAAA,WAAW,GAAGb,YAAY,CAACa,WAbvB;AAcJE,IAAAA,kBAAkB,GAAGf,YAAY,CAACe,kBAd9B;AAeJoB,IAAAA,aAfI;AAgBJC,IAAAA,mBAhBI;AAiBJC,IAAAA,UAjBI;AAkBJC,IAAAA,iBAlBI;AAmBJC,IAAAA,oBAnBI;AAoBJC,IAAAA,aApBI;AAqBJC,IAAAA,aArBI;AAsBJC,IAAAA,YAtBI;AAuBJC,IAAAA,oBAvBI;AAwBJC,IAAAA,cAAc,EAAEC;AAxBZ,MAyBFtB,KAzBJ;AA2BA,QAAMuB,UAAU,GAAG5C,cAAc,KAAKP,cAAc,CAACQ,IAArD;AAEA,QAAM4C,cAAc,GAAGD,UAAU,GAAG,CAAH,GAAO,CAAC,CAAzC,CApCmD,CAsCnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAME,SAAS,GAAG,2CAAuB,CAAvB,CAAlB;AAEA,8CAAgB,MAAM;AACpBR,IAAAA,aAAa,IAAI,oCAAQA,aAAR,EAAuBQ,SAAS,CAACC,KAAjC,CAAjB;AACD,GAFD,EAEG,EAFH;AAIA,QAAMC,YAAY,GAAG,2CAAe,KAAf,CAArB;;AAEA,QAAMC,qBAAqB,GAAG,CAAC;AAAEC,IAAAA;AAAF,GAAD,KAAwC;AACpE1B,IAAAA,iBAAiB,CAAC0B,WAAW,CAACC,MAAZ,CAAmBC,KAApB,CAAjB;AACD,GAFD;;AAIA,QAAMC,gBAAgB,GAAG,wBACvB,CAACC,QAAD,EAAwBC,cAAxB,KAAoD;AAClD;;AADkD;;AAElDd,IAAAA,oBAAoB,iBAClB,oCAAQA,oBAAR,CADkB,6CAClB,SAAgCa,QAAhC,EAA0CC,cAA1C,CADkB,CAApB;AAED,GALsB,EAMvB,CAACd,oBAAD,CANuB,CAAzB;AASA,QAAMe,mBAAmB,GAAG,6CAAiB,OAAO;AAClDC,IAAAA,wBAAwB,EAAET,YAAY,CAACD;AADW,GAAP,CAAjB,CAA5B;AAIA,QAAMW,oBAAoB,GAAG,6CAAiB,OAAO;AACnDC,IAAAA,aAAa,EAAEX,YAAY,CAACD,KAAb,GAAsB,MAAtB,GAA0C;AADN,GAAP,CAAjB,CAA7B,CA1EmD,CA8EnD;AACA;;AACA,QAAM,CAACa,WAAD,EAAcC,cAAd,IAAgC,qBACpCjB,UAAU,GACN;AAAEkB,IAAAA,IAAI,EAAE,CAAR;AAAWV,IAAAA,KAAK,EAAEhD;AAAlB,GADM,GAEN;AAAE2D,IAAAA,KAAK,EAAE,CAAT;AAAYX,IAAAA,KAAK,EAAEhD;AAAnB,GAHgC,CAAtC,CAhFmD,CAsFnD;;AACA,QAAM4D,kBAAkB,GAAG,oBACzB,MAAMnB,cAAc,IAAIjB,YAAY,GAAG,CAAC,CAAJ,GAAQ,CAAxB,CADK,EAEzB,CAACiB,cAAD,EAAiBjB,YAAjB,CAFyB,CAA3B;AAKA,wBAAU,MAAM;AACdiC,IAAAA,cAAc,CACZjB,UAAU,GACN;AAAEkB,MAAAA,IAAI,EAAE,CAAR;AAAWV,MAAAA,KAAK,EAAEhD;AAAlB,KADM,GAEN;AAAE2D,MAAAA,KAAK,EAAE,CAAT;AAAYX,MAAAA,KAAK,EAAEhD;AAAnB,KAHQ,CAAd;AAKD,GAND,EAMG,CAACwC,UAAD,EAAaxC,SAAb,CANH;AAQA,QAAM6D,aAAa,GAAG,wBACpB,CAACC,OAAD,EAAkBC,eAAlB,EAA2CzB,cAA3C,KAAuE;AACrE;;AACA,UAAM0B,QAAQ,GAAGF,OAAO,KAAK,CAA7B;AACAlB,IAAAA,YAAY,CAACD,KAAb,GAAqBqB,QAArB;AAEAf,IAAAA,gBAAgB,CAAC3D,WAAW,CAAC2E,QAAb,EAAuBD,QAAvB,CAAhB;AACA,wCAAQ1C,cAAR,EAAwBhC,WAAW,CAAC2E,QAApC;;AAEA,QAAIpC,aAAJ,EAAmB;AACjB,0CAAQnB,kBAAR,EAA4BsD,QAA5B,EAAsCvD,kBAAtC;AACD;;AAED,UAAMyD,iBAAiB,GAAG,wCACxBJ,OADwB,EAExB,CAAC,CAAD,EAAInE,WAAJ,CAFwB,EAGxB,CAAC,CAAD,EAAI,CAAJ,CAHwB,EAIxBwE,qCAAcC,KAJU,CAA1B;AAOA,UAAMC,yBAAyB,GAAG,wCAChCN,eADgC,EAEhC,CAAC,CAAD,EAAIpE,WAAJ,CAFgC,EAGhC,CAAC,CAAD,EAAI,CAAJ,CAHgC,EAIhCwE,qCAAcC,KAJkB,CAAlC;AAOA1B,IAAAA,SAAS,CAACC,KAAV,GAAkB,uCAChBuB,iBADgB,EAEhB;AACEI,MAAAA,iBAAiB,EAAE,IADrB;AAEEC,MAAAA,QAAQ,EAAEF,yBAFZ;AAGEG,MAAAA,IAAI,EAAElC,cAAc,GAChB,IAAIA,cADY,GAEhB,KAAKC,kBAAL,aAAKA,kBAAL,cAAKA,kBAAL,GAA2B,CAA3B,CALN;AAMEkC,MAAAA,OAAO,EAAE,EANX;AAOEC,MAAAA,SAAS,EAAE;AAPb,KAFgB,EAWfC,QAAD,IAAc;AACZ,UAAIA,QAAJ,EAAc;AACZ1B,QAAAA,gBAAgB,CAAC3D,WAAW,CAACiC,IAAb,EAAmByC,QAAnB,CAAhB;AACA,4CAAQvC,eAAR,EAAyBuC,QAAzB;AACA,4CAAQ1C,cAAR,EAAwBhC,WAAW,CAACiC,IAApC;;AACA,YAAIyC,QAAJ,EAAc;AAAA;;AACZ5B,UAAAA,YAAY,kBAAI,oCAAQA,YAAR,CAAJ,8CAAI,WAAJ,CAAZ;AACD,SAFD,MAEO;AAAA;;AACLD,UAAAA,aAAa,kBAAI,oCAAQA,aAAR,CAAJ,8CAAI,WAAJ,CAAb;AACD;AACF;AACF,KAtBe,CAAlB;AAwBD,GAnDmB,EAoDpB,CACEO,SADF,EAEEO,gBAFF,EAGEL,YAHF,EAIEf,aAJF,EAKEM,aALF,EAMEC,YANF,EAOEzC,WAPF,EAQEc,kBARF,CApDoB,CAAtB;AAgEA,QAAMmE,aAAa,GAAG,wBACnBC,KAAD,IAAmE;AACjE;;AACA,QAAI;AAAEC,MAAAA,YAAY,EAAEC,KAAhB;AAAuBC,MAAAA,SAAvB;AAAkCC,MAAAA,CAAC,EAAEC;AAArC,QAAgDL,KAApD;;AAEA,QAAIjF,cAAc,KAAKP,cAAc,CAACQ,IAAtC,EAA4C;AAC1C;AACA;AACAkF,MAAAA,KAAK,GAAG,CAACA,KAAT;AACAG,MAAAA,MAAM,GAAG/D,cAAc,GAAG+D,MAA1B;AACAF,MAAAA,SAAS,GAAG,CAACA,SAAb;AACD;;AAED,UAAMG,aAAa,GAAGD,MAAM,GAAGH,KAA/B;AACA,QAAIK,sBAAsB,GAAG,CAA7B;;AAEA,QAAItF,UAAU,KAAKP,UAAU,CAACQ,KAA9B,EAAqC;AACnCqF,MAAAA,sBAAsB,GACpBD,aAAa,GAAGxF,WAAhB,GAA8BwF,aAAa,GAAGxF,WAA9C,GAA4D,CAD9D;AAED;;AAED,UAAM0F,YAAY,GAChBN,KAAK,GACLK,sBADA,IAECxC,YAAY,CAACD,KAAb,GAAqBhD,WAArB,GAAmC,CAFpC,CADF;AAKA,UAAM2F,WAAW,GAAGD,YAAY,GAAGjG,SAAS,GAAG4F,SAA/C;AAEA,UAAMO,UAAU,GAAGD,WAAW,GAAG3F,WAAW,GAAG,CAA/C;;AAEA,QAAI4F,UAAJ,EAAgB;AACd1B,MAAAA,aAAa,CAAClE,WAAD,EAAcqF,SAAd,CAAb;AACD,KAFD,MAEO;AACLnB,MAAAA,aAAa,CAAC,CAAD,EAAImB,SAAJ,CAAb;AACD;AACF,GAnCmB,EAoCpB,CACEnB,aADF,EAEE1C,cAFF,EAGEvB,cAHF,EAIEE,UAJF,EAKEH,WALF,EAMEiD,YANF,CApCoB,CAAtB;AA8CA,QAAM4C,UAAU,GAAG,wBACjB,CAACC,OAA6B,GAAG,EAAjC,KAAwC;AACtC;;AADsC;;AAEtC5B,IAAAA,aAAa,CACXlE,WADW,2BAEX8F,OAAO,CAAC1B,eAFG,yEAEgB,CAFhB,EAGX0B,OAAO,CAACnD,cAHG,CAAb;AAKD,GARgB,EASjB,CAACuB,aAAD,EAAgBlE,WAAhB,CATiB,CAAnB;AAYA,QAAM+F,WAAW,GAAG,wBAClB,CAACD,OAA6B,GAAG,EAAjC,KAAwC;AACtC;;AADsC;;AAEtC5B,IAAAA,aAAa,CAAC,CAAD,4BAAI4B,OAAO,CAAC1B,eAAZ,2EAA+B,CAA/B,EAAkC0B,OAAO,CAACnD,cAA1C,CAAb;AACD,GAJiB,EAKlB,CAACuB,aAAD,CALkB,CAApB;AAQA,QAAM8B,qBAAqB,GAAG,oBAC5B,MACEC,+BAAQC,GAAR,GACGC,WADH,CACe,EADf,EAEGC,KAFH,CAES,MAAM;AACX,QACEnD,YAAY,CAACD,KAAb,IACAxC,cAAc,KAAKX,cAAc,CAACwG,WAFpC,EAGE;AACAN,MAAAA,WAAW;AACZ;AACF,GATH,CAF0B,EAY5B,CAACA,WAAD,EAAc9C,YAAd,EAA4BzC,cAA5B,CAZ4B,CAA9B;AAeA,QAAM8F,oBAAoB,GAAG,6CAAiB,OAAO;AACnDC,IAAAA,OAAO,EAAExD,SAAS,CAACC,KADgC;AAEnDwD,IAAAA,eAAe,EAAEjG;AAFkC,GAAP,CAAjB,CAA7B;AAKA,QAAMkG,WAAW,GAAG,oBAClB,MAAO5D,UAAU,GAAG;AAAEkB,IAAAA,IAAI,EAAE/D;AAAR,GAAH,GAA2B;AAAEgE,IAAAA,KAAK,EAAEhE;AAAT,GAD1B,EAElB,CAACA,WAAD,EAAc6C,UAAd,CAFkB,CAApB;AAKA,QAAM6D,UAAU,GAAG,oBAAQ,MAAM;AAC/B,WAAOT,+BAAQU,GAAR,GACJhG,YADI,CACSA,YADT,EAEJC,WAFI,CAEQA,WAFR,EAGJgG,OAHI,CAGI/E,YAAY,GAAG4E,WAAH,GAAiB5C,WAHjC,EAIJgD,WAJI,CAIQhF,YAAY,GAAG,GAAH,GAAS,CAJ7B,EAKJiF,aALI,CAKU7C,kBAAkB,GAAG3D,gBAL/B,EAMJyG,WANI,CAMQ,CAAC,CAAC,EAAF,EAAM,EAAN,CANR,EAOJC,+BAPI,CAO4BhB,qBAP5B,EAQJtF,8BARI,CAQ2BA,8BAR3B,EASJuG,OATI,CAUHvF,WAAW,KAAK/B,WAAW,CAAC2E,QAA5B,KACGzC,YAAY,GACTrB,cAAc,KAAKX,cAAc,CAACwG,WADzB,GAET7F,cAAc,KAAKX,cAAc,CAACqH,aAHxC,CAVG,EAeJC,OAfI,CAeI,MAAM;AACb7D,MAAAA,gBAAgB,CAAC3D,WAAW,CAACyH,QAAb,EAAuB,KAAvB,CAAhB;AACA,0CAAQzF,cAAR,EAAwBhC,WAAW,CAACyH,QAApC;;AACA,UAAIjF,mBAAmB,KAAKrC,yBAAyB,CAACuH,OAAtD,EAA+D;AAC7D,4CAAQnG,eAAR;AACD;;AACD,UAAIgB,aAAJ,EAAmB;AACjB,4CAAQnB,kBAAR,EAA4B,IAA5B,EAAkCD,kBAAlC;AACD;AACF,KAxBI,EAyBJwG,QAzBI,CAyBMpC,KAAD,IAAW;AACnB,YAAMqC,yBAAyB,GAAG1E,UAAU,GACxC,wCACEqC,KAAK,CAACI,CADR,EAEE,CAAC,CAAD,EAAItF,WAAJ,EAAiBA,WAAW,GAAG,CAA/B,CAFF,EAGE,CAAC,CAAD,EAAIA,WAAJ,EAAiBA,WAAjB,CAHF,CADwC,GAMxC,wCACEkF,KAAK,CAACI,CAAN,GAAU9D,cADZ,EAEE,CAAC,CAACxB,WAAD,GAAe,CAAhB,EAAmB,CAACA,WAApB,EAAiC,CAAjC,CAFF,EAGE,CAACA,WAAD,EAAcA,WAAd,EAA2B,CAA3B,CAHF,CANJ;AAYA,YAAMwH,wBAAwB,GAC5B1E,cAAc,IACboC,KAAK,CAACC,YAAN,IACEtD,YAAY,GAAG7B,WAAW,GAAG,CAACiE,kBAAlB,GAAuC,CADrD,CADa,CADhB;AAKA,YAAMwD,mBAAmB,GAAGC,IAAI,CAACC,GAAL,CAC1B9F,YAAY,GAAG0F,yBAAH,GAA+B,CADjB,EAE1BC,wBAF0B,CAA5B;AAKAzE,MAAAA,SAAS,CAACC,KAAV,GAAkB,wCAChByE,mBADgB,EAEhB,CAAC,CAACzH,WAAF,EAAe,CAAf,EAAkBA,WAAlB,CAFgB,EAGhB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAHgB,EAIhBwE,qCAAcC,KAJE,CAAlB;AAMD,KAtDI,EAuDJ2B,KAvDI,CAuDEnB,aAvDF,CAAP;AAwDD,GAzDkB,EAyDhB,CACDzE,cADC,EAEDuC,SAFC,EAGD/C,WAHC,EAIDsD,gBAJC,EAKDW,kBALC,EAMDgB,aANC,EAODpB,WAPC,EAQD4C,WARC,EASDnG,gBATC,EAUD4B,aAVC,EAWDC,mBAXC,EAYD6D,qBAZC,EAaDnE,YAbC,EAcDgB,UAdC,EAeDrB,cAfC,EAgBDsB,cAhBC,EAiBDpB,WAjBC,EAkBDf,YAlBC,EAmBDD,8BAnBC,EAoBDE,WApBC,EAqBDE,kBArBC,CAzDgB,CAAnB,CA/PmD,CAgVnD;;AACA,QAAM8G,uBAAuB,GAAGC,yBAAYC,KAAZ,GAC5BjF,UAD4B,GAE5B,CAACA,UAFL;AAIA,QAAMkF,mBAAmB,GAAG;AAC1BvB,IAAAA,eAAe,EAAEzE,qBADS;AAE1BsB,IAAAA,KAAK,EAAErD;AAFmB,GAA5B;AAKA,QAAMgI,eAAe,GAAG,6CAAiB,MAAM;AAC7C,QAAI7H,UAAU,KAAKP,UAAU,CAACQ,KAA9B,EAAqC;AACnC,aAAO,EAAP;AACD;;AAED,WAAO;AACL6H,MAAAA,SAAS,EAAE,CACT;AACEC,QAAAA,UAAU,EAAE,wCACVnF,SAAS,CAACC,KADA,EAEV,CAAC,CAAD,EAAI,CAAJ,CAFU,EAGV,CAAC,CAAD,EAAIhD,WAAW,GAAG8C,cAAlB,CAHU,EAIV0B,qCAAcC,KAJJ;AADd,OADS;AADN,KAAP;AAYD,GAjBuB,CAAxB;AAmBA,QAAM0D,mBAAmB,GAAG,6CAAiB,MAAM;AACjD,UAAMC,kBAAkB,GAAGpI,WAAW,GAAG,CAAC8C,cAA1C;AACA,UAAMuF,MAAM,GAAGlI,UAAU,KAAKP,UAAU,CAAC0I,IAAzC;AACA,UAAMC,MAAM,GAAG7G,WAAW,KAAK/B,WAAW,CAACiC,IAA3C;;AAEA,QAAIyG,MAAJ,EAAY;AACV,aAAO;AACLJ,QAAAA,SAAS,EAAE,CAAC;AAAEC,UAAAA,UAAU,EAAE;AAAd,SAAD,CADN;AAELM,QAAAA,aAAa,EAAEZ,uBAAuB,GAAG,aAAH,GAAmB;AAFpD,OAAP;AAID;;AAED,QAAIM,UAAU,GAAG,CAAjB;;AAEA,QAAIK,MAAJ,EAAY;AACVL,MAAAA,UAAU,GAAGrG,YAAY,GAAG,CAAH,GAAOuG,kBAAhC;AACD,KAFD,MAEO;AACLF,MAAAA,UAAU,GAAG,wCACXnF,SAAS,CAACC,KADC,EAEX,CAAC,CAAD,EAAI,CAAJ,CAFW,EAGX,CAACoF,kBAAD,EAAqB,CAArB,CAHW,EAIX5D,qCAAcC,KAJH,CAAb;AAMD;;AAED,WAAO;AACLwD,MAAAA,SAAS,EAAE,CAAC;AAAEC,QAAAA;AAAF,OAAD,CADN;AAELM,MAAAA,aAAa,EAAEZ,uBAAuB,GAAG,aAAH,GAAmB;AAFpD,KAAP;AAID,GA7B2B,CAA5B;AA+BA,QAAMa,sBAAsB,GAAG,6CAAiB,OAAO;AACrDC,IAAAA,yBAAyB,EACvBC,sBAASC,EAAT,KAAgB,SAAhB,GACI3F,YAAY,CAACD,KAAb,GACG,qBADH,GAEG,KAHP,GAII6F;AAN+C,GAAP,CAAjB,CAA/B;AASA,QAAMC,QAAQ,GACZ,OAAOxH,KAAK,CAACwH,QAAb,KAA0B,UAA1B,GACIxH,KAAK,CAACwH,QAAN,CAAe/F,SAAf,CADJ,CAC8B;AAD9B,IAEIzB,KAAK,CAACwH,QAHZ;AAKA,kCACEvH,GADF,EAEE,OAAO;AACLsE,IAAAA,UADK;AAELE,IAAAA;AAFK,GAAP,CAFF,EAME,CAACF,UAAD,EAAaE,WAAb,CANF;AASA,sBACE,6BAAC,gCAAD;AACE,IAAA,OAAO,EAAEW,UADX;AAEE,IAAA,UAAU,EAAEtE,UAFd;AAGE,IAAA,iBAAiB,EAAEC;AAHrB,kBAIE,6BAAC,8BAAD,CAAU,IAAV;AAAe,IAAA,KAAK,EAAE0G,MAAM,CAACC,IAA7B;AAAmC,IAAA,QAAQ,EAAE9F;AAA7C,kBACE,6BAAC,gCAAD;AAAiB,IAAA,OAAO,EAAE8C;AAA1B,kBACE,6BAAC,8BAAD,CAAU,IAAV;AACE,IAAA,KAAK,EAAE,CACL7F,UAAU,KAAKP,UAAU,CAACQ,KAA1B,GACI2I,MAAM,CAACE,eADX,GAEIF,MAAM,CAACG,gBAHN,EAILlB,eAJK,EAKL/F,qBALK,CADT;AAQE,IAAA,aAAa,EAAEwG;AARjB,KASGK,QATH,eAUE,6BAAC,8BAAD,CAAU,IAAV;AACE,IAAA,aAAa,EAAEnF,oBADjB;AAEE,IAAA,KAAK,EAAE,CAACoF,MAAM,CAACI,OAAR,EAAiB7C,oBAAjB;AAFT,IAVF,CADF,CADF,eAkBE,6BAAC,8BAAD,CAAU,IAAV;AACE,IAAA,aAAa,EAAC,UADhB;AAEE,IAAA,aAAa,EAAE7C,mBAFjB;AAGE,IAAA,KAAK,EAAE,CACLsF,MAAM,CAACK,eADF,EAELjB,mBAFK,EAGLnG,oBAHK;AAHT,kBAQE,6BAAC,8BAAD,CAAU,IAAV;AAAe,IAAA,KAAK,EAAE+F;AAAtB,KACGzF,oBAAoB,CAACS,SAAD,CADvB,CARF,CAlBF,CAJF,CADF;AAsCD,CA1ckB,CAArB;eA6ce1B,Y;;;AAEf,MAAM0H,MAAM,GAAGM,wBAAWC,MAAX,CAAkB;AAC/BF,EAAAA,eAAe,EAAE,EACf,GAAGC,wBAAWE,kBADC;AAEfC,IAAAA,MAAM,EAAE,IAFO;AAGfhB,IAAAA,aAAa,EAAE;AAHA,GADc;AAM/BU,EAAAA,gBAAgB,EAAE,EAChB,GAAGG,wBAAWE,kBADE;AAEhBC,IAAAA,MAAM,EAAE;AAFQ,GANa;AAU/BP,EAAAA,eAAe,EAAE,EACf,GAAGI,wBAAWE;AADC,GAVc;AAa/BP,EAAAA,IAAI,EAAE;AACJS,IAAAA,IAAI,EAAE,CADF;AAEJD,IAAAA,MAAM,EAAE,CAFJ;AAGJE,IAAAA,QAAQ,EAAE;AAHN,GAbyB;AAkB/BP,EAAAA,OAAO,EAAE,EACP,GAAGE,wBAAWE,kBADP;AAEPC,IAAAA,MAAM,EAAE;AAFD;AAlBsB,CAAlB,CAAf","sourcesContent":["// This component is based on RN's DrawerLayoutAndroid API\n// It's cross-compatible with all platforms despite\n// `DrawerLayoutAndroid` only being available on android\n\nimport React, {\n ReactNode,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState,\n} from 'react';\n\nimport {\n StyleSheet,\n Keyboard,\n StatusBar,\n I18nManager,\n StatusBarAnimation,\n StyleProp,\n ViewStyle,\n LayoutChangeEvent,\n Platform,\n} from 'react-native';\n\nimport Animated, {\n Extrapolation,\n SharedValue,\n interpolate,\n runOnJS,\n useAnimatedProps,\n useAnimatedStyle,\n useDerivedValue,\n useSharedValue,\n withSpring,\n} from 'react-native-reanimated';\n\nimport { GestureObjects as Gesture } from '../handlers/gestures/gestureObjects';\nimport { GestureDetector } from '../handlers/gestures/GestureDetector';\nimport {\n UserSelect,\n ActiveCursor,\n MouseButton,\n HitSlop,\n GestureStateChangeEvent,\n} from '../handlers/gestureHandlerCommon';\nimport { PanGestureHandlerEventPayload } from '../handlers/GestureHandlerEventPayload';\n\nconst DRAG_TOSS = 0.05;\n\nexport enum DrawerPosition {\n LEFT,\n RIGHT,\n}\n\nexport enum DrawerState {\n IDLE,\n DRAGGING,\n SETTLING,\n}\n\nexport enum DrawerType {\n FRONT,\n BACK,\n SLIDE,\n}\n\nexport enum DrawerLockMode {\n UNLOCKED,\n LOCKED_CLOSED,\n LOCKED_OPEN,\n}\n\nexport enum DrawerKeyboardDismissMode {\n NONE,\n ON_DRAG,\n}\n\nexport interface DrawerLayoutProps {\n /**\n * This attribute is present in the native android implementation already and is one\n * of the required params. The gesture handler version of DrawerLayout makes it\n * possible for the function passed as `renderNavigationView` to take an\n * Animated value as a parameter that indicates the progress of drawer\n * opening/closing animation (progress value is 0 when closed and 1 when\n * opened). This can be used by the drawer component to animated its children\n * while the drawer is opening or closing.\n */\n renderNavigationView: (\n progressAnimatedValue: SharedValue<number>\n ) => ReactNode;\n\n /**\n * Determines the side from which the drawer will open.\n */\n drawerPosition?: DrawerPosition;\n\n /**\n * Width of the drawer.\n */\n drawerWidth?: number;\n\n /**\n * Background color of the drawer.\n */\n drawerBackgroundColor?: string;\n\n /**\n * Specifies the lock mode of the drawer.\n * Programatic opening/closing isn't affected by the lock mode. Defaults to `UNLOCKED`.\n * - `UNLOCKED` - the drawer will respond to gestures.\n * - `LOCKED_CLOSED` - the drawer will move freely until it settles in a closed position, then the gestures will be disabled.\n * - `LOCKED_OPEN` - the drawer will move freely until it settles in an opened position, then the gestures will be disabled.\n */\n drawerLockMode?: DrawerLockMode;\n\n /**\n * Determines if system keyboard should be closed upon dragging the drawer.\n */\n keyboardDismissMode?: DrawerKeyboardDismissMode;\n\n /**\n * Called when the drawer is closed.\n */\n onDrawerClose?: () => void;\n\n /**\n * Called when the drawer is opened.\n */\n onDrawerOpen?: () => void;\n\n /**\n * Called when the status of the drawer changes.\n */\n onDrawerStateChanged?: (\n newState: DrawerState,\n drawerWillShow: boolean\n ) => void;\n\n /**\n * Type of animation that will play when opening the drawer.\n */\n drawerType?: DrawerType;\n\n /**\n * Speed of animation that will play when letting go, or dismissing the drawer.\n * This will also be the default animation speed for programatic controlls.\n */\n animationSpeed?: number;\n\n /**\n * Defines how far from the edge of the content view the gesture should\n * activate.\n */\n edgeWidth?: number;\n\n /**\n * Minimal distance to swipe before the drawer starts moving.\n */\n minSwipeDistance?: number;\n\n /**\n * When set to true Drawer component will use\n * {@link https://reactnative.dev/docs/statusbar StatusBar} API to hide the OS\n * status bar whenever the drawer is pulled or when its in an \"open\" state.\n */\n hideStatusBar?: boolean;\n\n /**\n * @default 'slide'\n *\n * Can be used when hideStatusBar is set to true and will select the animation\n * used for hiding/showing the status bar. See\n * {@link https://reactnative.dev/docs/statusbar StatusBar} documentation for\n * more details\n */\n statusBarAnimation?: StatusBarAnimation;\n\n /**\n * @default 'rgba(0, 0, 0, 0.7)'\n *\n * Color of the background overlay.\n * Animated from `0%` to `100%` as the drawer opens.\n */\n overlayColor?: string;\n\n /**\n * Style wrapping the content.\n */\n contentContainerStyle?: StyleProp<ViewStyle>;\n\n /**\n * Style wrapping the drawer.\n */\n drawerContainerStyle?: StyleProp<ViewStyle>;\n\n /**\n * Enables two-finger gestures on supported devices, for example iPads with\n * trackpads. If not enabled the gesture will require click + drag, with\n * `enableTrackpadTwoFingerGesture` swiping with two fingers will also trigger\n * the gesture.\n */\n enableTrackpadTwoFingerGesture?: boolean;\n\n onDrawerSlide?: (position: number) => void;\n\n // Implicit `children` prop has been removed in @types/react^18.0.\n /**\n * Elements that will be rendered inside the content view.\n */\n children?: ReactNode | ((openValue?: SharedValue<number>) => ReactNode);\n\n /**\n * @default 'none'\n * Sets whether the text inside both the drawer and the context window can be selected.\n * Values: 'none' | 'text' | 'auto'\n */\n userSelect?: UserSelect;\n\n /**\n * @default 'auto'\n * Sets the displayed cursor pictogram when the drawer is being dragged.\n * Values: see CSS cursor values\n */\n activeCursor?: ActiveCursor;\n\n /**\n * @default 'MouseButton.LEFT'\n * Allows to choose which mouse button should underlying pan handler react to.\n */\n mouseButton?: MouseButton;\n\n /**\n * @default 'false if MouseButton.RIGHT is specified'\n * Allows to enable/disable context menu.\n */\n enableContextMenu?: boolean;\n}\n\nexport type DrawerMovementOption = {\n initialVelocity?: number;\n animationSpeed?: number;\n};\n\nexport interface DrawerLayoutMethods {\n openDrawer: (options?: DrawerMovementOption) => void;\n closeDrawer: (options?: DrawerMovementOption) => void;\n}\n\nconst defaultProps = {\n drawerWidth: 200,\n drawerPosition: DrawerPosition.LEFT,\n drawerType: DrawerType.FRONT,\n edgeWidth: 20,\n minSwipeDistance: 3,\n overlayColor: 'rgba(0, 0, 0, 0.7)',\n drawerLockMode: DrawerLockMode.UNLOCKED,\n enableTrackpadTwoFingerGesture: false,\n activeCursor: 'auto' as ActiveCursor,\n mouseButton: MouseButton.LEFT,\n statusBarAnimation: 'slide' as StatusBarAnimation,\n};\n\n// StatusBar.setHidden and Keyboard.dismiss cannot be directly referenced in worklets.\nconst setStatusBarHidden = StatusBar.setHidden;\nconst dismissKeyboard = Keyboard.dismiss;\n\nconst DrawerLayout = forwardRef<DrawerLayoutMethods, DrawerLayoutProps>(\n function DrawerLayout(props: DrawerLayoutProps, ref) {\n const [containerWidth, setContainerWidth] = useState(0);\n const [drawerState, setDrawerState] = useState<DrawerState>(\n DrawerState.IDLE\n );\n const [drawerOpened, setDrawerOpened] = useState(false);\n\n const {\n drawerPosition = defaultProps.drawerPosition,\n drawerWidth = defaultProps.drawerWidth,\n drawerType = defaultProps.drawerType,\n drawerBackgroundColor,\n drawerContainerStyle,\n contentContainerStyle,\n minSwipeDistance = defaultProps.minSwipeDistance,\n edgeWidth = defaultProps.edgeWidth,\n drawerLockMode = defaultProps.drawerLockMode,\n overlayColor = defaultProps.overlayColor,\n enableTrackpadTwoFingerGesture = defaultProps.enableTrackpadTwoFingerGesture,\n activeCursor = defaultProps.activeCursor,\n mouseButton = defaultProps.mouseButton,\n statusBarAnimation = defaultProps.statusBarAnimation,\n hideStatusBar,\n keyboardDismissMode,\n userSelect,\n enableContextMenu,\n renderNavigationView,\n onDrawerSlide,\n onDrawerClose,\n onDrawerOpen,\n onDrawerStateChanged,\n animationSpeed: animationSpeedProp,\n } = props;\n\n const isFromLeft = drawerPosition === DrawerPosition.LEFT;\n\n const sideCorrection = isFromLeft ? 1 : -1;\n\n // While closing the drawer when user starts gesture in the greyed out part of the window,\n // we want the drawer to follow only once the finger reaches the edge of the drawer.\n // See the diagram for reference. * = starting finger position, < = current finger position\n // 1) +---------------+ 2) +---------------+ 3) +---------------+ 4) +---------------+\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|..<*..| |XXXXXXXX|.<-*..| |XXXXXXXX|<--*..| |XXXXX|<-----*..|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // +---------------+ +---------------+ +---------------+ +---------------+\n\n const openValue = useSharedValue<number>(0);\n\n useDerivedValue(() => {\n onDrawerSlide && runOnJS(onDrawerSlide)(openValue.value);\n }, []);\n\n const isDrawerOpen = useSharedValue(false);\n\n const handleContainerLayout = ({ nativeEvent }: LayoutChangeEvent) => {\n setContainerWidth(nativeEvent.layout.width);\n };\n\n const emitStateChanged = useCallback(\n (newState: DrawerState, drawerWillShow: boolean) => {\n 'worklet';\n onDrawerStateChanged &&\n runOnJS(onDrawerStateChanged)?.(newState, drawerWillShow);\n },\n [onDrawerStateChanged]\n );\n\n const drawerAnimatedProps = useAnimatedProps(() => ({\n accessibilityViewIsModal: isDrawerOpen.value,\n }));\n\n const overlayAnimatedProps = useAnimatedProps(() => ({\n pointerEvents: isDrawerOpen.value ? ('auto' as const) : ('none' as const),\n }));\n\n // While the drawer is hidden, it's hitSlop overflows onto the main view by edgeWidth\n // This way it can be swiped open even when it's hidden\n const [edgeHitSlop, setEdgeHitSlop] = useState<HitSlop>(\n isFromLeft\n ? { left: 0, width: edgeWidth }\n : { right: 0, width: edgeWidth }\n );\n\n // gestureOrientation is 1 if the gesture is expected to move from left to right and -1 otherwise\n const gestureOrientation = useMemo(\n () => sideCorrection * (drawerOpened ? -1 : 1),\n [sideCorrection, drawerOpened]\n );\n\n useEffect(() => {\n setEdgeHitSlop(\n isFromLeft\n ? { left: 0, width: edgeWidth }\n : { right: 0, width: edgeWidth }\n );\n }, [isFromLeft, edgeWidth]);\n\n const animateDrawer = useCallback(\n (toValue: number, initialVelocity: number, animationSpeed?: number) => {\n 'worklet';\n const willShow = toValue !== 0;\n isDrawerOpen.value = willShow;\n\n emitStateChanged(DrawerState.SETTLING, willShow);\n runOnJS(setDrawerState)(DrawerState.SETTLING);\n\n if (hideStatusBar) {\n runOnJS(setStatusBarHidden)(willShow, statusBarAnimation);\n }\n\n const normalizedToValue = interpolate(\n toValue,\n [0, drawerWidth],\n [0, 1],\n Extrapolation.CLAMP\n );\n\n const normalizedInitialVelocity = interpolate(\n initialVelocity,\n [0, drawerWidth],\n [0, 1],\n Extrapolation.CLAMP\n );\n\n openValue.value = withSpring(\n normalizedToValue,\n {\n overshootClamping: true,\n velocity: normalizedInitialVelocity,\n mass: animationSpeed\n ? 1 / animationSpeed\n : 1 / (animationSpeedProp ?? 1),\n damping: 40,\n stiffness: 500,\n },\n (finished) => {\n if (finished) {\n emitStateChanged(DrawerState.IDLE, willShow);\n runOnJS(setDrawerOpened)(willShow);\n runOnJS(setDrawerState)(DrawerState.IDLE);\n if (willShow) {\n onDrawerOpen && runOnJS(onDrawerOpen)?.();\n } else {\n onDrawerClose && runOnJS(onDrawerClose)?.();\n }\n }\n }\n );\n },\n [\n openValue,\n emitStateChanged,\n isDrawerOpen,\n hideStatusBar,\n onDrawerClose,\n onDrawerOpen,\n drawerWidth,\n statusBarAnimation,\n ]\n );\n\n const handleRelease = useCallback(\n (event: GestureStateChangeEvent<PanGestureHandlerEventPayload>) => {\n 'worklet';\n let { translationX: dragX, velocityX, x: touchX } = event;\n\n if (drawerPosition !== DrawerPosition.LEFT) {\n // See description in _updateAnimatedEvent about why events are flipped\n // for right-side drawer\n dragX = -dragX;\n touchX = containerWidth - touchX;\n velocityX = -velocityX;\n }\n\n const gestureStartX = touchX - dragX;\n let dragOffsetBasedOnStart = 0;\n\n if (drawerType === DrawerType.FRONT) {\n dragOffsetBasedOnStart =\n gestureStartX > drawerWidth ? gestureStartX - drawerWidth : 0;\n }\n\n const startOffsetX =\n dragX +\n dragOffsetBasedOnStart +\n (isDrawerOpen.value ? drawerWidth : 0);\n\n const projOffsetX = startOffsetX + DRAG_TOSS * velocityX;\n\n const shouldOpen = projOffsetX > drawerWidth / 2;\n\n if (shouldOpen) {\n animateDrawer(drawerWidth, velocityX);\n } else {\n animateDrawer(0, velocityX);\n }\n },\n [\n animateDrawer,\n containerWidth,\n drawerPosition,\n drawerType,\n drawerWidth,\n isDrawerOpen,\n ]\n );\n\n const openDrawer = useCallback(\n (options: DrawerMovementOption = {}) => {\n 'worklet';\n animateDrawer(\n drawerWidth,\n options.initialVelocity ?? 0,\n options.animationSpeed\n );\n },\n [animateDrawer, drawerWidth]\n );\n\n const closeDrawer = useCallback(\n (options: DrawerMovementOption = {}) => {\n 'worklet';\n animateDrawer(0, options.initialVelocity ?? 0, options.animationSpeed);\n },\n [animateDrawer]\n );\n\n const overlayDismissGesture = useMemo(\n () =>\n Gesture.Tap()\n .maxDistance(25)\n .onEnd(() => {\n if (\n isDrawerOpen.value &&\n drawerLockMode !== DrawerLockMode.LOCKED_OPEN\n ) {\n closeDrawer();\n }\n }),\n [closeDrawer, isDrawerOpen, drawerLockMode]\n );\n\n const overlayAnimatedStyle = useAnimatedStyle(() => ({\n opacity: openValue.value,\n backgroundColor: overlayColor,\n }));\n\n const fillHitSlop = useMemo(\n () => (isFromLeft ? { left: drawerWidth } : { right: drawerWidth }),\n [drawerWidth, isFromLeft]\n );\n\n const panGesture = useMemo(() => {\n return Gesture.Pan()\n .activeCursor(activeCursor)\n .mouseButton(mouseButton)\n .hitSlop(drawerOpened ? fillHitSlop : edgeHitSlop)\n .minDistance(drawerOpened ? 100 : 0)\n .activeOffsetX(gestureOrientation * minSwipeDistance)\n .failOffsetY([-15, 15])\n .simultaneousWithExternalGesture(overlayDismissGesture)\n .enableTrackpadTwoFingerGesture(enableTrackpadTwoFingerGesture)\n .enabled(\n drawerState !== DrawerState.SETTLING &&\n (drawerOpened\n ? drawerLockMode !== DrawerLockMode.LOCKED_OPEN\n : drawerLockMode !== DrawerLockMode.LOCKED_CLOSED)\n )\n .onStart(() => {\n emitStateChanged(DrawerState.DRAGGING, false);\n runOnJS(setDrawerState)(DrawerState.DRAGGING);\n if (keyboardDismissMode === DrawerKeyboardDismissMode.ON_DRAG) {\n runOnJS(dismissKeyboard)();\n }\n if (hideStatusBar) {\n runOnJS(setStatusBarHidden)(true, statusBarAnimation);\n }\n })\n .onUpdate((event) => {\n const startedOutsideTranslation = isFromLeft\n ? interpolate(\n event.x,\n [0, drawerWidth, drawerWidth + 1],\n [0, drawerWidth, drawerWidth]\n )\n : interpolate(\n event.x - containerWidth,\n [-drawerWidth - 1, -drawerWidth, 0],\n [drawerWidth, drawerWidth, 0]\n );\n\n const startedInsideTranslation =\n sideCorrection *\n (event.translationX +\n (drawerOpened ? drawerWidth * -gestureOrientation : 0));\n\n const adjustedTranslation = Math.max(\n drawerOpened ? startedOutsideTranslation : 0,\n startedInsideTranslation\n );\n\n openValue.value = interpolate(\n adjustedTranslation,\n [-drawerWidth, 0, drawerWidth],\n [1, 0, 1],\n Extrapolation.CLAMP\n );\n })\n .onEnd(handleRelease);\n }, [\n drawerLockMode,\n openValue,\n drawerWidth,\n emitStateChanged,\n gestureOrientation,\n handleRelease,\n edgeHitSlop,\n fillHitSlop,\n minSwipeDistance,\n hideStatusBar,\n keyboardDismissMode,\n overlayDismissGesture,\n drawerOpened,\n isFromLeft,\n containerWidth,\n sideCorrection,\n drawerState,\n activeCursor,\n enableTrackpadTwoFingerGesture,\n mouseButton,\n statusBarAnimation,\n ]);\n\n // When using RTL, row and row-reverse flex directions are flipped.\n const reverseContentDirection = I18nManager.isRTL\n ? isFromLeft\n : !isFromLeft;\n\n const dynamicDrawerStyles = {\n backgroundColor: drawerBackgroundColor,\n width: drawerWidth,\n };\n\n const containerStyles = useAnimatedStyle(() => {\n if (drawerType === DrawerType.FRONT) {\n return {};\n }\n\n return {\n transform: [\n {\n translateX: interpolate(\n openValue.value,\n [0, 1],\n [0, drawerWidth * sideCorrection],\n Extrapolation.CLAMP\n ),\n },\n ],\n };\n });\n\n const drawerAnimatedStyle = useAnimatedStyle(() => {\n const closedDrawerOffset = drawerWidth * -sideCorrection;\n const isBack = drawerType === DrawerType.BACK;\n const isIdle = drawerState === DrawerState.IDLE;\n\n if (isBack) {\n return {\n transform: [{ translateX: 0 }],\n flexDirection: reverseContentDirection ? 'row-reverse' : 'row',\n };\n }\n\n let translateX = 0;\n\n if (isIdle) {\n translateX = drawerOpened ? 0 : closedDrawerOffset;\n } else {\n translateX = interpolate(\n openValue.value,\n [0, 1],\n [closedDrawerOffset, 0],\n Extrapolation.CLAMP\n );\n }\n\n return {\n transform: [{ translateX }],\n flexDirection: reverseContentDirection ? 'row-reverse' : 'row',\n };\n });\n\n const containerAnimatedProps = useAnimatedProps(() => ({\n importantForAccessibility:\n Platform.OS === 'android'\n ? isDrawerOpen.value\n ? ('no-hide-descendants' as const)\n : ('yes' as const)\n : undefined,\n }));\n\n const children =\n typeof props.children === 'function'\n ? props.children(openValue) // renderer function\n : props.children;\n\n useImperativeHandle(\n ref,\n () => ({\n openDrawer,\n closeDrawer,\n }),\n [openDrawer, closeDrawer]\n );\n\n return (\n <GestureDetector\n gesture={panGesture}\n userSelect={userSelect}\n enableContextMenu={enableContextMenu}>\n <Animated.View style={styles.main} onLayout={handleContainerLayout}>\n <GestureDetector gesture={overlayDismissGesture}>\n <Animated.View\n style={[\n drawerType === DrawerType.FRONT\n ? styles.containerOnBack\n : styles.containerInFront,\n containerStyles,\n contentContainerStyle,\n ]}\n animatedProps={containerAnimatedProps}>\n {children}\n <Animated.View\n animatedProps={overlayAnimatedProps}\n style={[styles.overlay, overlayAnimatedStyle]}\n />\n </Animated.View>\n </GestureDetector>\n <Animated.View\n pointerEvents=\"box-none\"\n animatedProps={drawerAnimatedProps}\n style={[\n styles.drawerContainer,\n drawerAnimatedStyle,\n drawerContainerStyle,\n ]}>\n <Animated.View style={dynamicDrawerStyles}>\n {renderNavigationView(openValue)}\n </Animated.View>\n </Animated.View>\n </Animated.View>\n </GestureDetector>\n );\n }\n);\n\nexport default DrawerLayout;\n\nconst styles = StyleSheet.create({\n drawerContainer: {\n ...StyleSheet.absoluteFillObject,\n zIndex: 1001,\n flexDirection: 'row',\n },\n containerInFront: {\n ...StyleSheet.absoluteFillObject,\n zIndex: 1002,\n },\n containerOnBack: {\n ...StyleSheet.absoluteFillObject,\n },\n main: {\n flex: 1,\n zIndex: 0,\n overflow: 'hidden',\n },\n overlay: {\n ...StyleSheet.absoluteFillObject,\n zIndex: 1000,\n },\n});\n"]}
@@ -41,8 +41,12 @@ const Text = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
41
41
  } else {
42
42
  ref.current = node;
43
43
  }
44
- };
44
+ }; // This is a special case for `Text` component. After https://github.com/software-mansion/react-native-gesture-handler/pull/3379 we check for
45
+ // `displayName` field. However, `Text` from RN has this field set to `Text`, but is also present in `RNSVGElements` set.
46
+ // We don't want to treat our `Text` as the one from `SVG`, therefore we add special field to ref.
45
47
 
48
+
49
+ refHandler.rngh = true;
46
50
  (0, _react.useEffect)(() => {
47
51
  if (_reactNative.Platform.OS !== 'web') {
48
52
  return;
@@ -1 +1 @@
1
- {"version":3,"sources":["Text.tsx"],"names":["Text","props","ref","onPress","onLongPress","rest","textRef","native","Gesture","Native","runOnJS","refHandler","node","current","Platform","OS","textElement","setAttribute"],"mappings":";;;;;;;AAAA;;AAOA;;AAMA;;AACA;;;;;;;;AAEO,MAAMA,IAAI,gBAAG,uBAClB,CAACC,KAAD,EAAqBC,GAArB,KAAmD;AACjD,QAAM;AAAEC,IAAAA,OAAF;AAAWC,IAAAA,WAAX;AAAwB,OAAGC;AAA3B,MAAoCJ,KAA1C;AAEA,QAAMK,OAAO,GAAG,mBAAsB,IAAtB,CAAhB;;AACA,QAAMC,MAAM,GAAGC,+BAAQC,MAAR,GAAiBC,OAAjB,CAAyB,IAAzB,CAAf;;AAEA,QAAMC,UAAU,GAAIC,IAAD,IAAe;AAChCN,IAAAA,OAAO,CAACO,OAAR,GAAkBD,IAAlB;;AAEA,QAAIV,GAAG,KAAK,IAAZ,EAAkB;AAChB;AACD;;AAED,QAAI,OAAOA,GAAP,KAAe,UAAnB,EAA+B;AAC7BA,MAAAA,GAAG,CAACU,IAAD,CAAH;AACD,KAFD,MAEO;AACLV,MAAAA,GAAG,CAACW,OAAJ,GAAcD,IAAd;AACD;AACF,GAZD;;AAcA,wBAAU,MAAM;AACd,QAAIE,sBAASC,EAAT,KAAgB,KAApB,EAA2B;AACzB;AACD;;AAED,UAAMC,WAAW,GAAGd,GAAG,GAClBA,GAAD,CAA2BW,OADR,GAEnBP,OAAO,CAACO,OAFZ,CALc,CASd;;AACCG,IAAAA,WAAD,aAACA,WAAD,uBAACA,WAAD,CAA4CC,YAA5C,CACE,UADF,EAEE,MAFF;AAID,GAdD,EAcG,EAdH;AAgBA,SAAOd,OAAO,IAAIC,WAAX,gBACL,6BAAC,gCAAD;AAAiB,IAAA,OAAO,EAAEG;AAA1B,kBACE,6BAAC,iBAAD;AACE,IAAA,OAAO,EAAEJ,OADX;AAEE,IAAA,WAAW,EAAEC,WAFf;AAGE,IAAA,GAAG,EAAEO;AAHP,KAIMN,IAJN,EADF,CADK,gBAUL,6BAAC,iBAAD;AAAQ,IAAA,GAAG,EAAEH;AAAb,KAAsBG,IAAtB,EAVF;AAYD,CAjDiB,CAAb,C,CAmDP","sourcesContent":["import React, {\n ForwardedRef,\n forwardRef,\n RefObject,\n useEffect,\n useRef,\n} from 'react';\nimport {\n Platform,\n Text as RNText,\n TextProps as RNTextProps,\n} from 'react-native';\n\nimport { GestureObjects as Gesture } from '../handlers/gestures/gestureObjects';\nimport { GestureDetector } from '../handlers/gestures/GestureDetector';\n\nexport const Text = forwardRef(\n (props: RNTextProps, ref: ForwardedRef<RNText>) => {\n const { onPress, onLongPress, ...rest } = props;\n\n const textRef = useRef<RNText | null>(null);\n const native = Gesture.Native().runOnJS(true);\n\n const refHandler = (node: any) => {\n textRef.current = node;\n\n if (ref === null) {\n return;\n }\n\n if (typeof ref === 'function') {\n ref(node);\n } else {\n ref.current = node;\n }\n };\n\n useEffect(() => {\n if (Platform.OS !== 'web') {\n return;\n }\n\n const textElement = ref\n ? (ref as RefObject<RNText>).current\n : textRef.current;\n\n // At this point we are sure that textElement is div in HTML tree\n (textElement as unknown as HTMLDivElement)?.setAttribute(\n 'rnghtext',\n 'true'\n );\n }, []);\n\n return onPress || onLongPress ? (\n <GestureDetector gesture={native}>\n <RNText\n onPress={onPress}\n onLongPress={onLongPress}\n ref={refHandler}\n {...rest}\n />\n </GestureDetector>\n ) : (\n <RNText ref={ref} {...rest} />\n );\n }\n);\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type Text = typeof Text & RNText;\n"]}
1
+ {"version":3,"sources":["Text.tsx"],"names":["Text","props","ref","onPress","onLongPress","rest","textRef","native","Gesture","Native","runOnJS","refHandler","node","current","rngh","Platform","OS","textElement","setAttribute"],"mappings":";;;;;;;AAAA;;AAOA;;AAMA;;AACA;;;;;;;;AAEO,MAAMA,IAAI,gBAAG,uBAClB,CAACC,KAAD,EAAqBC,GAArB,KAAmD;AACjD,QAAM;AAAEC,IAAAA,OAAF;AAAWC,IAAAA,WAAX;AAAwB,OAAGC;AAA3B,MAAoCJ,KAA1C;AAEA,QAAMK,OAAO,GAAG,mBAAsB,IAAtB,CAAhB;;AACA,QAAMC,MAAM,GAAGC,+BAAQC,MAAR,GAAiBC,OAAjB,CAAyB,IAAzB,CAAf;;AAEA,QAAMC,UAAU,GAAIC,IAAD,IAAe;AAChCN,IAAAA,OAAO,CAACO,OAAR,GAAkBD,IAAlB;;AAEA,QAAIV,GAAG,KAAK,IAAZ,EAAkB;AAChB;AACD;;AAED,QAAI,OAAOA,GAAP,KAAe,UAAnB,EAA+B;AAC7BA,MAAAA,GAAG,CAACU,IAAD,CAAH;AACD,KAFD,MAEO;AACLV,MAAAA,GAAG,CAACW,OAAJ,GAAcD,IAAd;AACD;AACF,GAZD,CANiD,CAoBjD;AACA;AACA;;;AACAD,EAAAA,UAAU,CAACG,IAAX,GAAkB,IAAlB;AAEA,wBAAU,MAAM;AACd,QAAIC,sBAASC,EAAT,KAAgB,KAApB,EAA2B;AACzB;AACD;;AAED,UAAMC,WAAW,GAAGf,GAAG,GAClBA,GAAD,CAA2BW,OADR,GAEnBP,OAAO,CAACO,OAFZ,CALc,CASd;;AACCI,IAAAA,WAAD,aAACA,WAAD,uBAACA,WAAD,CAA4CC,YAA5C,CACE,UADF,EAEE,MAFF;AAID,GAdD,EAcG,EAdH;AAgBA,SAAOf,OAAO,IAAIC,WAAX,gBACL,6BAAC,gCAAD;AAAiB,IAAA,OAAO,EAAEG;AAA1B,kBACE,6BAAC,iBAAD;AACE,IAAA,OAAO,EAAEJ,OADX;AAEE,IAAA,WAAW,EAAEC,WAFf;AAGE,IAAA,GAAG,EAAEO;AAHP,KAIMN,IAJN,EADF,CADK,gBAUL,6BAAC,iBAAD;AAAQ,IAAA,GAAG,EAAEH;AAAb,KAAsBG,IAAtB,EAVF;AAYD,CAtDiB,CAAb,C,CAwDP","sourcesContent":["import React, {\n ForwardedRef,\n forwardRef,\n RefObject,\n useEffect,\n useRef,\n} from 'react';\nimport {\n Platform,\n Text as RNText,\n TextProps as RNTextProps,\n} from 'react-native';\n\nimport { GestureObjects as Gesture } from '../handlers/gestures/gestureObjects';\nimport { GestureDetector } from '../handlers/gestures/GestureDetector';\n\nexport const Text = forwardRef(\n (props: RNTextProps, ref: ForwardedRef<RNText>) => {\n const { onPress, onLongPress, ...rest } = props;\n\n const textRef = useRef<RNText | null>(null);\n const native = Gesture.Native().runOnJS(true);\n\n const refHandler = (node: any) => {\n textRef.current = node;\n\n if (ref === null) {\n return;\n }\n\n if (typeof ref === 'function') {\n ref(node);\n } else {\n ref.current = node;\n }\n };\n\n // This is a special case for `Text` component. After https://github.com/software-mansion/react-native-gesture-handler/pull/3379 we check for\n // `displayName` field. However, `Text` from RN has this field set to `Text`, but is also present in `RNSVGElements` set.\n // We don't want to treat our `Text` as the one from `SVG`, therefore we add special field to ref.\n refHandler.rngh = true;\n\n useEffect(() => {\n if (Platform.OS !== 'web') {\n return;\n }\n\n const textElement = ref\n ? (ref as RefObject<RNText>).current\n : textRef.current;\n\n // At this point we are sure that textElement is div in HTML tree\n (textElement as unknown as HTMLDivElement)?.setAttribute(\n 'rnghtext',\n 'true'\n );\n }, []);\n\n return onPress || onLongPress ? (\n <GestureDetector gesture={native}>\n <RNText\n onPress={onPress}\n onLongPress={onLongPress}\n ref={refHandler}\n {...rest}\n />\n </GestureDetector>\n ) : (\n <RNText ref={ref} {...rest} />\n );\n }\n);\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type Text = typeof Text & RNText;\n"]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=ExtraButtonProps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]}