@react-navigation/drawer 6.2.0 → 6.3.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 (33) hide show
  1. package/lib/commonjs/views/DrawerItem.js +2 -0
  2. package/lib/commonjs/views/DrawerItem.js.map +1 -1
  3. package/lib/commonjs/views/DrawerItemList.js +22 -9
  4. package/lib/commonjs/views/DrawerItemList.js.map +1 -1
  5. package/lib/commonjs/views/DrawerView.js +1 -0
  6. package/lib/commonjs/views/DrawerView.js.map +1 -1
  7. package/lib/commonjs/views/ScreenFallback.js.map +1 -1
  8. package/lib/commonjs/views/legacy/Drawer.js +2 -2
  9. package/lib/commonjs/views/legacy/Drawer.js.map +1 -1
  10. package/lib/commonjs/views/modern/Drawer.js +2 -2
  11. package/lib/commonjs/views/modern/Drawer.js.map +1 -1
  12. package/lib/module/views/DrawerItem.js +2 -0
  13. package/lib/module/views/DrawerItem.js.map +1 -1
  14. package/lib/module/views/DrawerItemList.js +22 -9
  15. package/lib/module/views/DrawerItemList.js.map +1 -1
  16. package/lib/module/views/DrawerView.js +1 -0
  17. package/lib/module/views/DrawerView.js.map +1 -1
  18. package/lib/module/views/ScreenFallback.js.map +1 -1
  19. package/lib/module/views/legacy/Drawer.js +2 -2
  20. package/lib/module/views/legacy/Drawer.js.map +1 -1
  21. package/lib/module/views/modern/Drawer.js +2 -2
  22. package/lib/module/views/modern/Drawer.js.map +1 -1
  23. package/lib/typescript/src/types.d.ts +13 -1
  24. package/lib/typescript/src/views/DrawerItem.d.ts +4 -0
  25. package/lib/typescript/src/views/ScreenFallback.d.ts +1 -0
  26. package/package.json +5 -5
  27. package/src/types.tsx +11 -1
  28. package/src/views/DrawerItem.tsx +6 -0
  29. package/src/views/DrawerItemList.tsx +21 -8
  30. package/src/views/DrawerView.tsx +1 -0
  31. package/src/views/ScreenFallback.tsx +1 -0
  32. package/src/views/legacy/Drawer.tsx +2 -2
  33. package/src/views/modern/Drawer.tsx +2 -2
@@ -74,6 +74,7 @@ function DrawerItem(props) {
74
74
  labelStyle,
75
75
  to,
76
76
  focused = false,
77
+ allowFontScaling,
77
78
  activeTintColor = colors.primary,
78
79
  inactiveTintColor = (0, _color.default)(colors.text).alpha(0.68).rgb().string(),
79
80
  activeBackgroundColor = (0, _color.default)(activeTintColor).alpha(0.12).rgb().string(),
@@ -122,6 +123,7 @@ function DrawerItem(props) {
122
123
  }]
