@react-navigation/material-top-tabs 8.0.0-alpha.15 → 8.0.0-alpha.17
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.
- package/lib/module/utils/useTabAnimation.js +1 -1
- package/lib/module/utils/useTabAnimation.js.map +1 -1
- package/lib/module/views/MaterialTopTabBar.js +56 -3
- package/lib/module/views/MaterialTopTabBar.js.map +1 -1
- package/lib/typescript/src/types.d.ts +5 -3
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/lib/typescript/src/views/MaterialTopTabBar.d.ts.map +1 -1
- package/package.json +7 -7
- package/src/types.tsx +8 -3
- package/src/utils/useTabAnimation.tsx +1 -1
- package/src/views/MaterialTopTabBar.tsx +71 -2
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { TabAnimationContext } from "./TabAnimationContext.js";
|
|
5
5
|
export function useTabAnimation() {
|
|
6
|
-
const animation = React.
|
|
6
|
+
const animation = React.use(TabAnimationContext);
|
|
7
7
|
if (animation === undefined) {
|
|
8
8
|
throw new Error("Couldn't find values for tab animation. Are you inside a screen in Material Top Tab navigator?");
|
|
9
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","TabAnimationContext","useTabAnimation","animation","
|
|
1
|
+
{"version":3,"names":["React","TabAnimationContext","useTabAnimation","animation","use","undefined","Error"],"sourceRoot":"../../../src","sources":["utils/useTabAnimation.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,mBAAmB,QAAQ,0BAAuB;AAE3D,OAAO,SAASC,eAAeA,CAAA,EAAG;EAChC,MAAMC,SAAS,GAAGH,KAAK,CAACI,GAAG,CAACH,mBAAmB,CAAC;EAEhD,IAAIE,SAAS,KAAKE,SAAS,EAAE;IAC3B,MAAM,IAAIC,KAAK,CACb,gGACF,CAAC;EACH;EAEA,OAAOH,SAAS;AAClB","ignoreList":[]}
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
import { Text } from '@react-navigation/elements';
|
|
4
4
|
import { Color } from '@react-navigation/elements/internal';
|
|
5
|
-
import { useLinkBuilder, useLocale, useTheme } from '@react-navigation/native';
|
|
6
|
-
import
|
|
5
|
+
import { MaterialSymbol, SFSymbol, useLinkBuilder, useLocale, useTheme } from '@react-navigation/native';
|
|
6
|
+
import React from 'react';
|
|
7
|
+
import { Image, StyleSheet } from 'react-native';
|
|
7
8
|
import { TabBar, TabBarIndicator } from 'react-native-tab-view';
|
|
8
9
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
10
|
const MaterialLabel = ({
|
|
@@ -61,12 +62,64 @@ export function MaterialTopTabBar({
|
|
|
61
62
|
tabBarAllowFontScaling,
|
|
62
63
|
tabBarLabelStyle
|
|
63
64
|
} = options;
|
|
65
|
+
let icon;
|
|
66
|
+
if (tabBarShowIcon === false) {
|
|
67
|
+
icon = undefined;
|
|
68
|
+
} else if (tabBarIcon) {
|
|
69
|
+
icon = ({
|
|
70
|
+
focused,
|
|
71
|
+
color,
|
|
72
|
+
size
|
|
73
|
+
}) => {
|
|
74
|
+
const iconValue = typeof tabBarIcon === 'function' ? tabBarIcon({
|
|
75
|
+
focused,
|
|
76
|
+
color,
|
|
77
|
+
size
|
|
78
|
+
}) : tabBarIcon;
|
|
79
|
+
if (/*#__PURE__*/React.isValidElement(iconValue)) {
|
|
80
|
+
return iconValue;
|
|
81
|
+
}
|
|
82
|
+
if (typeof iconValue === 'object' && iconValue != null && 'type' in iconValue) {
|
|
83
|
+
switch (iconValue.type) {
|
|
84
|
+
case 'image':
|
|
85
|
+
return /*#__PURE__*/_jsx(Image, {
|
|
86
|
+
source: iconValue.source,
|
|
87
|
+
style: {
|
|
88
|
+
width: size,
|
|
89
|
+
height: size,
|
|
90
|
+
tintColor: iconValue.tinted === false ? undefined : color
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
case 'sfSymbol':
|
|
94
|
+
return /*#__PURE__*/_jsx(SFSymbol, {
|
|
95
|
+
name: iconValue.name,
|
|
96
|
+
size: size,
|
|
97
|
+
color: color
|
|
98
|
+
});
|
|
99
|
+
case 'materialSymbol':
|
|
100
|
+
return /*#__PURE__*/_jsx(MaterialSymbol, {
|
|
101
|
+
name: iconValue.name,
|
|
102
|
+
variant: iconValue.variant,
|
|
103
|
+
weight: iconValue.weight,
|
|
104
|
+
size: size,
|
|
105
|
+
color: color
|
|
106
|
+
});
|
|
107
|
+
default:
|
|
108
|
+
{
|
|
109
|
+
const _exhaustiveCheck = iconValue;
|
|
110
|
+
return _exhaustiveCheck;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return null;
|
|
115
|
+
};
|
|
116
|
+
}
|
|
64
117
|
return [route.key, {
|
|
65
118
|
href: buildHref(route.name, route.params),
|
|
66
119
|
testID: tabBarButtonTestID,
|
|
67
120
|
accessibilityLabel: tabBarAccessibilityLabel,
|
|
68
121
|
badge: tabBarBadge,
|
|
69
|
-
icon
|
|
122
|
+
icon,
|
|
70
123
|
label: tabBarShowLabel === false ? undefined : typeof tabBarLabel === 'function' ? ({
|
|
71
124
|
labelText,
|
|
72
125
|
color
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Text","Color","useLinkBuilder","useLocale","useTheme","StyleSheet","TabBar","TabBarIndicator","jsx","_jsx","MaterialLabel","color","labelText","style","allowFontScaling","fonts","medium","styles","label","children","renderLabelDefault","props","MaterialTopTabBar","state","navigation","descriptors","rest","colors","dark","direction","buildHref","focusedOptions","routes","index","key","options","activeColor","tabBarActiveTintColor","text","inactiveColor","tabBarInactiveTintColor","alpha","string","tabBarOptions","Object","fromEntries","map","route","title","tabBarLabel","tabBarButtonTestID","tabBarAccessibilityLabel","tabBarBadge","tabBarShowIcon","tabBarShowLabel","tabBarIcon","tabBarAllowFontScaling","tabBarLabelStyle","
|
|
1
|
+
{"version":3,"names":["Text","Color","MaterialSymbol","SFSymbol","useLinkBuilder","useLocale","useTheme","React","Image","StyleSheet","TabBar","TabBarIndicator","jsx","_jsx","MaterialLabel","color","labelText","style","allowFontScaling","fonts","medium","styles","label","children","renderLabelDefault","props","MaterialTopTabBar","state","navigation","descriptors","rest","colors","dark","direction","buildHref","focusedOptions","routes","index","key","options","activeColor","tabBarActiveTintColor","text","inactiveColor","tabBarInactiveTintColor","alpha","string","tabBarOptions","Object","fromEntries","map","route","title","tabBarLabel","tabBarButtonTestID","tabBarAccessibilityLabel","tabBarBadge","tabBarShowIcon","tabBarShowLabel","tabBarIcon","tabBarAllowFontScaling","tabBarLabelStyle","icon","undefined","focused","size","iconValue","isValidElement","type","source","width","height","tintColor","tinted","name","variant","weight","_exhaustiveCheck","href","params","testID","accessibilityLabel","badge","labelAllowFontScaling","labelStyle","navigationState","scrollEnabled","tabBarScrollEnabled","bounces","tabBarBounces","pressColor","tabBarPressColor","pressOpacity","tabBarPressOpacity","tabStyle","tabBarItemStyle","indicatorStyle","backgroundColor","primary","tabBarIndicatorStyle","gap","tabBarGap","android_ripple","tabBarAndroidRipple","indicatorContainerStyle","tabBarIndicatorContainerStyle","contentContainerStyle","tabBarContentContainerStyle","card","tabBarStyle","onTabPress","preventDefault","event","emit","target","canPreventDefault","defaultPrevented","onTabLongPress","renderIndicator","tabBarIndicator","create","textAlign","fontSize","margin"],"sourceRoot":"../../../src","sources":["views/MaterialTopTabBar.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Icon } from '@react-navigation/elements';
|
|
1
2
|
import type { DefaultNavigatorOptions, Descriptor, NavigationHelpers, NavigationProp, ParamListBase, Route, RouteProp, TabActionHelpers, TabNavigationState, TabRouterOptions, Theme } from '@react-navigation/native';
|
|
2
3
|
import type React from 'react';
|
|
3
4
|
import type { Animated, ColorValue, PressableAndroidRippleConfig, StyleProp, TextStyle, ViewStyle } from 'react-native';
|
|
@@ -68,12 +69,13 @@ export type MaterialTopTabNavigationOptions = {
|
|
|
68
69
|
*/
|
|
69
70
|
tabBarShowLabel?: boolean | undefined;
|
|
70
71
|
/**
|
|
71
|
-
*
|
|
72
|
+
* Icon to display for the tab.
|
|
72
73
|
*/
|
|
73
|
-
tabBarIcon?: ((props: {
|
|
74
|
+
tabBarIcon?: Icon | ((props: {
|
|
74
75
|
focused: boolean;
|
|
75
76
|
color: ColorValue;
|
|
76
|
-
|
|
77
|
+
size: number;
|
|
78
|
+
}) => Icon | React.ReactNode);
|
|
77
79
|
/**
|
|
78
80
|
* Whether the tab icon should be visible. Defaults to `false`.
|
|
79
81
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,KAAK,EACL,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,EACN,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EACV,4BAA4B,EAC5B,SAAS,EACT,SAAS,EACT,SAAS,EACV,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE/E,MAAM,MAAM,gCAAgC,GAAG;IAC7C;;OAEG;IACH,QAAQ,EAAE;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,iBAAiB,EAAE,IAAI,CAAA;KAAE,CAAC;IACvD;;OAEG;IACH,YAAY,EAAE;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;IAClC;;OAEG;IACH,UAAU,EAAE;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;IAChC;;OAEG;IACH,QAAQ,EAAE;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG,iBAAiB,CAC7D,aAAa,EACb,gCAAgC,CACjC,GACC,gBAAgB,CAAC,aAAa,CAAC,CAAC;AAElC,MAAM,MAAM,4BAA4B,CACtC,SAAS,SAAS,aAAa,EAC/B,SAAS,SAAS,MAAM,SAAS,GAAG,MAAM,SAAS,IACjD,cAAc,CAChB,SAAS,EACT,SAAS,EACT,kBAAkB,CAAC,SAAS,CAAC,EAC7B,+BAA+B,EAC/B,gCAAgC,EAChC,gBAAgB,CAAC,SAAS,CAAC,CAC5B,CAAC;AAEF,MAAM,MAAM,yBAAyB,CACnC,SAAS,SAAS,aAAa,EAC/B,SAAS,SAAS,MAAM,SAAS,GAAG,MAAM,SAAS,IACjD;IACF,UAAU,EAAE,4BAA4B,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC/D,KAAK,EAAE,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,yBAAyB,CACnC,SAAS,SAAS,aAAa,EAC/B,SAAS,SAAS,MAAM,SAAS,GAAG,MAAM,SAAS,IACjD,yBAAyB,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG;IACpD,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAE3B;;;;;OAKG;IACH,WAAW,CAAC,EACR,MAAM,GACN,CAAC,CAAC,KAAK,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,EAAE,UAAU,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;KAClB,KAAK,KAAK,CAAC,SAAS,CAAC,GACtB,SAAS,CAAC;IAEd;;;OAGG;IACH,wBAAwB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAE9C;;OAEG;IACH,sBAAsB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAE7C;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAEtC;;OAEG;IACH,UAAU,CAAC,EACP,CAAC,CAAC,KAAK,EAAE;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MaterialTopTabBar.d.ts","sourceRoot":"","sources":["../../../../src/views/MaterialTopTabBar.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MaterialTopTabBar.d.ts","sourceRoot":"","sources":["../../../../src/views/MaterialTopTabBar.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AA4BvD,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,UAAU,EACV,WAAW,EACX,GAAG,IAAI,EACR,EAAE,sBAAsB,2CAsLxB"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-navigation/material-top-tabs",
|
|
3
3
|
"description": "Integration for the animated tab view component from react-native-tab-view",
|
|
4
|
-
"version": "8.0.0-alpha.
|
|
4
|
+
"version": "8.0.0-alpha.17",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react-native-component",
|
|
7
7
|
"react-component",
|
|
@@ -46,13 +46,13 @@
|
|
|
46
46
|
"clean": "del lib"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@react-navigation/elements": "^3.0.0-alpha.
|
|
49
|
+
"@react-navigation/elements": "^3.0.0-alpha.17",
|
|
50
50
|
"color": "^4.2.3",
|
|
51
|
-
"react-native-tab-view": "^5.0.0-alpha.
|
|
51
|
+
"react-native-tab-view": "^5.0.0-alpha.4"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@jest/globals": "^30.0.0",
|
|
55
|
-
"@react-navigation/native": "^8.0.0-alpha.
|
|
55
|
+
"@react-navigation/native": "^8.0.0-alpha.16",
|
|
56
56
|
"@testing-library/react-native": "^13.3.3",
|
|
57
57
|
"@types/react": "~19.2.2",
|
|
58
58
|
"del-cli": "^6.0.0",
|
|
@@ -65,8 +65,8 @@
|
|
|
65
65
|
"typescript": "^5.9.2"
|
|
66
66
|
},
|
|
67
67
|
"peerDependencies": {
|
|
68
|
-
"@react-navigation/native": "^8.0.0-alpha.
|
|
69
|
-
"react": ">= 19.
|
|
68
|
+
"@react-navigation/native": "^8.0.0-alpha.16",
|
|
69
|
+
"react": ">= 19.2.0",
|
|
70
70
|
"react-native": "*",
|
|
71
71
|
"react-native-pager-view": ">= 7.0.0",
|
|
72
72
|
"react-native-safe-area-context": ">= 5.5.0"
|
|
@@ -89,5 +89,5 @@
|
|
|
89
89
|
]
|
|
90
90
|
]
|
|
91
91
|
},
|
|
92
|
-
"gitHead": "
|
|
92
|
+
"gitHead": "ad19d4f8a1197038efa52c70416bcb369e370daf"
|
|
93
93
|
}
|
package/src/types.tsx
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Icon } from '@react-navigation/elements';
|
|
1
2
|
import type {
|
|
2
3
|
DefaultNavigatorOptions,
|
|
3
4
|
Descriptor,
|
|
@@ -112,11 +113,15 @@ export type MaterialTopTabNavigationOptions = {
|
|
|
112
113
|
tabBarShowLabel?: boolean | undefined;
|
|
113
114
|
|
|
114
115
|
/**
|
|
115
|
-
*
|
|
116
|
+
* Icon to display for the tab.
|
|
116
117
|
*/
|
|
117
118
|
tabBarIcon?:
|
|
118
|
-
|
|
|
119
|
-
|
|
|
119
|
+
| Icon
|
|
120
|
+
| ((props: {
|
|
121
|
+
focused: boolean;
|
|
122
|
+
color: ColorValue;
|
|
123
|
+
size: number;
|
|
124
|
+
}) => Icon | React.ReactNode);
|
|
120
125
|
|
|
121
126
|
/**
|
|
122
127
|
* Whether the tab icon should be visible. Defaults to `false`.
|
|
@@ -3,7 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
import { TabAnimationContext } from './TabAnimationContext';
|
|
4
4
|
|
|
5
5
|
export function useTabAnimation() {
|
|
6
|
-
const animation = React.
|
|
6
|
+
const animation = React.use(TabAnimationContext);
|
|
7
7
|
|
|
8
8
|
if (animation === undefined) {
|
|
9
9
|
throw new Error(
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import { Text } from '@react-navigation/elements';
|
|
2
2
|
import { Color } from '@react-navigation/elements/internal';
|
|
3
3
|
import {
|
|
4
|
+
MaterialSymbol,
|
|
4
5
|
type ParamListBase,
|
|
6
|
+
SFSymbol,
|
|
5
7
|
type TabNavigationState,
|
|
6
8
|
useLinkBuilder,
|
|
7
9
|
useLocale,
|
|
8
10
|
useTheme,
|
|
9
11
|
} from '@react-navigation/native';
|
|
10
|
-
import
|
|
12
|
+
import React from 'react';
|
|
13
|
+
import { type ColorValue, Image, StyleSheet } from 'react-native';
|
|
11
14
|
import {
|
|
12
15
|
type Route,
|
|
13
16
|
TabBar,
|
|
@@ -79,6 +82,72 @@ export function MaterialTopTabBar({
|
|
|
79
82
|
tabBarLabelStyle,
|
|
80
83
|
} = options;
|
|
81
84
|
|
|
85
|
+
let icon;
|
|
86
|
+
|
|
87
|
+
if (tabBarShowIcon === false) {
|
|
88
|
+
icon = undefined;
|
|
89
|
+
} else if (tabBarIcon) {
|
|
90
|
+
icon = ({
|
|
91
|
+
focused,
|
|
92
|
+
color,
|
|
93
|
+
size,
|
|
94
|
+
}: {
|
|
95
|
+
focused: boolean;
|
|
96
|
+
color: ColorValue;
|
|
97
|
+
size: number;
|
|
98
|
+
}) => {
|
|
99
|
+
const iconValue =
|
|
100
|
+
typeof tabBarIcon === 'function'
|
|
101
|
+
? tabBarIcon({ focused, color, size })
|
|
102
|
+
: tabBarIcon;
|
|
103
|
+
|
|
104
|
+
if (React.isValidElement(iconValue)) {
|
|
105
|
+
return iconValue;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
if (
|
|
109
|
+
typeof iconValue === 'object' &&
|
|
110
|
+
iconValue != null &&
|
|
111
|
+
'type' in iconValue
|
|
112
|
+
) {
|
|
113
|
+
switch (iconValue.type) {
|
|
114
|
+
case 'image':
|
|
115
|
+
return (
|
|
116
|
+
<Image
|
|
117
|
+
source={iconValue.source}
|
|
118
|
+
style={{
|
|
119
|
+
width: size,
|
|
120
|
+
height: size,
|
|
121
|
+
tintColor: iconValue.tinted === false ? undefined : color,
|
|
122
|
+
}}
|
|
123
|
+
/>
|
|
124
|
+
);
|
|
125
|
+
case 'sfSymbol':
|
|
126
|
+
return (
|
|
127
|
+
<SFSymbol name={iconValue.name} size={size} color={color} />
|
|
128
|
+
);
|
|
129
|
+
case 'materialSymbol':
|
|
130
|
+
return (
|
|
131
|
+
<MaterialSymbol
|
|
132
|
+
name={iconValue.name}
|
|
133
|
+
variant={iconValue.variant}
|
|
134
|
+
weight={iconValue.weight}
|
|
135
|
+
size={size}
|
|
136
|
+
color={color}
|
|
137
|
+
/>
|
|
138
|
+
);
|
|
139
|
+
default: {
|
|
140
|
+
const _exhaustiveCheck: never = iconValue;
|
|
141
|
+
|
|
142
|
+
return _exhaustiveCheck;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
return null;
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
|
|
82
151
|
return [
|
|
83
152
|
route.key,
|
|
84
153
|
{
|
|
@@ -86,7 +155,7 @@ export function MaterialTopTabBar({
|
|
|
86
155
|
testID: tabBarButtonTestID,
|
|
87
156
|
accessibilityLabel: tabBarAccessibilityLabel,
|
|
88
157
|
badge: tabBarBadge,
|
|
89
|
-
icon
|
|
158
|
+
icon,
|
|
90
159
|
label:
|
|
91
160
|
tabBarShowLabel === false
|
|
92
161
|
? undefined
|