123
124
  }, typeof label === 'string' ? /*#__PURE__*/React.createElement(_reactNative.Text, {
124
125
  numberOfLines: 1,
126
+ allowFontScaling: allowFontScaling,
125
127
  style: [{
126
128
  color,
127
129
  fontWeight: '500'
@@ -1 +1 @@
1
- {"version":3,"sources":["DrawerItem.tsx"],"names":["LinkPressable","children","style","onPress","onLongPress","to","accessibilityRole","rest","Platform","OS","styles","button","e","metaKey","altKey","ctrlKey","shiftKey","preventDefault","undefined","DrawerItem","props","colors","icon","label","labelStyle","focused","activeTintColor","primary","inactiveTintColor","text","alpha","rgb","string","activeBackgroundColor","inactiveBackgroundColor","pressColor","pressOpacity","borderRadius","StyleSheet","flatten","color","backgroundColor","iconNode","size","container","wrapper","selected","marginLeft","marginVertical","fontWeight","create","marginHorizontal","overflow","flexDirection","alignItems","padding","marginRight","flex","display"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AA6EA,MAAMA,aAAa,GAAG,QAchB;AAAA,MAdiB;AACrBC,IAAAA,QADqB;AAErBC,IAAAA,KAFqB;AAGrBC,IAAAA,OAHqB;AAIrBC,IAAAA,WAJqB;AAKrBC,IAAAA,EALqB;AAMrBC,IAAAA,iBANqB;AAOrB,OAAGC;AAPkB,GAcjB;;AACJ,MAAIC,sBAASC,EAAT,KAAgB,KAAhB,IAAyBJ,EAA7B,EAAiC;AAC/B;AACA;AACA,wBACE,oBAAC,YAAD,eACME,IADN;AAEE,MAAA,EAAE,EAAEF,EAFN;AAGE,MAAA,KAAK,EAAE,CAACK,MAAM,CAACC,MAAR,EAAgBT,KAAhB,CAHT;AAIE,MAAA,OAAO,EAAGU,CAAD,IAAY;AACnB,YACE,EAAEA,CAAC,CAACC,OAAF,IAAaD,CAAC,CAACE,MAAf,IAAyBF,CAAC,CAACG,OAA3B,IAAsCH,CAAC,CAACI,QAA1C,OAAuD;AACtDJ,QAAAA,CAAC,CAACD,MAAF,IAAY,IAAZ,IAAoBC,CAAC,CAACD,MAAF,KAAa,CADlC,CADF,CAEuC;AAFvC,UAGE;AACAC,UAAAA,CAAC,CAACK,cAAF;AACAd,UAAAA,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAGS,CAAH,CAAP;AACD;AACF,OAZH;AAaE,MAAA,WAAW,EAAER,WAAF,aAAEA,WAAF,cAAEA,WAAF,GAAiBc;AAb9B,QAeGjB,QAfH,CADF;AAmBD,GAtBD,MAsBO;AACL,wBACE,oBAAC,2BAAD,eACMM,IADN;AAEE,MAAA,iBAAiB,EAAED,iBAFrB;AAGE,MAAA,OAAO,EAAEH;AAHX,qBAKE,oBAAC,iBAAD;AAAM,MAAA,KAAK,EAAED;AAAb,OAAqBD,QAArB,CALF,CADF;AASD;AACF,CAhDD;AAkDA;AACA;AACA;;;AACe,SAASkB,UAAT,CAAoBC,KAApB,EAAkC;AAC/C,QAAM;AAAEC,IAAAA;AAAF,MAAa,uBAAnB;AAEA,QAAM;AACJC,IAAAA,IADI;AAEJC,IAAAA,KAFI;AAGJC,IAAAA,UAHI;AAIJnB,IAAAA,EAJI;AAKJoB,IAAAA,OAAO,GAAG,KALN;AAMJC,IAAAA,eAAe,GAAGL,MAAM,CAACM,OANrB;AAOJC,IAAAA,iBAAiB,GAAG,oBAAMP,MAAM,CAACQ,IAAb,EAAmBC,KAAnB,CAAyB,IAAzB,EAA+BC,GAA/B,GAAqCC,MAArC,EAPhB;AAQJC,IAAAA,qBAAqB,GAAG,oBAAMP,eAAN,EAAuBI,KAAvB,CAA6B,IAA7B,EAAmCC,GAAnC,GAAyCC,MAAzC,EARpB;AASJE,IAAAA,uBAAuB,GAAG,aATtB;AAUJhC,IAAAA,KAVI;AAWJC,IAAAA,OAXI;AAYJgC,IAAAA,UAZI;AAaJC,IAAAA,YAbI;AAcJ,OAAG7B;AAdC,MAeFa,KAfJ;;AAiBA,QAAM;AAAEiB,IAAAA,YAAY,GAAG;AAAjB,MAAuBC,wBAAWC,OAAX,CAAmBrC,KAAK,IAAI,EAA5B,CAA7B;;AACA,QAAMsC,KAAK,GAAGf,OAAO,GAAGC,eAAH,GAAqBE,iBAA1C;AACA,QAAMa,eAAe,GAAGhB,OAAO,GAC3BQ,qBAD2B,GAE3BC,uBAFJ;AAIA,QAAMQ,QAAQ,GAAGpB,IAAI,GAAGA,IAAI,CAAC;AAAEqB,IAAAA,IAAI,EAAE,EAAR;AAAYlB,IAAAA,OAAZ;AAAqBe,IAAAA;AAArB,GAAD,CAAP,GAAwC,IAA7D;AAEA,sBACE,oBAAC,iBAAD;AACE,IAAA,WAAW,EAAE;AADf,KAEMjC,IAFN;AAGE,IAAA,KAAK,EAAE,CAACG,MAAM,CAACkC,SAAR,EAAmB;AAAEP,MAAAA,YAAF;AAAgBI,MAAAA;AAAhB,KAAnB,EAAsDvC,KAAtD;AAHT,mBAKE,oBAAC,aAAD;AACE,IAAA,OAAO,EAAEC,OADX;AAEE,IAAA,KAAK,EAAE,CAACO,MAAM,CAACmC,OAAR,EAAiB;AAAER,MAAAA;AAAF,KAAjB,CAFT;AAGE,IAAA,iBAAiB,EAAC,QAHpB;AAIE,IAAA,kBAAkB,EAAE;AAAES,MAAAA,QAAQ,EAAErB;AAAZ,KAJtB;AAKE,IAAA,UAAU,EAAEU,UALd;AAME,IAAA,YAAY,EAAEC,YANhB;AAOE,IAAA,EAAE,EAAE/B;AAPN,kBASE,oBAAC,KAAD,CAAO,QAAP,QACGqC,QADH,eAEE,oBAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CACLhC,MAAM,CAACa,KADF,EAEL;AAAEwB,MAAAA,UAAU,EAAEL,QAAQ,GAAG,EAAH,GAAQ,CAA9B;AAAiCM,MAAAA,cAAc,EAAE;AAAjD,KAFK;AADT,KAMG,OAAOzB,KAAP,KAAiB,QAAjB,gBACC,oBAAC,iBAAD;AACE,IAAA,aAAa,EAAE,CADjB;AAEE,IAAA,KAAK,EAAE,CACL;AACEiB,MAAAA,KADF;AAEES,MAAAA,UAAU,EAAE;AAFd,KADK,EAKLzB,UALK;AAFT,KAUGD,KAVH,CADD,GAcCA,KAAK,CAAC;AAAEiB,IAAAA,KAAF;AAASf,IAAAA;AAAT,GAAD,CApBT,CAFF,CATF,CALF,CADF;AA4CD;;AAED,MAAMf,MAAM,GAAG4B,wBAAWY,MAAX,CAAkB;AAC/BN,EAAAA,SAAS,EAAE;AACTO,IAAAA,gBAAgB,EAAE,EADT;AAETH,IAAAA,cAAc,EAAE,CAFP;AAGTI,IAAAA,QAAQ,EAAE;AAHD,GADoB;AAM/BP,EAAAA,OAAO,EAAE;AACPQ,IAAAA,aAAa,EAAE,KADR;AAEPC,IAAAA,UAAU,EAAE,QAFL;AAGPC,IAAAA,OAAO,EAAE;AAHF,GANsB;AAW/BhC,EAAAA,KAAK,EAAE;AACLiC,IAAAA,WAAW,EAAE,EADR;AAELC,IAAAA,IAAI,EAAE;AAFD,GAXwB;AAe/B9C,EAAAA,MAAM,EAAE;AACN+C,IAAAA,OAAO,EAAE;AADH;AAfuB,CAAlB,CAAf","sourcesContent":["import { PlatformPressable } from '@react-navigation/elements';\nimport { Link, useTheme } from '@react-navigation/native';\nimport Color from 'color';\nimport * as React from 'react';\nimport {\n Platform,\n StyleProp,\n StyleSheet,\n Text,\n TextStyle,\n View,\n ViewStyle,\n} from 'react-native';\n\ntype Props = {\n /**\n * The label text of the item.\n */\n label:\n | string\n | ((props: { focused: boolean; color: string }) => React.ReactNode);\n /**\n * Icon to display for the `DrawerItem`.\n */\n icon?: (props: {\n focused: boolean;\n size: number;\n color: string;\n }) => React.ReactNode;\n /**\n * URL to use for the link to the tab.\n */\n to?: string;\n /**\n * Whether to highlight the drawer item as active.\n */\n focused?: boolean;\n /**\n * Function to execute on press.\n */\n onPress: () => void;\n /**\n * Color for the icon and label when the item is active.\n */\n activeTintColor?: string;\n /**\n * Color for the icon and label when the item is inactive.\n */\n inactiveTintColor?: string;\n /**\n * Background color for item when its active.\n */\n activeBackgroundColor?: string;\n /**\n * Background color for item when its inactive.\n */\n inactiveBackgroundColor?: string;\n /**\n * Color of the touchable effect on press.\n * Only supported on Android.\n *\n * @platform android\n */\n pressColor?: string;\n /**\n * Opacity of the touchable effect on press.\n * Only supported on iOS.\n *\n * @platform ios\n */\n pressOpacity?: number;\n /**\n * Style object for the label element.\n */\n labelStyle?: StyleProp<TextStyle>;\n /**\n * Style object for the wrapper element.\n */\n style?: StyleProp<ViewStyle>;\n};\n\nconst LinkPressable = ({\n children,\n style,\n onPress,\n onLongPress,\n to,\n accessibilityRole,\n ...rest\n}: Omit<React.ComponentProps<typeof PlatformPressable>, 'style'> & {\n style: StyleProp<ViewStyle>;\n} & {\n to?: string;\n children: React.ReactNode;\n onPress?: () => void;\n}) => {\n if (Platform.OS === 'web' && to) {\n // React Native Web doesn't forward `onClick` if we use `TouchableWithoutFeedback`.\n // We need to use `onClick` to be able to prevent default browser handling of links.\n return (\n <Link\n {...rest}\n to={to}\n style={[styles.button, style]}\n onPress={(e: any) => {\n if (\n !(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) && // ignore clicks with modifier keys\n (e.button == null || e.button === 0) // ignore everything but left clicks\n ) {\n e.preventDefault();\n onPress?.(e);\n }\n }}\n onLongPress={onLongPress ?? undefined}\n >\n {children}\n </Link>\n );\n } else {\n return (\n <PlatformPressable\n {...rest}\n accessibilityRole={accessibilityRole}\n onPress={onPress}\n >\n <View style={style}>{children}</View>\n </PlatformPressable>\n );\n }\n};\n\n/**\n * A component used to show an action item with an icon and a label in a navigation drawer.\n */\nexport default function DrawerItem(props: Props) {\n const { colors } = useTheme();\n\n const {\n icon,\n label,\n labelStyle,\n to,\n focused = false,\n activeTintColor = colors.primary,\n inactiveTintColor = Color(colors.text).alpha(0.68).rgb().string(),\n activeBackgroundColor = Color(activeTintColor).alpha(0.12).rgb().string(),\n inactiveBackgroundColor = 'transparent',\n style,\n onPress,\n pressColor,\n pressOpacity,\n ...rest\n } = props;\n\n const { borderRadius = 4 } = StyleSheet.flatten(style || {});\n const color = focused ? activeTintColor : inactiveTintColor;\n const backgroundColor = focused\n ? activeBackgroundColor\n : inactiveBackgroundColor;\n\n const iconNode = icon ? icon({ size: 24, focused, color }) : null;\n\n return (\n <View\n collapsable={false}\n {...rest}\n style={[styles.container, { borderRadius, backgroundColor }, style]}\n >\n <LinkPressable\n onPress={onPress}\n style={[styles.wrapper, { borderRadius }]}\n accessibilityRole=\"button\"\n accessibilityState={{ selected: focused }}\n pressColor={pressColor}\n pressOpacity={pressOpacity}\n to={to}\n >\n <React.Fragment>\n {iconNode}\n <View\n style={[\n styles.label,\n { marginLeft: iconNode ? 32 : 0, marginVertical: 5 },\n ]}\n >\n {typeof label === 'string' ? (\n <Text\n numberOfLines={1}\n style={[\n {\n color,\n fontWeight: '500',\n },\n labelStyle,\n ]}\n >\n {label}\n </Text>\n ) : (\n label({ color, focused })\n )}\n </View>\n </React.Fragment>\n </LinkPressable>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n marginHorizontal: 10,\n marginVertical: 4,\n overflow: 'hidden',\n },\n wrapper: {\n flexDirection: 'row',\n alignItems: 'center',\n padding: 8,\n },\n label: {\n marginRight: 32,\n flex: 1,\n },\n button: {\n display: 'flex',\n },\n});\n"]}
1
+ {"version":3,"sources":["DrawerItem.tsx"],"names":["LinkPressable","children","style","onPress","onLongPress","to","accessibilityRole","rest","Platform","OS","styles","button","e","metaKey","altKey","ctrlKey","shiftKey","preventDefault","undefined","DrawerItem","props","colors","icon","label","labelStyle","focused","allowFontScaling","activeTintColor","primary","inactiveTintColor","text","alpha","rgb","string","activeBackgroundColor","inactiveBackgroundColor","pressColor","pressOpacity","borderRadius","StyleSheet","flatten","color","backgroundColor","iconNode","size","container","wrapper","selected","marginLeft","marginVertical","fontWeight","create","marginHorizontal","overflow","flexDirection","alignItems","padding","marginRight","flex","display"],"mappings":"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","sourcesContent":["import { PlatformPressable } from '@react-navigation/elements';\nimport { Link, useTheme } from '@react-navigation/native';\nimport Color from 'color';\nimport * as React from 'react';\nimport {\n Platform,\n StyleProp,\n StyleSheet,\n Text,\n TextStyle,\n View,\n ViewStyle,\n} from 'react-native';\n\ntype Props = {\n /**\n * The label text of the item.\n */\n label:\n | string\n | ((props: { focused: boolean; color: string }) => React.ReactNode);\n /**\n * Icon to display for the `DrawerItem`.\n */\n icon?: (props: {\n focused: boolean;\n size: number;\n color: string;\n }) => React.ReactNode;\n /**\n * URL to use for the link to the tab.\n */\n to?: string;\n /**\n * Whether to highlight the drawer item as active.\n */\n focused?: boolean;\n /**\n * Function to execute on press.\n */\n onPress: () => void;\n /**\n * Color for the icon and label when the item is active.\n */\n activeTintColor?: string;\n /**\n * Color for the icon and label when the item is inactive.\n */\n inactiveTintColor?: string;\n /**\n * Background color for item when its active.\n */\n activeBackgroundColor?: string;\n /**\n * Background color for item when its inactive.\n */\n inactiveBackgroundColor?: string;\n /**\n * Color of the touchable effect on press.\n * Only supported on Android.\n *\n * @platform android\n */\n pressColor?: string;\n /**\n * Opacity of the touchable effect on press.\n * Only supported on iOS.\n *\n * @platform ios\n */\n pressOpacity?: number;\n /**\n * Style object for the label element.\n */\n labelStyle?: StyleProp<TextStyle>;\n /**\n * Style object for the wrapper element.\n */\n style?: StyleProp<ViewStyle>;\n /**\n * Whether label font should scale to respect Text Size accessibility settings.\n */\n allowFontScaling?: boolean;\n};\n\nconst LinkPressable = ({\n children,\n style,\n onPress,\n onLongPress,\n to,\n accessibilityRole,\n ...rest\n}: Omit<React.ComponentProps<typeof PlatformPressable>, 'style'> & {\n style: StyleProp<ViewStyle>;\n} & {\n to?: string;\n children: React.ReactNode;\n onPress?: () => void;\n}) => {\n if (Platform.OS === 'web' && to) {\n // React Native Web doesn't forward `onClick` if we use `TouchableWithoutFeedback`.\n // We need to use `onClick` to be able to prevent default browser handling of links.\n return (\n <Link\n {...rest}\n to={to}\n style={[styles.button, style]}\n onPress={(e: any) => {\n if (\n !(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) && // ignore clicks with modifier keys\n (e.button == null || e.button === 0) // ignore everything but left clicks\n ) {\n e.preventDefault();\n onPress?.(e);\n }\n }}\n onLongPress={onLongPress ?? undefined}\n >\n {children}\n </Link>\n );\n } else {\n return (\n <PlatformPressable\n {...rest}\n accessibilityRole={accessibilityRole}\n onPress={onPress}\n >\n <View style={style}>{children}</View>\n </PlatformPressable>\n );\n }\n};\n\n/**\n * A component used to show an action item with an icon and a label in a navigation drawer.\n */\nexport default function DrawerItem(props: Props) {\n const { colors } = useTheme();\n\n const {\n icon,\n label,\n labelStyle,\n to,\n focused = false,\n allowFontScaling,\n activeTintColor = colors.primary,\n inactiveTintColor = Color(colors.text).alpha(0.68).rgb().string(),\n activeBackgroundColor = Color(activeTintColor).alpha(0.12).rgb().string(),\n inactiveBackgroundColor = 'transparent',\n style,\n onPress,\n pressColor,\n pressOpacity,\n ...rest\n } = props;\n\n const { borderRadius = 4 } = StyleSheet.flatten(style || {});\n const color = focused ? activeTintColor : inactiveTintColor;\n const backgroundColor = focused\n ? activeBackgroundColor\n : inactiveBackgroundColor;\n\n const iconNode = icon ? icon({ size: 24, focused, color }) : null;\n\n return (\n <View\n collapsable={false}\n {...rest}\n style={[styles.container, { borderRadius, backgroundColor }, style]}\n >\n <LinkPressable\n onPress={onPress}\n style={[styles.wrapper, { borderRadius }]}\n accessibilityRole=\"button\"\n accessibilityState={{ selected: focused }}\n pressColor={pressColor}\n pressOpacity={pressOpacity}\n to={to}\n >\n <React.Fragment>\n {iconNode}\n <View\n style={[\n styles.label,\n { marginLeft: iconNode ? 32 : 0, marginVertical: 5 },\n ]}\n >\n {typeof label === 'string' ? (\n <Text\n numberOfLines={1}\n allowFontScaling={allowFontScaling}\n style={[\n {\n color,\n fontWeight: '500',\n },\n labelStyle,\n ]}\n >\n {label}\n </Text>\n ) : (\n label({ color, focused })\n )}\n </View>\n </React.Fragment>\n </LinkPressable>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n marginHorizontal: 10,\n marginVertical: 4,\n overflow: 'hidden',\n },\n wrapper: {\n flexDirection: 'row',\n alignItems: 'center',\n padding: 8,\n },\n label: {\n marginRight: 32,\n flex: 1,\n },\n button: {\n display: 'flex',\n },\n});\n"]}
@@ -38,12 +38,31 @@ function DrawerItemList(_ref) {
38
38
  } = focusedOptions;
39
39
  return state.routes.map((route, i) => {
40
40
  const focused = i === state.index;
41
+
42
+ const onPress = () => {
43
+ const event = navigation.emit({
44
+ type: 'drawerItemPress',
45
+ target: route.key,
46
+ canPreventDefault: true
47
+ });
48
+
49
+ if (!event.defaultPrevented) {
50
+ navigation.dispatch({ ...(focused ? _native.DrawerActions.closeDrawer() : _native.CommonActions.navigate({
51
+ name: route.name,
52
+ merge: true
53
+ })),
54
+ target: state.key
55
+ });
56
+ }
57
+ };
58
+
41
59
  const {
42
60
  title,
43
61
  drawerLabel,
44
62
  drawerIcon,
45
63
  drawerLabelStyle,
46
- drawerItemStyle
64
+ drawerItemStyle,
65
+ drawerAllowFontScaling
47
66
  } = descriptors[route.key].options;
48
67
  return /*#__PURE__*/React.createElement(_DrawerItem.default, {
49
68
  key: route.key,
@@ -54,17 +73,11 @@ function DrawerItemList(_ref) {
54
73
  inactiveTintColor: drawerInactiveTintColor,
55
74
  activeBackgroundColor: drawerActiveBackgroundColor,
56
75
  inactiveBackgroundColor: drawerInactiveBackgroundColor,
76
+ allowFontScaling: drawerAllowFontScaling,
57
77
  labelStyle: drawerLabelStyle,
58
78
  style: drawerItemStyle,
59
79
  to: buildLink(route.name, route.params),
60
- onPress: () => {
61
- navigation.dispatch({ ...(focused ? _native.DrawerActions.closeDrawer() : _native.CommonActions.navigate({
62
- name: route.name,
63
- merge: true
64
- })),
65
- target: state.key
66
- });
67
- }
80
+ onPress: onPress
68
81
  });
69
82
  });
70
83
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["DrawerItemList.tsx"],"names":["DrawerItemList","state","navigation","descriptors","buildLink","focusedRoute","routes","index","focusedDescriptor","key","focusedOptions","options","drawerActiveTintColor","drawerInactiveTintColor","drawerActiveBackgroundColor","drawerInactiveBackgroundColor","map","route","i","focused","title","drawerLabel","drawerIcon","drawerLabelStyle","drawerItemStyle","undefined","name","params","dispatch","DrawerActions","closeDrawer","CommonActions","navigate","merge","target"],"mappings":";;;;;;;AAAA;;AAOA;;AAGA;;;;;;;;AAQA;AACA;AACA;AACe,SAASA,cAAT,OAIL;AAAA,MAJ6B;AACrCC,IAAAA,KADqC;AAErCC,IAAAA,UAFqC;AAGrCC,IAAAA;AAHqC,GAI7B;AACR,QAAMC,SAAS,GAAG,6BAAlB;AAEA,QAAMC,YAAY,GAAGJ,KAAK,CAACK,MAAN,CAAaL,KAAK,CAACM,KAAnB,CAArB;AACA,QAAMC,iBAAiB,GAAGL,WAAW,CAACE,YAAY,CAACI,GAAd,CAArC;AACA,QAAMC,cAAc,GAAGF,iBAAiB,CAACG,OAAzC;AAEA,QAAM;AACJC,IAAAA,qBADI;AAEJC,IAAAA,uBAFI;AAGJC,IAAAA,2BAHI;AAIJC,IAAAA;AAJI,MAKFL,cALJ;AAOA,SAAOT,KAAK,CAACK,MAAN,CAAaU,GAAb,CAAiB,CAACC,KAAD,EAAQC,CAAR,KAAc;AACpC,UAAMC,OAAO,GAAGD,CAAC,KAAKjB,KAAK,CAACM,KAA5B;AACA,UAAM;AACJa,MAAAA,KADI;AAEJC,MAAAA,WAFI;AAGJC,MAAAA,UAHI;AAIJC,MAAAA,gBAJI;AAKJC,MAAAA;AALI,QAMFrB,WAAW,CAACc,KAAK,CAACR,GAAP,CAAX,CAAuBE,OAN3B;AAQA,wBACE,oBAAC,mBAAD;AACE,MAAA,GAAG,EAAEM,KAAK,CAACR,GADb;AAEE,MAAA,KAAK,EACHY,WAAW,KAAKI,SAAhB,GACIJ,WADJ,GAEID,KAAK,KAAKK,SAAV,GACAL,KADA,GAEAH,KAAK,CAACS,IAPd;AASE,MAAA,IAAI,EAAEJ,UATR;AAUE,MAAA,OAAO,EAAEH,OAVX;AAWE,MAAA,eAAe,EAAEP,qBAXnB;AAYE,MAAA,iBAAiB,EAAEC,uBAZrB;AAaE,MAAA,qBAAqB,EAAEC,2BAbzB;AAcE,MAAA,uBAAuB,EAAEC,6BAd3B;AAeE,MAAA,UAAU,EAAEQ,gBAfd;AAgBE,MAAA,KAAK,EAAEC,eAhBT;AAiBE,MAAA,EAAE,EAAEpB,SAAS,CAACa,KAAK,CAACS,IAAP,EAAaT,KAAK,CAACU,MAAnB,CAjBf;AAkBE,MAAA,OAAO,EAAE,MAAM;AACbzB,QAAAA,UAAU,CAAC0B,QAAX,CAAoB,EAClB,IAAIT,OAAO,GACPU,sBAAcC,WAAd,EADO,GAEPC,sBAAcC,QAAd,CAAuB;AAAEN,YAAAA,IAAI,EAAET,KAAK,CAACS,IAAd;AAAoBO,YAAAA,KAAK,EAAE;AAA3B,WAAvB,CAFJ,CADkB;AAIlBC,UAAAA,MAAM,EAAEjC,KAAK,CAACQ;AAJI,SAApB;AAMD;AAzBH,MADF;AA6BD,GAvCM,CAAP;AAwCD","sourcesContent":["import {\n CommonActions,\n DrawerActions,\n DrawerNavigationState,\n ParamListBase,\n useLinkBuilder,\n} from '@react-navigation/native';\nimport * as React from 'react';\n\nimport type { DrawerDescriptorMap, DrawerNavigationHelpers } from '../types';\nimport DrawerItem from './DrawerItem';\n\ntype Props = {\n state: DrawerNavigationState<ParamListBase>;\n navigation: DrawerNavigationHelpers;\n descriptors: DrawerDescriptorMap;\n};\n\n/**\n * Component that renders the navigation list in the drawer.\n */\nexport default function DrawerItemList({\n state,\n navigation,\n descriptors,\n}: Props) {\n const buildLink = useLinkBuilder();\n\n const focusedRoute = state.routes[state.index];\n const focusedDescriptor = descriptors[focusedRoute.key];\n const focusedOptions = focusedDescriptor.options;\n\n const {\n drawerActiveTintColor,\n drawerInactiveTintColor,\n drawerActiveBackgroundColor,\n drawerInactiveBackgroundColor,\n } = focusedOptions;\n\n return state.routes.map((route, i) => {\n const focused = i === state.index;\n const {\n title,\n drawerLabel,\n drawerIcon,\n drawerLabelStyle,\n drawerItemStyle,\n } = descriptors[route.key].options;\n\n return (\n <DrawerItem\n key={route.key}\n label={\n drawerLabel !== undefined\n ? drawerLabel\n : title !== undefined\n ? title\n : route.name\n }\n icon={drawerIcon}\n focused={focused}\n activeTintColor={drawerActiveTintColor}\n inactiveTintColor={drawerInactiveTintColor}\n activeBackgroundColor={drawerActiveBackgroundColor}\n inactiveBackgroundColor={drawerInactiveBackgroundColor}\n labelStyle={drawerLabelStyle}\n style={drawerItemStyle}\n to={buildLink(route.name, route.params)}\n onPress={() => {\n navigation.dispatch({\n ...(focused\n ? DrawerActions.closeDrawer()\n : CommonActions.navigate({ name: route.name, merge: true })),\n target: state.key,\n });\n }}\n />\n );\n }) as React.ReactNode as React.ReactElement;\n}\n"]}
1
+ {"version":3,"sources":["DrawerItemList.tsx"],"names":["DrawerItemList","state","navigation","descriptors","buildLink","focusedRoute","routes","index","focusedDescriptor","key","focusedOptions","options","drawerActiveTintColor","drawerInactiveTintColor","drawerActiveBackgroundColor","drawerInactiveBackgroundColor","map","route","i","focused","onPress","event","emit","type","target","canPreventDefault","defaultPrevented","dispatch","DrawerActions","closeDrawer","CommonActions","navigate","name","merge","title","drawerLabel","drawerIcon","drawerLabelStyle","drawerItemStyle","drawerAllowFontScaling","undefined","params"],"mappings":";;;;;;;AAAA;;AAOA;;AAGA;;;;;;;;AAQA;AACA;AACA;AACe,SAASA,cAAT,OAIL;AAAA,MAJ6B;AACrCC,IAAAA,KADqC;AAErCC,IAAAA,UAFqC;AAGrCC,IAAAA;AAHqC,GAI7B;AACR,QAAMC,SAAS,GAAG,6BAAlB;AAEA,QAAMC,YAAY,GAAGJ,KAAK,CAACK,MAAN,CAAaL,KAAK,CAACM,KAAnB,CAArB;AACA,QAAMC,iBAAiB,GAAGL,WAAW,CAACE,YAAY,CAACI,GAAd,CAArC;AACA,QAAMC,cAAc,GAAGF,iBAAiB,CAACG,OAAzC;AAEA,QAAM;AACJC,IAAAA,qBADI;AAEJC,IAAAA,uBAFI;AAGJC,IAAAA,2BAHI;AAIJC,IAAAA;AAJI,MAKFL,cALJ;AAOA,SAAOT,KAAK,CAACK,MAAN,CAAaU,GAAb,CAAiB,CAACC,KAAD,EAAQC,CAAR,KAAc;AACpC,UAAMC,OAAO,GAAGD,CAAC,KAAKjB,KAAK,CAACM,KAA5B;;AAEA,UAAMa,OAAO,GAAG,MAAM;AACpB,YAAMC,KAAK,GAAGnB,UAAU,CAACoB,IAAX,CAAgB;AAC5BC,QAAAA,IAAI,EAAE,iBADsB;AAE5BC,QAAAA,MAAM,EAAEP,KAAK,CAACR,GAFc;AAG5BgB,QAAAA,iBAAiB,EAAE;AAHS,OAAhB,CAAd;;AAMA,UAAI,CAACJ,KAAK,CAACK,gBAAX,EAA6B;AAC3BxB,QAAAA,UAAU,CAACyB,QAAX,CAAoB,EAClB,IAAIR,OAAO,GACPS,sBAAcC,WAAd,EADO,GAEPC,sBAAcC,QAAd,CAAuB;AAAEC,YAAAA,IAAI,EAAEf,KAAK,CAACe,IAAd;AAAoBC,YAAAA,KAAK,EAAE;AAA3B,WAAvB,CAFJ,CADkB;AAIlBT,UAAAA,MAAM,EAAEvB,KAAK,CAACQ;AAJI,SAApB;AAMD;AACF,KAfD;;AAiBA,UAAM;AACJyB,MAAAA,KADI;AAEJC,MAAAA,WAFI;AAGJC,MAAAA,UAHI;AAIJC,MAAAA,gBAJI;AAKJC,MAAAA,eALI;AAMJC,MAAAA;AANI,QAOFpC,WAAW,CAACc,KAAK,CAACR,GAAP,CAAX,CAAuBE,OAP3B;AASA,wBACE,oBAAC,mBAAD;AACE,MAAA,GAAG,EAAEM,KAAK,CAACR,GADb;AAEE,MAAA,KAAK,EACH0B,WAAW,KAAKK,SAAhB,GACIL,WADJ,GAEID,KAAK,KAAKM,SAAV,GACAN,KADA,GAEAjB,KAAK,CAACe,IAPd;AASE,MAAA,IAAI,EAAEI,UATR;AAUE,MAAA,OAAO,EAAEjB,OAVX;AAWE,MAAA,eAAe,EAAEP,qBAXnB;AAYE,MAAA,iBAAiB,EAAEC,uBAZrB;AAaE,MAAA,qBAAqB,EAAEC,2BAbzB;AAcE,MAAA,uBAAuB,EAAEC,6BAd3B;AAeE,MAAA,gBAAgB,EAAEwB,sBAfpB;AAgBE,MAAA,UAAU,EAAEF,gBAhBd;AAiBE,MAAA,KAAK,EAAEC,eAjBT;AAkBE,MAAA,EAAE,EAAElC,SAAS,CAACa,KAAK,CAACe,IAAP,EAAaf,KAAK,CAACwB,MAAnB,CAlBf;AAmBE,MAAA,OAAO,EAAErB;AAnBX,MADF;AAuBD,GApDM,CAAP;AAqDD","sourcesContent":["import {\n CommonActions,\n DrawerActions,\n DrawerNavigationState,\n ParamListBase,\n useLinkBuilder,\n} from '@react-navigation/native';\nimport * as React from 'react';\n\nimport type { DrawerDescriptorMap, DrawerNavigationHelpers } from '../types';\nimport DrawerItem from './DrawerItem';\n\ntype Props = {\n state: DrawerNavigationState<ParamListBase>;\n navigation: DrawerNavigationHelpers;\n descriptors: DrawerDescriptorMap;\n};\n\n/**\n * Component that renders the navigation list in the drawer.\n */\nexport default function DrawerItemList({\n state,\n navigation,\n descriptors,\n}: Props) {\n const buildLink = useLinkBuilder();\n\n const focusedRoute = state.routes[state.index];\n const focusedDescriptor = descriptors[focusedRoute.key];\n const focusedOptions = focusedDescriptor.options;\n\n const {\n drawerActiveTintColor,\n drawerInactiveTintColor,\n drawerActiveBackgroundColor,\n drawerInactiveBackgroundColor,\n } = focusedOptions;\n\n return state.routes.map((route, i) => {\n const focused = i === state.index;\n\n const onPress = () => {\n const event = navigation.emit({\n type: 'drawerItemPress',\n target: route.key,\n canPreventDefault: true,\n });\n\n if (!event.defaultPrevented) {\n navigation.dispatch({\n ...(focused\n ? DrawerActions.closeDrawer()\n : CommonActions.navigate({ name: route.name, merge: true })),\n target: state.key,\n });\n }\n };\n\n const {\n title,\n drawerLabel,\n drawerIcon,\n drawerLabelStyle,\n drawerItemStyle,\n drawerAllowFontScaling,\n } = descriptors[route.key].options;\n\n return (\n <DrawerItem\n key={route.key}\n label={\n drawerLabel !== undefined\n ? drawerLabel\n : title !== undefined\n ? title\n : route.name\n }\n icon={drawerIcon}\n focused={focused}\n activeTintColor={drawerActiveTintColor}\n inactiveTintColor={drawerInactiveTintColor}\n activeBackgroundColor={drawerActiveBackgroundColor}\n inactiveBackgroundColor={drawerInactiveBackgroundColor}\n allowFontScaling={drawerAllowFontScaling}\n labelStyle={drawerLabelStyle}\n style={drawerItemStyle}\n to={buildLink(route.name, route.params)}\n onPress={onPress}\n />\n );\n }) as React.ReactNode as React.ReactElement;\n}\n"]}
@@ -177,6 +177,7 @@ function DrawerViewBase(_ref2) {
177
177
  const renderSceneContent = () => {
178
178
  return /*#__PURE__*/React.createElement(_ScreenFallback.MaybeScreenContainer, {
179
179
  enabled: detachInactiveScreens,
180
+ hasTwoStates: true,
180
181
  style: styles.content
181
182
  }, state.routes.map((route, index) => {
182
183
  const descriptor = descriptors[route.key];
@@ -1 +1 @@
1
- {"version":3,"sources":["DrawerView.tsx"],"names":["getDefaultDrawerWidth","height","width","smallerAxisSize","Math","min","isLandscape","isTablet","appBarHeight","Platform","OS","maxWidth","GestureHandlerWrapper","GestureHandlerRootView","View","DrawerViewBase","state","navigation","descriptors","defaultStatus","drawerContent","props","detachInactiveScreens","useLegacyImplementation","global","nativeCallSyncHook","Animated","isConfigured","Drawer","require","default","focusedRouteKey","routes","index","key","drawerHideStatusBarOnOpen","drawerPosition","I18nManager","isRTL","drawerStatusBarAnimation","drawerStyle","drawerType","select","ios","gestureHandlerProps","keyboardDismissMode","overlayColor","swipeEdgeWidth","swipeEnabled","swipeMinDistance","options","loaded","setLoaded","React","useState","includes","dimensions","colors","drawerStatus","handleDrawerOpen","useCallback","dispatch","DrawerActions","openDrawer","target","handleDrawerClose","closeDrawer","useEffect","handleHardwareBack","isFocused","handleEscape","e","subscription","BackHandler","addEventListener","document","body","remove","removeEventListener","renderDrawerContent","renderSceneContent","styles","content","map","route","descriptor","lazy","unmountOnBlur","header","layout","name","headerLeft","sceneContainerStyle","StyleSheet","absoluteFill","zIndex","headerShown","headerTransparent","headerStatusBarHeight","render","backgroundColor","card","borderRightColor","border","borderRightWidth","hairlineWidth","borderLeftColor","borderLeftWidth","DrawerView","rest","create","flex"],"mappings":"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","sourcesContent":["import {\n getHeaderTitle,\n Header,\n SafeAreaProviderCompat,\n Screen,\n} from '@react-navigation/elements';\nimport {\n DrawerActions,\n DrawerNavigationState,\n DrawerStatus,\n ParamListBase,\n useTheme,\n} from '@react-navigation/native';\nimport * as React from 'react';\nimport {\n BackHandler,\n I18nManager,\n Platform,\n StyleSheet,\n View,\n} from 'react-native';\nimport Animated from 'react-native-reanimated';\nimport { useSafeAreaFrame } from 'react-native-safe-area-context';\n\nimport type {\n DrawerContentComponentProps,\n DrawerDescriptorMap,\n DrawerHeaderProps,\n DrawerNavigationConfig,\n DrawerNavigationHelpers,\n DrawerNavigationProp,\n DrawerProps,\n} from '../types';\nimport DrawerPositionContext from '../utils/DrawerPositionContext';\nimport DrawerStatusContext from '../utils/DrawerStatusContext';\nimport getDrawerStatusFromState from '../utils/getDrawerStatusFromState';\nimport DrawerContent from './DrawerContent';\nimport DrawerToggleButton from './DrawerToggleButton';\nimport { GestureHandlerRootView } from './GestureHandler';\nimport { MaybeScreen, MaybeScreenContainer } from './ScreenFallback';\n\ntype Props = DrawerNavigationConfig & {\n defaultStatus: DrawerStatus;\n state: DrawerNavigationState<ParamListBase>;\n navigation: DrawerNavigationHelpers;\n descriptors: DrawerDescriptorMap;\n};\n\nconst getDefaultDrawerWidth = ({\n height,\n width,\n}: {\n height: number;\n width: number;\n}) => {\n /*\n * Default drawer width is screen width - header height\n * with a max width of 280 on mobile and 320 on tablet\n * https://material.io/components/navigation-drawer\n */\n const smallerAxisSize = Math.min(height, width);\n const isLandscape = width > height;\n const isTablet = smallerAxisSize >= 600;\n const appBarHeight = Platform.OS === 'ios' ? (isLandscape ? 32 : 44) : 56;\n const maxWidth = isTablet ? 320 : 280;\n\n return Math.min(smallerAxisSize - appBarHeight, maxWidth);\n};\n\nconst GestureHandlerWrapper = GestureHandlerRootView ?? View;\n\nfunction DrawerViewBase({\n state,\n navigation,\n descriptors,\n defaultStatus,\n drawerContent = (props: DrawerContentComponentProps) => (\n <DrawerContent {...props} />\n ),\n detachInactiveScreens = Platform.OS === 'web' ||\n Platform.OS === 'android' ||\n Platform.OS === 'ios',\n // Running in chrome debugger\n // @ts-expect-error\n useLegacyImplementation = !global.nativeCallSyncHook ||\n // Reanimated 2 is not configured\n // @ts-expect-error: the type definitions are incomplete\n !Animated.isConfigured?.(),\n}: Props) {\n const Drawer: React.ComponentType<DrawerProps> = useLegacyImplementation\n ? require('./legacy/Drawer').default\n : require('./modern/Drawer').default;\n\n const focusedRouteKey = state.routes[state.index].key;\n const {\n drawerHideStatusBarOnOpen = false,\n drawerPosition = I18nManager.isRTL ? 'right' : 'left',\n drawerStatusBarAnimation = 'slide',\n drawerStyle,\n drawerType = Platform.select({ ios: 'slide', default: 'front' }),\n gestureHandlerProps,\n keyboardDismissMode = 'on-drag',\n overlayColor = 'rgba(0, 0, 0, 0.5)',\n swipeEdgeWidth = 32,\n swipeEnabled = Platform.OS !== 'web' &&\n Platform.OS !== 'windows' &&\n Platform.OS !== 'macos',\n swipeMinDistance = 60,\n } = descriptors[focusedRouteKey].options;\n\n const [loaded, setLoaded] = React.useState([focusedRouteKey]);\n\n if (!loaded.includes(focusedRouteKey)) {\n setLoaded([...loaded, focusedRouteKey]);\n }\n\n const dimensions = useSafeAreaFrame();\n\n const { colors } = useTheme();\n\n const drawerStatus = getDrawerStatusFromState(state);\n\n const handleDrawerOpen = React.useCallback(() => {\n navigation.dispatch({\n ...DrawerActions.openDrawer(),\n target: state.key,\n });\n }, [navigation, state.key]);\n\n const handleDrawerClose = React.useCallback(() => {\n navigation.dispatch({\n ...DrawerActions.closeDrawer(),\n target: state.key,\n });\n }, [navigation, state.key]);\n\n React.useEffect(() => {\n if (drawerStatus === defaultStatus || drawerType === 'permanent') {\n return;\n }\n\n const handleHardwareBack = () => {\n // We shouldn't handle the back button if the parent screen isn't focused\n // This will avoid the drawer overriding event listeners from a focused screen\n if (!navigation.isFocused()) {\n return false;\n }\n\n if (defaultStatus === 'open') {\n handleDrawerOpen();\n } else {\n handleDrawerClose();\n }\n\n return true;\n };\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n handleHardwareBack();\n }\n };\n\n // We only add the listeners when drawer opens\n // This way we can make sure that the listener is added as late as possible\n // This will make sure that our handler will run first when back button is pressed\n const subscription = BackHandler.addEventListener(\n 'hardwareBackPress',\n handleHardwareBack\n );\n\n if (Platform.OS === 'web') {\n document?.body?.addEventListener?.('keyup', handleEscape);\n }\n\n return () => {\n subscription.remove();\n\n if (Platform.OS === 'web') {\n document?.body?.removeEventListener?.('keyup', handleEscape);\n }\n };\n }, [\n defaultStatus,\n drawerStatus,\n drawerType,\n handleDrawerClose,\n handleDrawerOpen,\n navigation,\n ]);\n\n const renderDrawerContent = () => {\n return (\n <DrawerPositionContext.Provider value={drawerPosition}>\n {drawerContent({\n state: state,\n navigation: navigation,\n descriptors: descriptors,\n })}\n </DrawerPositionContext.Provider>\n );\n };\n\n const renderSceneContent = () => {\n return (\n <MaybeScreenContainer\n enabled={detachInactiveScreens}\n style={styles.content}\n >\n {state.routes.map((route, index) => {\n const descriptor = descriptors[route.key];\n const { lazy = true, unmountOnBlur } = descriptor.options;\n const isFocused = state.index === index;\n\n if (unmountOnBlur && !isFocused) {\n return null;\n }\n\n if (lazy && !loaded.includes(route.key) && !isFocused) {\n // Don't render a lazy screen if we've never navigated to it\n return null;\n }\n\n const {\n header = ({ layout, options }: DrawerHeaderProps) => (\n <Header\n {...options}\n layout={layout}\n title={getHeaderTitle(options, route.name)}\n headerLeft={\n options.headerLeft ??\n ((props) => <DrawerToggleButton {...props} />)\n }\n />\n ),\n sceneContainerStyle,\n } = descriptor.options;\n\n return (\n <MaybeScreen\n key={route.key}\n style={[StyleSheet.absoluteFill, { zIndex: isFocused ? 0 : -1 }]}\n visible={isFocused}\n enabled={detachInactiveScreens}\n >\n <Screen\n focused={isFocused}\n route={descriptor.route}\n navigation={descriptor.navigation}\n headerShown={descriptor.options.headerShown}\n headerTransparent={descriptor.options.headerTransparent}\n headerStatusBarHeight={descriptor.options.headerStatusBarHeight}\n header={header({\n layout: dimensions,\n route: descriptor.route,\n navigation:\n descriptor.navigation as DrawerNavigationProp<ParamListBase>,\n options: descriptor.options,\n })}\n style={sceneContainerStyle}\n >\n {descriptor.render()}\n </Screen>\n </MaybeScreen>\n );\n })}\n </MaybeScreenContainer>\n );\n };\n\n return (\n <DrawerStatusContext.Provider value={drawerStatus}>\n <Drawer\n open={drawerStatus !== 'closed'}\n onOpen={handleDrawerOpen}\n onClose={handleDrawerClose}\n gestureHandlerProps={gestureHandlerProps}\n swipeEnabled={swipeEnabled}\n swipeEdgeWidth={swipeEdgeWidth}\n swipeVelocityThreshold={500}\n swipeDistanceThreshold={swipeMinDistance}\n hideStatusBarOnOpen={drawerHideStatusBarOnOpen}\n statusBarAnimation={drawerStatusBarAnimation}\n keyboardDismissMode={keyboardDismissMode}\n drawerType={drawerType}\n drawerPosition={drawerPosition}\n drawerStyle={[\n {\n width: getDefaultDrawerWidth(dimensions),\n backgroundColor: colors.card,\n },\n drawerType === 'permanent' &&\n (drawerPosition === 'left'\n ? {\n borderRightColor: colors.border,\n borderRightWidth: StyleSheet.hairlineWidth,\n }\n : {\n borderLeftColor: colors.border,\n borderLeftWidth: StyleSheet.hairlineWidth,\n }),\n drawerStyle,\n ]}\n overlayStyle={{ backgroundColor: overlayColor }}\n renderDrawerContent={renderDrawerContent}\n renderSceneContent={renderSceneContent}\n dimensions={dimensions}\n />\n </DrawerStatusContext.Provider>\n );\n}\n\nexport default function DrawerView({ navigation, ...rest }: Props) {\n return (\n <SafeAreaProviderCompat>\n <GestureHandlerWrapper style={styles.content}>\n <DrawerViewBase navigation={navigation} {...rest} />\n </GestureHandlerWrapper>\n </SafeAreaProviderCompat>\n );\n}\n\nconst styles = StyleSheet.create({\n content: {\n flex: 1,\n },\n});\n"]}
1
+ {"version":3,"sources":["DrawerView.tsx"],"names":["getDefaultDrawerWidth","height","width","smallerAxisSize","Math","min","isLandscape","isTablet","appBarHeight","Platform","OS","maxWidth","GestureHandlerWrapper","GestureHandlerRootView","View","DrawerViewBase","state","navigation","descriptors","defaultStatus","drawerContent","props","detachInactiveScreens","useLegacyImplementation","global","nativeCallSyncHook","Animated","isConfigured","Drawer","require","default","focusedRouteKey","routes","index","key","drawerHideStatusBarOnOpen","drawerPosition","I18nManager","isRTL","drawerStatusBarAnimation","drawerStyle","drawerType","select","ios","gestureHandlerProps","keyboardDismissMode","overlayColor","swipeEdgeWidth","swipeEnabled","swipeMinDistance","options","loaded","setLoaded","React","useState","includes","dimensions","colors","drawerStatus","handleDrawerOpen","useCallback","dispatch","DrawerActions","openDrawer","target","handleDrawerClose","closeDrawer","useEffect","handleHardwareBack","isFocused","handleEscape","e","subscription","BackHandler","addEventListener","document","body","remove","removeEventListener","renderDrawerContent","renderSceneContent","styles","content","map","route","descriptor","lazy","unmountOnBlur","header","layout","name","headerLeft","sceneContainerStyle","StyleSheet","absoluteFill","zIndex","headerShown","headerTransparent","headerStatusBarHeight","render","backgroundColor","card","borderRightColor","border","borderRightWidth","hairlineWidth","borderLeftColor","borderLeftWidth","DrawerView","rest","create","flex"],"mappings":"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","sourcesContent":["import {\n getHeaderTitle,\n Header,\n SafeAreaProviderCompat,\n Screen,\n} from '@react-navigation/elements';\nimport {\n DrawerActions,\n DrawerNavigationState,\n DrawerStatus,\n ParamListBase,\n useTheme,\n} from '@react-navigation/native';\nimport * as React from 'react';\nimport {\n BackHandler,\n I18nManager,\n Platform,\n StyleSheet,\n View,\n} from 'react-native';\nimport Animated from 'react-native-reanimated';\nimport { useSafeAreaFrame } from 'react-native-safe-area-context';\n\nimport type {\n DrawerContentComponentProps,\n DrawerDescriptorMap,\n DrawerHeaderProps,\n DrawerNavigationConfig,\n DrawerNavigationHelpers,\n DrawerNavigationProp,\n DrawerProps,\n} from '../types';\nimport DrawerPositionContext from '../utils/DrawerPositionContext';\nimport DrawerStatusContext from '../utils/DrawerStatusContext';\nimport getDrawerStatusFromState from '../utils/getDrawerStatusFromState';\nimport DrawerContent from './DrawerContent';\nimport DrawerToggleButton from './DrawerToggleButton';\nimport { GestureHandlerRootView } from './GestureHandler';\nimport { MaybeScreen, MaybeScreenContainer } from './ScreenFallback';\n\ntype Props = DrawerNavigationConfig & {\n defaultStatus: DrawerStatus;\n state: DrawerNavigationState<ParamListBase>;\n navigation: DrawerNavigationHelpers;\n descriptors: DrawerDescriptorMap;\n};\n\nconst getDefaultDrawerWidth = ({\n height,\n width,\n}: {\n height: number;\n width: number;\n}) => {\n /*\n * Default drawer width is screen width - header height\n * with a max width of 280 on mobile and 320 on tablet\n * https://material.io/components/navigation-drawer\n */\n const smallerAxisSize = Math.min(height, width);\n const isLandscape = width > height;\n const isTablet = smallerAxisSize >= 600;\n const appBarHeight = Platform.OS === 'ios' ? (isLandscape ? 32 : 44) : 56;\n const maxWidth = isTablet ? 320 : 280;\n\n return Math.min(smallerAxisSize - appBarHeight, maxWidth);\n};\n\nconst GestureHandlerWrapper = GestureHandlerRootView ?? View;\n\nfunction DrawerViewBase({\n state,\n navigation,\n descriptors,\n defaultStatus,\n drawerContent = (props: DrawerContentComponentProps) => (\n <DrawerContent {...props} />\n ),\n detachInactiveScreens = Platform.OS === 'web' ||\n Platform.OS === 'android' ||\n Platform.OS === 'ios',\n // Running in chrome debugger\n // @ts-expect-error\n useLegacyImplementation = !global.nativeCallSyncHook ||\n // Reanimated 2 is not configured\n // @ts-expect-error: the type definitions are incomplete\n !Animated.isConfigured?.(),\n}: Props) {\n const Drawer: React.ComponentType<DrawerProps> = useLegacyImplementation\n ? require('./legacy/Drawer').default\n : require('./modern/Drawer').default;\n\n const focusedRouteKey = state.routes[state.index].key;\n const {\n drawerHideStatusBarOnOpen = false,\n drawerPosition = I18nManager.isRTL ? 'right' : 'left',\n drawerStatusBarAnimation = 'slide',\n drawerStyle,\n drawerType = Platform.select({ ios: 'slide', default: 'front' }),\n gestureHandlerProps,\n keyboardDismissMode = 'on-drag',\n overlayColor = 'rgba(0, 0, 0, 0.5)',\n swipeEdgeWidth = 32,\n swipeEnabled = Platform.OS !== 'web' &&\n Platform.OS !== 'windows' &&\n Platform.OS !== 'macos',\n swipeMinDistance = 60,\n } = descriptors[focusedRouteKey].options;\n\n const [loaded, setLoaded] = React.useState([focusedRouteKey]);\n\n if (!loaded.includes(focusedRouteKey)) {\n setLoaded([...loaded, focusedRouteKey]);\n }\n\n const dimensions = useSafeAreaFrame();\n\n const { colors } = useTheme();\n\n const drawerStatus = getDrawerStatusFromState(state);\n\n const handleDrawerOpen = React.useCallback(() => {\n navigation.dispatch({\n ...DrawerActions.openDrawer(),\n target: state.key,\n });\n }, [navigation, state.key]);\n\n const handleDrawerClose = React.useCallback(() => {\n navigation.dispatch({\n ...DrawerActions.closeDrawer(),\n target: state.key,\n });\n }, [navigation, state.key]);\n\n React.useEffect(() => {\n if (drawerStatus === defaultStatus || drawerType === 'permanent') {\n return;\n }\n\n const handleHardwareBack = () => {\n // We shouldn't handle the back button if the parent screen isn't focused\n // This will avoid the drawer overriding event listeners from a focused screen\n if (!navigation.isFocused()) {\n return false;\n }\n\n if (defaultStatus === 'open') {\n handleDrawerOpen();\n } else {\n handleDrawerClose();\n }\n\n return true;\n };\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n handleHardwareBack();\n }\n };\n\n // We only add the listeners when drawer opens\n // This way we can make sure that the listener is added as late as possible\n // This will make sure that our handler will run first when back button is pressed\n const subscription = BackHandler.addEventListener(\n 'hardwareBackPress',\n handleHardwareBack\n );\n\n if (Platform.OS === 'web') {\n document?.body?.addEventListener?.('keyup', handleEscape);\n }\n\n return () => {\n subscription.remove();\n\n if (Platform.OS === 'web') {\n document?.body?.removeEventListener?.('keyup', handleEscape);\n }\n };\n }, [\n defaultStatus,\n drawerStatus,\n drawerType,\n handleDrawerClose,\n handleDrawerOpen,\n navigation,\n ]);\n\n const renderDrawerContent = () => {\n return (\n <DrawerPositionContext.Provider value={drawerPosition}>\n {drawerContent({\n state: state,\n navigation: navigation,\n descriptors: descriptors,\n })}\n </DrawerPositionContext.Provider>\n );\n };\n\n const renderSceneContent = () => {\n return (\n <MaybeScreenContainer\n enabled={detachInactiveScreens}\n hasTwoStates\n style={styles.content}\n >\n {state.routes.map((route, index) => {\n const descriptor = descriptors[route.key];\n const { lazy = true, unmountOnBlur } = descriptor.options;\n const isFocused = state.index === index;\n\n if (unmountOnBlur && !isFocused) {\n return null;\n }\n\n if (lazy && !loaded.includes(route.key) && !isFocused) {\n // Don't render a lazy screen if we've never navigated to it\n return null;\n }\n\n const {\n header = ({ layout, options }: DrawerHeaderProps) => (\n <Header\n {...options}\n layout={layout}\n title={getHeaderTitle(options, route.name)}\n headerLeft={\n options.headerLeft ??\n ((props) => <DrawerToggleButton {...props} />)\n }\n />\n ),\n sceneContainerStyle,\n } = descriptor.options;\n\n return (\n <MaybeScreen\n key={route.key}\n style={[StyleSheet.absoluteFill, { zIndex: isFocused ? 0 : -1 }]}\n visible={isFocused}\n enabled={detachInactiveScreens}\n >\n <Screen\n focused={isFocused}\n route={descriptor.route}\n navigation={descriptor.navigation}\n headerShown={descriptor.options.headerShown}\n headerTransparent={descriptor.options.headerTransparent}\n headerStatusBarHeight={descriptor.options.headerStatusBarHeight}\n header={header({\n layout: dimensions,\n route: descriptor.route,\n navigation:\n descriptor.navigation as DrawerNavigationProp<ParamListBase>,\n options: descriptor.options,\n })}\n style={sceneContainerStyle}\n >\n {descriptor.render()}\n </Screen>\n </MaybeScreen>\n );\n })}\n </MaybeScreenContainer>\n );\n };\n\n return (\n <DrawerStatusContext.Provider value={drawerStatus}>\n <Drawer\n open={drawerStatus !== 'closed'}\n onOpen={handleDrawerOpen}\n onClose={handleDrawerClose}\n gestureHandlerProps={gestureHandlerProps}\n swipeEnabled={swipeEnabled}\n swipeEdgeWidth={swipeEdgeWidth}\n swipeVelocityThreshold={500}\n swipeDistanceThreshold={swipeMinDistance}\n hideStatusBarOnOpen={drawerHideStatusBarOnOpen}\n statusBarAnimation={drawerStatusBarAnimation}\n keyboardDismissMode={keyboardDismissMode}\n drawerType={drawerType}\n drawerPosition={drawerPosition}\n drawerStyle={[\n {\n width: getDefaultDrawerWidth(dimensions),\n backgroundColor: colors.card,\n },\n drawerType === 'permanent' &&\n (drawerPosition === 'left'\n ? {\n borderRightColor: colors.border,\n borderRightWidth: StyleSheet.hairlineWidth,\n }\n : {\n borderLeftColor: colors.border,\n borderLeftWidth: StyleSheet.hairlineWidth,\n }),\n drawerStyle,\n ]}\n overlayStyle={{ backgroundColor: overlayColor }}\n renderDrawerContent={renderDrawerContent}\n renderSceneContent={renderSceneContent}\n dimensions={dimensions}\n />\n </DrawerStatusContext.Provider>\n );\n}\n\nexport default function DrawerView({ navigation, ...rest }: Props) {\n return (\n <SafeAreaProviderCompat>\n <GestureHandlerWrapper style={styles.content}>\n <DrawerViewBase navigation={navigation} {...rest} />\n </GestureHandlerWrapper>\n </SafeAreaProviderCompat>\n );\n}\n\nconst styles = StyleSheet.create({\n content: {\n flex: 1,\n },\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["ScreenFallback.tsx"],"names":["Screens","require","e","MaybeScreenContainer","enabled","rest","screensEnabled","MaybeScreen","visible","children"],"mappings":";;;;;;;;AAAA;;AACA;;AACA;;;;;;;;AASA,IAAIA,OAAJ;;AAEA,IAAI;AACFA,EAAAA,OAAO,GAAGC,OAAO,CAAC,sBAAD,CAAjB;AACD,CAFD,CAEE,OAAOC,CAAP,EAAU,CACV;AACD;;AAEM,MAAMC,oBAAoB,GAAG,QAM9B;AAAA;;AAAA,MAN+B;AACnCC,IAAAA,OADmC;AAEnC,OAAGC;AAFgC,GAM/B;;AACJ,kBAAIL,OAAJ,8DAAI,SAASM,cAAb,kDAAI,oCAAJ,EAAiC;AAC/B,wBAAO,oBAAC,OAAD,CAAS,eAAT;AAAyB,MAAA,OAAO,EAAEF;AAAlC,OAA+CC,IAA/C,EAAP;AACD;;AAED,sBAAO,oBAAC,iBAAD,EAAUA,IAAV,CAAP;AACD,CAZM;;;;AAcA,SAASE,WAAT,QAA4D;AAAA;;AAAA,MAAvC;AAAEC,IAAAA,OAAF;AAAWC,IAAAA,QAAX;AAAqB,OAAGJ;AAAxB,GAAuC;;AACjE,mBAAIL,OAAJ,+DAAI,UAASM,cAAb,kDAAI,qCAAJ,EAAiC;AAC/B,wBACE,oBAAC,OAAD,CAAS,MAAT;AAAgB,MAAA,aAAa,EAAEE,OAAO,GAAG,CAAH,GAAO;AAA7C,OAAoDH,IAApD,GACGI,QADH,CADF;AAKD;;AAED,sBACE,oBAAC,4BAAD;AAAoB,IAAA,OAAO,EAAED;AAA7B,KAA0CH,IAA1C,GACGI,QADH,CADF;AAKD","sourcesContent":["import { ResourceSavingView } from '@react-navigation/elements';\nimport * as React from 'react';\nimport { StyleProp, View, ViewProps, ViewStyle } from 'react-native';\n\ntype Props = {\n visible: boolean;\n children: React.ReactNode;\n enabled: boolean;\n style?: StyleProp<ViewStyle>;\n};\n\nlet Screens: typeof import('react-native-screens') | undefined;\n\ntry {\n Screens = require('react-native-screens');\n} catch (e) {\n // Ignore\n}\n\nexport const MaybeScreenContainer = ({\n enabled,\n ...rest\n}: ViewProps & {\n enabled: boolean;\n children: React.ReactNode;\n}) => {\n if (Screens?.screensEnabled?.()) {\n return <Screens.ScreenContainer enabled={enabled} {...rest} />;\n }\n\n return <View {...rest} />;\n};\n\nexport function MaybeScreen({ visible, children, ...rest }: Props) {\n if (Screens?.screensEnabled?.()) {\n return (\n <Screens.Screen activityState={visible ? 2 : 0} {...rest}>\n {children}\n </Screens.Screen>\n );\n }\n\n return (\n <ResourceSavingView visible={visible} {...rest}>\n {children}\n </ResourceSavingView>\n );\n}\n"]}
1
+ {"version":3,"sources":["ScreenFallback.tsx"],"names":["Screens","require","e","MaybeScreenContainer","enabled","rest","screensEnabled","MaybeScreen","visible","children"],"mappings":";;;;;;;;AAAA;;AACA;;AACA;;;;;;;;AASA,IAAIA,OAAJ;;AAEA,IAAI;AACFA,EAAAA,OAAO,GAAGC,OAAO,CAAC,sBAAD,CAAjB;AACD,CAFD,CAEE,OAAOC,CAAP,EAAU,CACV;AACD;;AAEM,MAAMC,oBAAoB,GAAG,QAO9B;AAAA;;AAAA,MAP+B;AACnCC,IAAAA,OADmC;AAEnC,OAAGC;AAFgC,GAO/B;;AACJ,kBAAIL,OAAJ,8DAAI,SAASM,cAAb,kDAAI,oCAAJ,EAAiC;AAC/B,wBAAO,oBAAC,OAAD,CAAS,eAAT;AAAyB,MAAA,OAAO,EAAEF;AAAlC,OAA+CC,IAA/C,EAAP;AACD;;AAED,sBAAO,oBAAC,iBAAD,EAAUA,IAAV,CAAP;AACD,CAbM;;;;AAeA,SAASE,WAAT,QAA4D;AAAA;;AAAA,MAAvC;AAAEC,IAAAA,OAAF;AAAWC,IAAAA,QAAX;AAAqB,OAAGJ;AAAxB,GAAuC;;AACjE,mBAAIL,OAAJ,+DAAI,UAASM,cAAb,kDAAI,qCAAJ,EAAiC;AAC/B,wBACE,oBAAC,OAAD,CAAS,MAAT;AAAgB,MAAA,aAAa,EAAEE,OAAO,GAAG,CAAH,GAAO;AAA7C,OAAoDH,IAApD,GACGI,QADH,CADF;AAKD;;AAED,sBACE,oBAAC,4BAAD;AAAoB,IAAA,OAAO,EAAED;AAA7B,KAA0CH,IAA1C,GACGI,QADH,CADF;AAKD","sourcesContent":["import { ResourceSavingView } from '@react-navigation/elements';\nimport * as React from 'react';\nimport { StyleProp, View, ViewProps, ViewStyle } from 'react-native';\n\ntype Props = {\n visible: boolean;\n children: React.ReactNode;\n enabled: boolean;\n style?: StyleProp<ViewStyle>;\n};\n\nlet Screens: typeof import('react-native-screens') | undefined;\n\ntry {\n Screens = require('react-native-screens');\n} catch (e) {\n // Ignore\n}\n\nexport const MaybeScreenContainer = ({\n enabled,\n ...rest\n}: ViewProps & {\n enabled: boolean;\n hasTwoStates: boolean;\n children: React.ReactNode;\n}) => {\n if (Screens?.screensEnabled?.()) {\n return <Screens.ScreenContainer enabled={enabled} {...rest} />;\n }\n\n return <View {...rest} />;\n};\n\nexport function MaybeScreen({ visible, children, ...rest }: Props) {\n if (Screens?.screensEnabled?.()) {\n return (\n <Screens.Screen activityState={visible ? 2 : 0} {...rest}>\n {children}\n </Screens.Screen>\n );\n }\n\n return (\n <ResourceSavingView visible={visible} {...rest}>\n {children}\n </ResourceSavingView>\n );\n}\n"]}
@@ -382,7 +382,7 @@ class DrawerView extends React.Component {
382
382
  style: [styles.content, {
383
383
  transform: drawerType === 'permanent' ? // Reanimated needs the property to be present, but it results in Browser bug
384
384
  // https://bugs.chromium.org/p/chromium/issues/detail?id=20574
385
- undefined : [{
385
+ [] : [{
386
386
  translateX: contentTranslateX
387
387
  }]
388
388
  }]
@@ -410,7 +410,7 @@ class DrawerView extends React.Component {
410
410
  style: [styles.container, {
411
411
  transform: drawerType === 'permanent' ? // Reanimated needs the property to be present, but it results in Browser bug
412
412
  // https://bugs.chromium.org/p/chromium/issues/detail?id=20574
413
- undefined : [{
413
+ [] : [{
414
414
  translateX: drawerTranslateX
415
415
  }],
416
416
  opacity: this.drawerOpacity
@@ -1 +1 @@
1
- {"version":3,"sources":["Drawer.tsx"],"names":["Clock","Value","onChange","clockRunning","startClock","stopClock","spring","abs","add","and","block","call","cond","divide","eq","event","greaterThan","lessThan","max","min","multiply","neq","or","set","sub","Animated","TRUE","FALSE","NOOP","UNSET","DIRECTION_LEFT","DIRECTION_RIGHT","SWIPE_DISTANCE_MINIMUM","DEFAULT_DRAWER_WIDTH","SPRING_CONFIG","stiffness","damping","mass","overshootClamping","restDisplacementThreshold","restSpeedThreshold","ANIMATED_ZERO","ANIMATED_ONE","DrawerView","React","Component","interactionHandle","undefined","InteractionManager","clearInteractionHandle","createInteractionHandle","drawerStyle","dimensions","props","width","StyleSheet","flatten","endsWith","percentage","Number","replace","isFinite","drawerType","open","getDrawerWidth","GestureState","UNDETERMINED","initialDrawerWidth","drawerPosition","isDrawerTypeFront","touchX","gestureX","drawerWidth","containerWidth","swipeDistanceThreshold","swipeVelocityThreshold","isOpen","toValue","frameTime","state","position","time","finished","velocity","clock","velocityX","handleStartInteraction","manuallyTriggerSpring","offsetX","value","Boolean","handleEndInteraction","toggleDrawer","currentOpenValue","onOpen","onClose","pendingOpenValue","forceUpdate","nextIsOpen","isSwiping","keyboardDismissMode","Keyboard","dismiss","toggleStatusBar","gestureState","ACTIVE","touchDistanceFromDrawer","transitionTo","dragX","translateX","nativeEvent","x","translationX","s","e","setValue","layout","requestAnimationFrame","drawerOpacity","hidden","hideStatusBarOnOpen","hideStatusBar","statusBarAnimation","isStatusBarHidden","StatusBar","setHidden","componentDidUpdate","prevProps","componentWillUnmount","render","swipeEnabled","swipeEdgeWidth","overlayStyle","renderDrawerContent","renderSceneContent","gestureHandlerProps","isRight","contentTranslateX","drawerTranslateX","I18nManager","isRTL","offset","hitSlop","right","left","progress","handleGestureEvent","handleGestureStateChange","handleContainerLayout","styles","main","flexDirection","content","transform","Platform","OS","handleDrawerLayout","container","opacity","nonPermanent","zIndex","create","backgroundColor","maxWidth","top","bottom","flex","select","web","default","overflow"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n I18nManager,\n InteractionManager,\n Keyboard,\n LayoutChangeEvent,\n Platform,\n StatusBar,\n StyleSheet,\n View,\n} from 'react-native';\nimport Animated from 'react-native-reanimated';\n\nimport type { DrawerProps } from '../../types';\nimport DrawerProgressContext from '../../utils/DrawerProgressContext';\nimport { GestureState, PanGestureHandler } from '../GestureHandler';\nimport Overlay from './Overlay';\n\nconst {\n Clock,\n Value,\n onChange,\n clockRunning,\n startClock,\n stopClock,\n spring,\n abs,\n add,\n and,\n block,\n call,\n cond,\n divide,\n eq,\n event,\n greaterThan,\n lessThan,\n max,\n min,\n multiply,\n neq,\n or,\n set,\n sub,\n} = Animated;\n\nconst TRUE = 1;\nconst FALSE = 0;\nconst NOOP = 0;\nconst UNSET = -1;\n\nconst DIRECTION_LEFT = 1;\nconst DIRECTION_RIGHT = -1;\n\nconst SWIPE_DISTANCE_MINIMUM = 5;\n\nconst DEFAULT_DRAWER_WIDTH = '80%';\n\nconst SPRING_CONFIG = {\n stiffness: 1000,\n damping: 500,\n mass: 3,\n overshootClamping: true,\n restDisplacementThreshold: 0.01,\n restSpeedThreshold: 0.01,\n};\n\nconst ANIMATED_ZERO = new Animated.Value(0);\nconst ANIMATED_ONE = new Animated.Value(1);\n\ntype Binary = 0 | 1;\n\nexport default class DrawerView extends React.Component<DrawerProps> {\n componentDidUpdate(prevProps: DrawerProps) {\n const {\n open,\n drawerPosition,\n drawerType,\n swipeDistanceThreshold,\n swipeVelocityThreshold,\n hideStatusBarOnOpen: hideStatusBar,\n } = this.props;\n\n if (\n // If we're not in the middle of a transition, sync the drawer's open state\n typeof this.pendingOpenValue !== 'boolean' ||\n open !== this.pendingOpenValue\n ) {\n this.toggleDrawer(open);\n }\n\n this.pendingOpenValue = undefined;\n\n if (open !== prevProps.open && hideStatusBar) {\n this.toggleStatusBar(open);\n }\n\n if (prevProps.drawerPosition !== drawerPosition) {\n this.drawerPosition.setValue(\n drawerPosition === 'right' ? DIRECTION_RIGHT : DIRECTION_LEFT\n );\n }\n\n if (prevProps.drawerType !== drawerType) {\n this.isDrawerTypeFront.setValue(drawerType === 'front' ? TRUE : FALSE);\n }\n\n if (prevProps.swipeDistanceThreshold !== swipeDistanceThreshold) {\n this.swipeDistanceThreshold.setValue(swipeDistanceThreshold);\n }\n\n if (prevProps.swipeVelocityThreshold !== swipeVelocityThreshold) {\n this.swipeVelocityThreshold.setValue(swipeVelocityThreshold);\n }\n }\n\n componentWillUnmount() {\n this.toggleStatusBar(false);\n this.handleEndInteraction();\n }\n\n private handleEndInteraction = () => {\n if (this.interactionHandle !== undefined) {\n InteractionManager.clearInteractionHandle(this.interactionHandle);\n this.interactionHandle = undefined;\n }\n };\n\n private handleStartInteraction = () => {\n if (this.interactionHandle === undefined) {\n this.interactionHandle = InteractionManager.createInteractionHandle();\n }\n };\n\n private getDrawerWidth = (): number => {\n const { drawerStyle, dimensions } = this.props;\n const { width = DEFAULT_DRAWER_WIDTH } =\n StyleSheet.flatten(drawerStyle) || {};\n\n if (typeof width === 'string' && width.endsWith('%')) {\n // Try to calculate width if a percentage is given\n const percentage = Number(width.replace(/%$/, ''));\n\n if (Number.isFinite(percentage)) {\n return dimensions.width * (percentage / 100);\n }\n }\n\n return typeof width === 'number' ? width : 0;\n };\n\n private clock = new Clock();\n private interactionHandle: number | undefined;\n\n private isDrawerTypeFront = new Value<Binary>(\n this.props.drawerType === 'front' ? TRUE : FALSE\n );\n\n private isOpen = new Value<Binary>(this.props.open ? TRUE : FALSE);\n private nextIsOpen = new Value<Binary | -1>(UNSET);\n private isSwiping = new Value<Binary>(FALSE);\n\n private initialDrawerWidth = this.getDrawerWidth();\n\n private gestureState = new Value<number>(GestureState.UNDETERMINED);\n private touchX = new Value<number>(0);\n private velocityX = new Value<number>(0);\n private gestureX = new Value<number>(0);\n private offsetX = new Value<number>(0);\n private position = new Value<number>(\n this.props.open\n ? this.initialDrawerWidth *\n (this.props.drawerPosition === 'right'\n ? DIRECTION_RIGHT\n : DIRECTION_LEFT)\n : 0\n );\n\n private containerWidth = new Value<number>(this.props.dimensions.width);\n private drawerWidth = new Value<number>(this.initialDrawerWidth);\n private drawerOpacity = new Value<number>(\n this.props.drawerType === 'permanent' ? 1 : 0\n );\n private drawerPosition = new Value<number>(\n this.props.drawerPosition === 'right' ? DIRECTION_RIGHT : DIRECTION_LEFT\n );\n\n // Comment stolen from react-native-gesture-handler/DrawerLayout\n //\n // While closing the drawer when user starts gesture outside of its area (in greyed\n // out part of the window), we want the drawer to follow only once finger reaches the\n // edge of the drawer.\n // E.g. on the diagram below drawer is illustrate by X signs and the greyed out area by\n // dots. The touch gesture starts at '*' and moves left, touch path is indicated by\n // an arrow pointing left\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 // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // +---------------+ +---------------+ +---------------+ +---------------+\n //\n // For the above to work properly we define animated value that will keep start position\n // of the gesture. Then we use that value to calculate how much we need to subtract from\n // the dragX. If the gesture started on the greyed out area we take the distance from the\n // edge of the drawer to the start position. Otherwise we don't subtract at all and the\n // drawer be pulled back as soon as you start the pan.\n //\n // This is used only when drawerType is \"front\"\n private touchDistanceFromDrawer = cond(\n this.isDrawerTypeFront,\n cond(\n eq(this.drawerPosition, DIRECTION_LEFT),\n max(\n // Distance of touch start from left screen edge - Drawer width\n sub(sub(this.touchX, this.gestureX), this.drawerWidth),\n 0\n ),\n min(\n multiply(\n // Distance of drawer from left screen edge - Touch start point\n sub(\n sub(this.containerWidth, this.drawerWidth),\n sub(this.touchX, this.gestureX)\n ),\n DIRECTION_RIGHT\n ),\n 0\n )\n ),\n 0\n );\n\n private swipeDistanceThreshold = new Value<number>(\n this.props.swipeDistanceThreshold\n );\n private swipeVelocityThreshold = new Value<number>(\n this.props.swipeVelocityThreshold\n );\n\n private currentOpenValue: boolean = this.props.open;\n private pendingOpenValue: boolean | undefined;\n\n private isStatusBarHidden: boolean = false;\n\n private manuallyTriggerSpring = new Value<Binary>(FALSE);\n\n private transitionTo = (isOpen: number | Animated.Node<number>) => {\n const toValue = new Value(0);\n const frameTime = new Value(0);\n\n const state = {\n position: this.position,\n time: new Value(0),\n finished: new Value(FALSE),\n velocity: new Value(0),\n };\n\n return block([\n cond(clockRunning(this.clock), NOOP, [\n // Animation wasn't running before\n // Set the initial values and start the clock\n set(toValue, multiply(isOpen, this.drawerWidth, this.drawerPosition)),\n set(frameTime, 0),\n set(state.time, 0),\n set(state.finished, FALSE),\n set(state.velocity, this.velocityX),\n set(this.isOpen, isOpen),\n startClock(this.clock),\n call([], this.handleStartInteraction),\n set(this.manuallyTriggerSpring, FALSE),\n ]),\n spring(this.clock, state, { ...SPRING_CONFIG, toValue }),\n cond(state.finished, [\n // Reset gesture and velocity from previous gesture\n set(this.touchX, 0),\n set(this.gestureX, 0),\n set(this.velocityX, 0),\n set(this.offsetX, 0),\n // When the animation finishes, stop the clock\n stopClock(this.clock),\n call([this.isOpen], ([value]: readonly Binary[]) => {\n const open = Boolean(value);\n this.handleEndInteraction();\n\n if (open !== this.props.open) {\n // Sync drawer's state after animation finished\n // This shouldn't be necessary, but there seems to be an issue on iOS\n this.toggleDrawer(this.props.open);\n }\n }),\n ]),\n ]);\n };\n\n private dragX = block([\n onChange(\n this.isOpen,\n call([this.isOpen], ([value]: readonly Binary[]) => {\n const open = Boolean(value);\n\n this.currentOpenValue = open;\n\n // Without this check, the drawer can go to an infinite update <-> animate loop for sync updates\n if (open !== this.props.open) {\n // If the mode changed, update state\n if (open) {\n this.props.onOpen();\n } else {\n this.props.onClose();\n }\n\n this.pendingOpenValue = open;\n\n // Force componentDidUpdate to fire, whether user does a setState or not\n // This allows us to detect when the user drops the update and revert back\n // It's necessary to make sure that the state stays in sync\n this.forceUpdate();\n }\n })\n ),\n onChange(\n this.nextIsOpen,\n cond(neq(this.nextIsOpen, UNSET), [\n // Stop any running animations\n cond(clockRunning(this.clock), stopClock(this.clock)),\n // Update the open value to trigger the transition\n set(this.isOpen, this.nextIsOpen),\n set(this.gestureX, 0),\n set(this.nextIsOpen, UNSET),\n ])\n ),\n // This block must be after the this.isOpen listener since we check for current value\n onChange(\n this.isSwiping,\n // Listen to updates for this value only when it changes\n // Without `onChange`, this will fire even if the value didn't change\n // We don't want to call the listeners if the value didn't change\n call([this.isSwiping], ([value]: readonly Binary[]) => {\n const { keyboardDismissMode } = this.props;\n\n if (value === TRUE) {\n if (keyboardDismissMode === 'on-drag') {\n Keyboard.dismiss();\n }\n\n this.toggleStatusBar(true);\n } else {\n this.toggleStatusBar(this.currentOpenValue);\n }\n })\n ),\n onChange(\n this.gestureState,\n cond(\n eq(this.gestureState, GestureState.ACTIVE),\n call([], this.handleStartInteraction)\n )\n ),\n cond(\n eq(this.gestureState, GestureState.ACTIVE),\n [\n cond(this.isSwiping, NOOP, [\n // We weren't dragging before, set it to true\n set(this.isSwiping, TRUE),\n // Also update the drag offset to the last position\n set(this.offsetX, this.position),\n ]),\n // Update position with previous offset + gesture distance\n set(\n this.position,\n add(this.offsetX, this.gestureX, this.touchDistanceFromDrawer)\n ),\n // Stop animations while we're dragging\n stopClock(this.clock),\n ],\n [\n set(this.isSwiping, FALSE),\n set(this.touchX, 0),\n this.transitionTo(\n cond(\n this.manuallyTriggerSpring,\n this.isOpen,\n cond(\n or(\n and(\n greaterThan(abs(this.gestureX), SWIPE_DISTANCE_MINIMUM),\n greaterThan(abs(this.velocityX), this.swipeVelocityThreshold)\n ),\n greaterThan(abs(this.gestureX), this.swipeDistanceThreshold)\n ),\n cond(\n eq(this.drawerPosition, DIRECTION_LEFT),\n // If swiped to right, open the drawer, otherwise close it\n greaterThan(\n cond(eq(this.velocityX, 0), this.gestureX, this.velocityX),\n 0\n ),\n // If swiped to left, open the drawer, otherwise close it\n lessThan(\n cond(eq(this.velocityX, 0), this.gestureX, this.velocityX),\n 0\n )\n ),\n this.isOpen\n )\n )\n ),\n ]\n ),\n this.position,\n ]);\n\n private translateX = cond(\n eq(this.drawerPosition, DIRECTION_RIGHT),\n min(max(multiply(this.drawerWidth, -1), this.dragX), 0),\n max(min(this.drawerWidth, this.dragX), 0)\n );\n\n private progress = cond(\n // Check if the drawer width is available to avoid division by zero\n eq(this.drawerWidth, 0),\n 0,\n abs(divide(this.translateX, this.drawerWidth))\n );\n\n private handleGestureEvent = event([\n {\n nativeEvent: {\n x: this.touchX,\n translationX: this.gestureX,\n velocityX: this.velocityX,\n },\n },\n ]);\n\n private handleGestureStateChange = event([\n {\n nativeEvent: {\n state: (s: Animated.Value<number>) => set(this.gestureState, s),\n },\n },\n ]);\n\n private handleContainerLayout = (e: LayoutChangeEvent) =>\n this.containerWidth.setValue(e.nativeEvent.layout.width);\n\n private handleDrawerLayout = (e: LayoutChangeEvent) => {\n this.drawerWidth.setValue(e.nativeEvent.layout.width);\n this.toggleDrawer(this.props.open);\n\n // Until layout is available, drawer is hidden with opacity: 0 by default\n // Show it in the next frame when layout is available\n // If we don't delay it until the next frame, there's a visible flicker\n requestAnimationFrame(() =>\n requestAnimationFrame(() => this.drawerOpacity.setValue(1))\n );\n };\n\n private toggleDrawer = (open: boolean) => {\n if (this.currentOpenValue !== open) {\n this.nextIsOpen.setValue(open ? TRUE : FALSE);\n\n // This value will also be set shortly after as changing this.nextIsOpen changes this.isOpen\n // However, there's a race condition on Android, so we need to set a bit earlier\n this.currentOpenValue = open;\n }\n };\n\n private toggleStatusBar = (hidden: boolean) => {\n const { hideStatusBarOnOpen: hideStatusBar, statusBarAnimation } =\n this.props;\n\n if (hideStatusBar && this.isStatusBarHidden !== hidden) {\n this.isStatusBarHidden = hidden;\n StatusBar.setHidden(hidden, statusBarAnimation);\n }\n };\n\n render() {\n const {\n open,\n swipeEnabled,\n drawerPosition,\n drawerType,\n swipeEdgeWidth,\n drawerStyle,\n overlayStyle,\n renderDrawerContent,\n renderSceneContent,\n gestureHandlerProps,\n } = this.props;\n\n const isOpen = drawerType === 'permanent' ? true : open;\n const isRight = drawerPosition === 'right';\n\n const contentTranslateX =\n drawerType === 'front' ? ANIMATED_ZERO : this.translateX;\n\n const drawerTranslateX =\n drawerType === 'back'\n ? I18nManager.isRTL\n ? multiply(\n sub(this.containerWidth, this.drawerWidth),\n isRight ? 1 : -1\n )\n : ANIMATED_ZERO\n : this.translateX;\n\n const offset =\n drawerType === 'back'\n ? 0\n : I18nManager.isRTL\n ? '100%'\n : multiply(this.drawerWidth, -1);\n\n // FIXME: Currently hitSlop is broken when on Android when drawer is on right\n // https://github.com/software-mansion/react-native-gesture-handler/issues/569\n const hitSlop = isRight\n ? // Extend hitSlop to the side of the screen when drawer is closed\n // This lets the user drag the drawer from the side of the screen\n { right: 0, width: isOpen ? undefined : swipeEdgeWidth }\n : { left: 0, width: isOpen ? undefined : swipeEdgeWidth };\n\n const progress = drawerType === 'permanent' ? ANIMATED_ONE : this.progress;\n\n return (\n <DrawerProgressContext.Provider value={progress}>\n <PanGestureHandler\n activeOffsetX={[-SWIPE_DISTANCE_MINIMUM, SWIPE_DISTANCE_MINIMUM]}\n failOffsetY={[-SWIPE_DISTANCE_MINIMUM, SWIPE_DISTANCE_MINIMUM]}\n onGestureEvent={this.handleGestureEvent}\n onHandlerStateChange={this.handleGestureStateChange}\n hitSlop={hitSlop}\n enabled={drawerType !== 'permanent' && swipeEnabled}\n {...gestureHandlerProps}\n >\n <Animated.View\n onLayout={this.handleContainerLayout}\n style={[\n styles.main,\n {\n flexDirection:\n drawerType === 'permanent' && !isRight\n ? 'row-reverse'\n : 'row',\n },\n ]}\n >\n <Animated.View\n style={[\n styles.content,\n {\n transform:\n drawerType === 'permanent'\n ? // Reanimated needs the property to be present, but it results in Browser bug\n // https://bugs.chromium.org/p/chromium/issues/detail?id=20574\n undefined\n : [{ translateX: contentTranslateX }],\n },\n ]}\n >\n <View\n accessibilityElementsHidden={\n isOpen && drawerType !== 'permanent'\n }\n importantForAccessibility={\n isOpen && drawerType !== 'permanent'\n ? 'no-hide-descendants'\n : 'auto'\n }\n style={styles.content}\n >\n {renderSceneContent()}\n </View>\n {\n // Disable overlay if sidebar is permanent\n drawerType === 'permanent' ? null : (\n <Overlay\n progress={progress}\n onPress={() => this.toggleDrawer(false)}\n style={overlayStyle as any}\n accessibilityElementsHidden={!isOpen}\n importantForAccessibility={\n isOpen ? 'auto' : 'no-hide-descendants'\n }\n />\n )\n }\n </Animated.View>\n <Animated.Code\n // This is needed to make sure that container width updates with `setValue`\n // Without this, it won't update when not used in styles\n exec={this.containerWidth}\n />\n {drawerType === 'permanent' ? null : (\n <Animated.Code\n exec={block([\n onChange(this.manuallyTriggerSpring, [\n cond(eq(this.manuallyTriggerSpring, TRUE), [\n set(this.nextIsOpen, FALSE),\n call([], () => (this.currentOpenValue = false)),\n ]),\n ]),\n ])}\n />\n )}\n <Animated.View\n accessibilityViewIsModal={isOpen && drawerType !== 'permanent'}\n removeClippedSubviews={Platform.OS !== 'ios'}\n onLayout={this.handleDrawerLayout}\n style={[\n styles.container,\n {\n transform:\n drawerType === 'permanent'\n ? // Reanimated needs the property to be present, but it results in Browser bug\n // https://bugs.chromium.org/p/chromium/issues/detail?id=20574\n undefined\n : [{ translateX: drawerTranslateX }],\n opacity: this.drawerOpacity,\n },\n drawerType === 'permanent'\n ? // Without this, the `left`/`right` values don't get reset\n isRight\n ? { right: 0 }\n : { left: 0 }\n : [\n styles.nonPermanent,\n isRight ? { right: offset } : { left: offset },\n { zIndex: drawerType === 'back' ? -1 : 0 },\n ],\n drawerStyle as any,\n ]}\n >\n {renderDrawerContent()}\n </Animated.View>\n </Animated.View>\n </PanGestureHandler>\n </DrawerProgressContext.Provider>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n backgroundColor: 'white',\n maxWidth: '100%',\n },\n nonPermanent: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n width: DEFAULT_DRAWER_WIDTH,\n },\n content: {\n flex: 1,\n },\n main: {\n flex: 1,\n ...Platform.select({\n // FIXME: We need to hide `overflowX` on Web so the translated content doesn't show offscreen.\n // But adding `overflowX: 'hidden'` prevents content from collapsing the URL bar.\n web: null,\n default: { overflow: 'hidden' },\n }),\n },\n});\n"]}
1
+ {"version":3,"sources":["Drawer.tsx"],"names":["Clock","Value","onChange","clockRunning","startClock","stopClock","spring","abs","add","and","block","call","cond","divide","eq","event","greaterThan","lessThan","max","min","multiply","neq","or","set","sub","Animated","TRUE","FALSE","NOOP","UNSET","DIRECTION_LEFT","DIRECTION_RIGHT","SWIPE_DISTANCE_MINIMUM","DEFAULT_DRAWER_WIDTH","SPRING_CONFIG","stiffness","damping","mass","overshootClamping","restDisplacementThreshold","restSpeedThreshold","ANIMATED_ZERO","ANIMATED_ONE","DrawerView","React","Component","interactionHandle","undefined","InteractionManager","clearInteractionHandle","createInteractionHandle","drawerStyle","dimensions","props","width","StyleSheet","flatten","endsWith","percentage","Number","replace","isFinite","drawerType","open","getDrawerWidth","GestureState","UNDETERMINED","initialDrawerWidth","drawerPosition","isDrawerTypeFront","touchX","gestureX","drawerWidth","containerWidth","swipeDistanceThreshold","swipeVelocityThreshold","isOpen","toValue","frameTime","state","position","time","finished","velocity","clock","velocityX","handleStartInteraction","manuallyTriggerSpring","offsetX","value","Boolean","handleEndInteraction","toggleDrawer","currentOpenValue","onOpen","onClose","pendingOpenValue","forceUpdate","nextIsOpen","isSwiping","keyboardDismissMode","Keyboard","dismiss","toggleStatusBar","gestureState","ACTIVE","touchDistanceFromDrawer","transitionTo","dragX","translateX","nativeEvent","x","translationX","s","e","setValue","layout","requestAnimationFrame","drawerOpacity","hidden","hideStatusBarOnOpen","hideStatusBar","statusBarAnimation","isStatusBarHidden","StatusBar","setHidden","componentDidUpdate","prevProps","componentWillUnmount","render","swipeEnabled","swipeEdgeWidth","overlayStyle","renderDrawerContent","renderSceneContent","gestureHandlerProps","isRight","contentTranslateX","drawerTranslateX","I18nManager","isRTL","offset","hitSlop","right","left","progress","handleGestureEvent","handleGestureStateChange","handleContainerLayout","styles","main","flexDirection","content","transform","Platform","OS","handleDrawerLayout","container","opacity","nonPermanent","zIndex","create","backgroundColor","maxWidth","top","bottom","flex","select","web","default","overflow"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n I18nManager,\n InteractionManager,\n Keyboard,\n LayoutChangeEvent,\n Platform,\n StatusBar,\n StyleSheet,\n View,\n} from 'react-native';\nimport Animated from 'react-native-reanimated';\n\nimport type { DrawerProps } from '../../types';\nimport DrawerProgressContext from '../../utils/DrawerProgressContext';\nimport { GestureState, PanGestureHandler } from '../GestureHandler';\nimport Overlay from './Overlay';\n\nconst {\n Clock,\n Value,\n onChange,\n clockRunning,\n startClock,\n stopClock,\n spring,\n abs,\n add,\n and,\n block,\n call,\n cond,\n divide,\n eq,\n event,\n greaterThan,\n lessThan,\n max,\n min,\n multiply,\n neq,\n or,\n set,\n sub,\n} = Animated;\n\nconst TRUE = 1;\nconst FALSE = 0;\nconst NOOP = 0;\nconst UNSET = -1;\n\nconst DIRECTION_LEFT = 1;\nconst DIRECTION_RIGHT = -1;\n\nconst SWIPE_DISTANCE_MINIMUM = 5;\n\nconst DEFAULT_DRAWER_WIDTH = '80%';\n\nconst SPRING_CONFIG = {\n stiffness: 1000,\n damping: 500,\n mass: 3,\n overshootClamping: true,\n restDisplacementThreshold: 0.01,\n restSpeedThreshold: 0.01,\n};\n\nconst ANIMATED_ZERO = new Animated.Value(0);\nconst ANIMATED_ONE = new Animated.Value(1);\n\ntype Binary = 0 | 1;\n\nexport default class DrawerView extends React.Component<DrawerProps> {\n componentDidUpdate(prevProps: DrawerProps) {\n const {\n open,\n drawerPosition,\n drawerType,\n swipeDistanceThreshold,\n swipeVelocityThreshold,\n hideStatusBarOnOpen: hideStatusBar,\n } = this.props;\n\n if (\n // If we're not in the middle of a transition, sync the drawer's open state\n typeof this.pendingOpenValue !== 'boolean' ||\n open !== this.pendingOpenValue\n ) {\n this.toggleDrawer(open);\n }\n\n this.pendingOpenValue = undefined;\n\n if (open !== prevProps.open && hideStatusBar) {\n this.toggleStatusBar(open);\n }\n\n if (prevProps.drawerPosition !== drawerPosition) {\n this.drawerPosition.setValue(\n drawerPosition === 'right' ? DIRECTION_RIGHT : DIRECTION_LEFT\n );\n }\n\n if (prevProps.drawerType !== drawerType) {\n this.isDrawerTypeFront.setValue(drawerType === 'front' ? TRUE : FALSE);\n }\n\n if (prevProps.swipeDistanceThreshold !== swipeDistanceThreshold) {\n this.swipeDistanceThreshold.setValue(swipeDistanceThreshold);\n }\n\n if (prevProps.swipeVelocityThreshold !== swipeVelocityThreshold) {\n this.swipeVelocityThreshold.setValue(swipeVelocityThreshold);\n }\n }\n\n componentWillUnmount() {\n this.toggleStatusBar(false);\n this.handleEndInteraction();\n }\n\n private handleEndInteraction = () => {\n if (this.interactionHandle !== undefined) {\n InteractionManager.clearInteractionHandle(this.interactionHandle);\n this.interactionHandle = undefined;\n }\n };\n\n private handleStartInteraction = () => {\n if (this.interactionHandle === undefined) {\n this.interactionHandle = InteractionManager.createInteractionHandle();\n }\n };\n\n private getDrawerWidth = (): number => {\n const { drawerStyle, dimensions } = this.props;\n const { width = DEFAULT_DRAWER_WIDTH } =\n StyleSheet.flatten(drawerStyle) || {};\n\n if (typeof width === 'string' && width.endsWith('%')) {\n // Try to calculate width if a percentage is given\n const percentage = Number(width.replace(/%$/, ''));\n\n if (Number.isFinite(percentage)) {\n return dimensions.width * (percentage / 100);\n }\n }\n\n return typeof width === 'number' ? width : 0;\n };\n\n private clock = new Clock();\n private interactionHandle: number | undefined;\n\n private isDrawerTypeFront = new Value<Binary>(\n this.props.drawerType === 'front' ? TRUE : FALSE\n );\n\n private isOpen = new Value<Binary>(this.props.open ? TRUE : FALSE);\n private nextIsOpen = new Value<Binary | -1>(UNSET);\n private isSwiping = new Value<Binary>(FALSE);\n\n private initialDrawerWidth = this.getDrawerWidth();\n\n private gestureState = new Value<number>(GestureState.UNDETERMINED);\n private touchX = new Value<number>(0);\n private velocityX = new Value<number>(0);\n private gestureX = new Value<number>(0);\n private offsetX = new Value<number>(0);\n private position = new Value<number>(\n this.props.open\n ? this.initialDrawerWidth *\n (this.props.drawerPosition === 'right'\n ? DIRECTION_RIGHT\n : DIRECTION_LEFT)\n : 0\n );\n\n private containerWidth = new Value<number>(this.props.dimensions.width);\n private drawerWidth = new Value<number>(this.initialDrawerWidth);\n private drawerOpacity = new Value<number>(\n this.props.drawerType === 'permanent' ? 1 : 0\n );\n private drawerPosition = new Value<number>(\n this.props.drawerPosition === 'right' ? DIRECTION_RIGHT : DIRECTION_LEFT\n );\n\n // Comment stolen from react-native-gesture-handler/DrawerLayout\n //\n // While closing the drawer when user starts gesture outside of its area (in greyed\n // out part of the window), we want the drawer to follow only once finger reaches the\n // edge of the drawer.\n // E.g. on the diagram below drawer is illustrate by X signs and the greyed out area by\n // dots. The touch gesture starts at '*' and moves left, touch path is indicated by\n // an arrow pointing left\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 // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // +---------------+ +---------------+ +---------------+ +---------------+\n //\n // For the above to work properly we define animated value that will keep start position\n // of the gesture. Then we use that value to calculate how much we need to subtract from\n // the dragX. If the gesture started on the greyed out area we take the distance from the\n // edge of the drawer to the start position. Otherwise we don't subtract at all and the\n // drawer be pulled back as soon as you start the pan.\n //\n // This is used only when drawerType is \"front\"\n private touchDistanceFromDrawer = cond(\n this.isDrawerTypeFront,\n cond(\n eq(this.drawerPosition, DIRECTION_LEFT),\n max(\n // Distance of touch start from left screen edge - Drawer width\n sub(sub(this.touchX, this.gestureX), this.drawerWidth),\n 0\n ),\n min(\n multiply(\n // Distance of drawer from left screen edge - Touch start point\n sub(\n sub(this.containerWidth, this.drawerWidth),\n sub(this.touchX, this.gestureX)\n ),\n DIRECTION_RIGHT\n ),\n 0\n )\n ),\n 0\n );\n\n private swipeDistanceThreshold = new Value<number>(\n this.props.swipeDistanceThreshold\n );\n private swipeVelocityThreshold = new Value<number>(\n this.props.swipeVelocityThreshold\n );\n\n private currentOpenValue: boolean = this.props.open;\n private pendingOpenValue: boolean | undefined;\n\n private isStatusBarHidden: boolean = false;\n\n private manuallyTriggerSpring = new Value<Binary>(FALSE);\n\n private transitionTo = (isOpen: number | Animated.Node<number>) => {\n const toValue = new Value(0);\n const frameTime = new Value(0);\n\n const state = {\n position: this.position,\n time: new Value(0),\n finished: new Value(FALSE),\n velocity: new Value(0),\n };\n\n return block([\n cond(clockRunning(this.clock), NOOP, [\n // Animation wasn't running before\n // Set the initial values and start the clock\n set(toValue, multiply(isOpen, this.drawerWidth, this.drawerPosition)),\n set(frameTime, 0),\n set(state.time, 0),\n set(state.finished, FALSE),\n set(state.velocity, this.velocityX),\n set(this.isOpen, isOpen),\n startClock(this.clock),\n call([], this.handleStartInteraction),\n set(this.manuallyTriggerSpring, FALSE),\n ]),\n spring(this.clock, state, { ...SPRING_CONFIG, toValue }),\n cond(state.finished, [\n // Reset gesture and velocity from previous gesture\n set(this.touchX, 0),\n set(this.gestureX, 0),\n set(this.velocityX, 0),\n set(this.offsetX, 0),\n // When the animation finishes, stop the clock\n stopClock(this.clock),\n call([this.isOpen], ([value]: readonly Binary[]) => {\n const open = Boolean(value);\n this.handleEndInteraction();\n\n if (open !== this.props.open) {\n // Sync drawer's state after animation finished\n // This shouldn't be necessary, but there seems to be an issue on iOS\n this.toggleDrawer(this.props.open);\n }\n }),\n ]),\n ]);\n };\n\n private dragX = block([\n onChange(\n this.isOpen,\n call([this.isOpen], ([value]: readonly Binary[]) => {\n const open = Boolean(value);\n\n this.currentOpenValue = open;\n\n // Without this check, the drawer can go to an infinite update <-> animate loop for sync updates\n if (open !== this.props.open) {\n // If the mode changed, update state\n if (open) {\n this.props.onOpen();\n } else {\n this.props.onClose();\n }\n\n this.pendingOpenValue = open;\n\n // Force componentDidUpdate to fire, whether user does a setState or not\n // This allows us to detect when the user drops the update and revert back\n // It's necessary to make sure that the state stays in sync\n this.forceUpdate();\n }\n })\n ),\n onChange(\n this.nextIsOpen,\n cond(neq(this.nextIsOpen, UNSET), [\n // Stop any running animations\n cond(clockRunning(this.clock), stopClock(this.clock)),\n // Update the open value to trigger the transition\n set(this.isOpen, this.nextIsOpen),\n set(this.gestureX, 0),\n set(this.nextIsOpen, UNSET),\n ])\n ),\n // This block must be after the this.isOpen listener since we check for current value\n onChange(\n this.isSwiping,\n // Listen to updates for this value only when it changes\n // Without `onChange`, this will fire even if the value didn't change\n // We don't want to call the listeners if the value didn't change\n call([this.isSwiping], ([value]: readonly Binary[]) => {\n const { keyboardDismissMode } = this.props;\n\n if (value === TRUE) {\n if (keyboardDismissMode === 'on-drag') {\n Keyboard.dismiss();\n }\n\n this.toggleStatusBar(true);\n } else {\n this.toggleStatusBar(this.currentOpenValue);\n }\n })\n ),\n onChange(\n this.gestureState,\n cond(\n eq(this.gestureState, GestureState.ACTIVE),\n call([], this.handleStartInteraction)\n )\n ),\n cond(\n eq(this.gestureState, GestureState.ACTIVE),\n [\n cond(this.isSwiping, NOOP, [\n // We weren't dragging before, set it to true\n set(this.isSwiping, TRUE),\n // Also update the drag offset to the last position\n set(this.offsetX, this.position),\n ]),\n // Update position with previous offset + gesture distance\n set(\n this.position,\n add(this.offsetX, this.gestureX, this.touchDistanceFromDrawer)\n ),\n // Stop animations while we're dragging\n stopClock(this.clock),\n ],\n [\n set(this.isSwiping, FALSE),\n set(this.touchX, 0),\n this.transitionTo(\n cond(\n this.manuallyTriggerSpring,\n this.isOpen,\n cond(\n or(\n and(\n greaterThan(abs(this.gestureX), SWIPE_DISTANCE_MINIMUM),\n greaterThan(abs(this.velocityX), this.swipeVelocityThreshold)\n ),\n greaterThan(abs(this.gestureX), this.swipeDistanceThreshold)\n ),\n cond(\n eq(this.drawerPosition, DIRECTION_LEFT),\n // If swiped to right, open the drawer, otherwise close it\n greaterThan(\n cond(eq(this.velocityX, 0), this.gestureX, this.velocityX),\n 0\n ),\n // If swiped to left, open the drawer, otherwise close it\n lessThan(\n cond(eq(this.velocityX, 0), this.gestureX, this.velocityX),\n 0\n )\n ),\n this.isOpen\n )\n )\n ),\n ]\n ),\n this.position,\n ]);\n\n private translateX = cond(\n eq(this.drawerPosition, DIRECTION_RIGHT),\n min(max(multiply(this.drawerWidth, -1), this.dragX), 0),\n max(min(this.drawerWidth, this.dragX), 0)\n );\n\n private progress = cond(\n // Check if the drawer width is available to avoid division by zero\n eq(this.drawerWidth, 0),\n 0,\n abs(divide(this.translateX, this.drawerWidth))\n );\n\n private handleGestureEvent = event([\n {\n nativeEvent: {\n x: this.touchX,\n translationX: this.gestureX,\n velocityX: this.velocityX,\n },\n },\n ]);\n\n private handleGestureStateChange = event([\n {\n nativeEvent: {\n state: (s: Animated.Value<number>) => set(this.gestureState, s),\n },\n },\n ]);\n\n private handleContainerLayout = (e: LayoutChangeEvent) =>\n this.containerWidth.setValue(e.nativeEvent.layout.width);\n\n private handleDrawerLayout = (e: LayoutChangeEvent) => {\n this.drawerWidth.setValue(e.nativeEvent.layout.width);\n this.toggleDrawer(this.props.open);\n\n // Until layout is available, drawer is hidden with opacity: 0 by default\n // Show it in the next frame when layout is available\n // If we don't delay it until the next frame, there's a visible flicker\n requestAnimationFrame(() =>\n requestAnimationFrame(() => this.drawerOpacity.setValue(1))\n );\n };\n\n private toggleDrawer = (open: boolean) => {\n if (this.currentOpenValue !== open) {\n this.nextIsOpen.setValue(open ? TRUE : FALSE);\n\n // This value will also be set shortly after as changing this.nextIsOpen changes this.isOpen\n // However, there's a race condition on Android, so we need to set a bit earlier\n this.currentOpenValue = open;\n }\n };\n\n private toggleStatusBar = (hidden: boolean) => {\n const { hideStatusBarOnOpen: hideStatusBar, statusBarAnimation } =\n this.props;\n\n if (hideStatusBar && this.isStatusBarHidden !== hidden) {\n this.isStatusBarHidden = hidden;\n StatusBar.setHidden(hidden, statusBarAnimation);\n }\n };\n\n render() {\n const {\n open,\n swipeEnabled,\n drawerPosition,\n drawerType,\n swipeEdgeWidth,\n drawerStyle,\n overlayStyle,\n renderDrawerContent,\n renderSceneContent,\n gestureHandlerProps,\n } = this.props;\n\n const isOpen = drawerType === 'permanent' ? true : open;\n const isRight = drawerPosition === 'right';\n\n const contentTranslateX =\n drawerType === 'front' ? ANIMATED_ZERO : this.translateX;\n\n const drawerTranslateX =\n drawerType === 'back'\n ? I18nManager.isRTL\n ? multiply(\n sub(this.containerWidth, this.drawerWidth),\n isRight ? 1 : -1\n )\n : ANIMATED_ZERO\n : this.translateX;\n\n const offset =\n drawerType === 'back'\n ? 0\n : I18nManager.isRTL\n ? '100%'\n : multiply(this.drawerWidth, -1);\n\n // FIXME: Currently hitSlop is broken when on Android when drawer is on right\n // https://github.com/software-mansion/react-native-gesture-handler/issues/569\n const hitSlop = isRight\n ? // Extend hitSlop to the side of the screen when drawer is closed\n // This lets the user drag the drawer from the side of the screen\n { right: 0, width: isOpen ? undefined : swipeEdgeWidth }\n : { left: 0, width: isOpen ? undefined : swipeEdgeWidth };\n\n const progress = drawerType === 'permanent' ? ANIMATED_ONE : this.progress;\n\n return (\n <DrawerProgressContext.Provider value={progress}>\n <PanGestureHandler\n activeOffsetX={[-SWIPE_DISTANCE_MINIMUM, SWIPE_DISTANCE_MINIMUM]}\n failOffsetY={[-SWIPE_DISTANCE_MINIMUM, SWIPE_DISTANCE_MINIMUM]}\n onGestureEvent={this.handleGestureEvent}\n onHandlerStateChange={this.handleGestureStateChange}\n hitSlop={hitSlop}\n enabled={drawerType !== 'permanent' && swipeEnabled}\n {...gestureHandlerProps}\n >\n <Animated.View\n onLayout={this.handleContainerLayout}\n style={[\n styles.main,\n {\n flexDirection:\n drawerType === 'permanent' && !isRight\n ? 'row-reverse'\n : 'row',\n },\n ]}\n >\n <Animated.View\n style={[\n styles.content,\n {\n transform:\n drawerType === 'permanent'\n ? // Reanimated needs the property to be present, but it results in Browser bug\n // https://bugs.chromium.org/p/chromium/issues/detail?id=20574\n []\n : [{ translateX: contentTranslateX }],\n },\n ]}\n >\n <View\n accessibilityElementsHidden={\n isOpen && drawerType !== 'permanent'\n }\n importantForAccessibility={\n isOpen && drawerType !== 'permanent'\n ? 'no-hide-descendants'\n : 'auto'\n }\n style={styles.content}\n >\n {renderSceneContent()}\n </View>\n {\n // Disable overlay if sidebar is permanent\n drawerType === 'permanent' ? null : (\n <Overlay\n progress={progress}\n onPress={() => this.toggleDrawer(false)}\n style={overlayStyle as any}\n accessibilityElementsHidden={!isOpen}\n importantForAccessibility={\n isOpen ? 'auto' : 'no-hide-descendants'\n }\n />\n )\n }\n </Animated.View>\n <Animated.Code\n // This is needed to make sure that container width updates with `setValue`\n // Without this, it won't update when not used in styles\n exec={this.containerWidth}\n />\n {drawerType === 'permanent' ? null : (\n <Animated.Code\n exec={block([\n onChange(this.manuallyTriggerSpring, [\n cond(eq(this.manuallyTriggerSpring, TRUE), [\n set(this.nextIsOpen, FALSE),\n call([], () => (this.currentOpenValue = false)),\n ]),\n ]),\n ])}\n />\n )}\n <Animated.View\n accessibilityViewIsModal={isOpen && drawerType !== 'permanent'}\n removeClippedSubviews={Platform.OS !== 'ios'}\n onLayout={this.handleDrawerLayout}\n style={[\n styles.container,\n {\n transform:\n drawerType === 'permanent'\n ? // Reanimated needs the property to be present, but it results in Browser bug\n // https://bugs.chromium.org/p/chromium/issues/detail?id=20574\n []\n : [{ translateX: drawerTranslateX }],\n opacity: this.drawerOpacity,\n },\n drawerType === 'permanent'\n ? // Without this, the `left`/`right` values don't get reset\n isRight\n ? { right: 0 }\n : { left: 0 }\n : [\n styles.nonPermanent,\n isRight ? { right: offset } : { left: offset },\n { zIndex: drawerType === 'back' ? -1 : 0 },\n ],\n drawerStyle as any,\n ]}\n >\n {renderDrawerContent()}\n </Animated.View>\n </Animated.View>\n </PanGestureHandler>\n </DrawerProgressContext.Provider>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n backgroundColor: 'white',\n maxWidth: '100%',\n },\n nonPermanent: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n width: DEFAULT_DRAWER_WIDTH,\n },\n content: {\n flex: 1,\n },\n main: {\n flex: 1,\n ...Platform.select({\n // FIXME: We need to hide `overflowX` on Web so the translated content doesn't show offscreen.\n // But adding `overflowX: 'hidden'` prevents content from collapsing the URL bar.\n web: null,\n default: { overflow: 'hidden' },\n }),\n },\n});\n"]}
@@ -217,7 +217,7 @@ function Drawer(_ref) {
217
217
  return {
218
218
  transform: drawerType === 'permanent' ? // Reanimated needs the property to be present, but it results in Browser bug
219
219
  // https://bugs.chromium.org/p/chromium/issues/detail?id=20574
220
- undefined : [{
220
+ [] : [{
221
221
  translateX: drawerType === 'back' ? 0 : translateX.value
222
222
  }]
223
223
  };
@@ -226,7 +226,7 @@ function Drawer(_ref) {
226
226
  return {
227
227
  transform: drawerType === 'permanent' ? // Reanimated needs the property to be present, but it results in Browser bug
228
228
  // https://bugs.chromium.org/p/chromium/issues/detail?id=20574
229
- undefined : [{
229
+ [] : [{
230
230
  translateX: drawerType === 'front' ? 0 : drawerPosition === 'left' ? drawerWidth + translateX.value : translateX.value - drawerWidth
231
231
  }]
232
232
  };