expo-router 6.0.0-beta.5 → 6.0.0-beta.6
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/build/native-tabs/NativeBottomTabs/NativeTabTrigger.d.ts +7 -2
- package/build/native-tabs/NativeBottomTabs/NativeTabTrigger.d.ts.map +1 -1
- package/build/native-tabs/NativeBottomTabs/NativeTabTrigger.js +123 -50
- package/build/native-tabs/NativeBottomTabs/NativeTabTrigger.js.map +1 -1
- package/build/native-tabs/NativeBottomTabs/NativeTabs.d.ts +3 -2
- package/build/native-tabs/NativeBottomTabs/NativeTabs.d.ts.map +1 -1
- package/build/native-tabs/NativeBottomTabs/NativeTabsTriggerTabBar.d.ts +24 -0
- package/build/native-tabs/NativeBottomTabs/NativeTabsTriggerTabBar.d.ts.map +1 -0
- package/build/native-tabs/NativeBottomTabs/NativeTabsTriggerTabBar.js +28 -0
- package/build/native-tabs/NativeBottomTabs/NativeTabsTriggerTabBar.js.map +1 -0
- package/build/native-tabs/NativeBottomTabs/NativeTabsView.d.ts.map +1 -1
- package/build/native-tabs/NativeBottomTabs/NativeTabsView.js +78 -18
- package/build/native-tabs/NativeBottomTabs/NativeTabsView.js.map +1 -1
- package/build/native-tabs/NativeBottomTabs/NativeTabsView.web.d.ts.map +1 -1
- package/build/native-tabs/NativeBottomTabs/NativeTabsView.web.js +57 -27
- package/build/native-tabs/NativeBottomTabs/NativeTabsView.web.js.map +1 -1
- package/build/native-tabs/NativeBottomTabs/appearance.d.ts +20 -0
- package/build/native-tabs/NativeBottomTabs/appearance.d.ts.map +1 -0
- package/build/native-tabs/NativeBottomTabs/appearance.js +131 -0
- package/build/native-tabs/NativeBottomTabs/appearance.js.map +1 -0
- package/build/native-tabs/NativeBottomTabs/types.d.ts +238 -77
- package/build/native-tabs/NativeBottomTabs/types.d.ts.map +1 -1
- package/build/native-tabs/NativeBottomTabs/types.js +14 -0
- package/build/native-tabs/NativeBottomTabs/types.js.map +1 -1
- package/build/native-tabs/NativeBottomTabs/utils.d.ts +2 -1
- package/build/native-tabs/NativeBottomTabs/utils.d.ts.map +1 -1
- package/build/native-tabs/NativeBottomTabs/utils.js +7 -0
- package/build/native-tabs/NativeBottomTabs/utils.js.map +1 -1
- package/build/native-tabs/common/elements.d.ts +41 -21
- package/build/native-tabs/common/elements.d.ts.map +1 -1
- package/build/native-tabs/common/elements.js.map +1 -1
- package/build/native-tabs/index.d.ts +2 -1
- package/build/native-tabs/index.d.ts.map +1 -1
- package/build/native-tabs/index.js +3 -1
- package/build/native-tabs/index.js.map +1 -1
- package/ios/ExpoHead.podspec +2 -0
- package/package.json +5 -5
- package/plugin/tsconfig.tsbuildinfo +0 -1
|
@@ -47,6 +47,7 @@ function NativeTabsView(props) {
|
|
|
47
47
|
const { routes } = state;
|
|
48
48
|
const defaultTabName = (0, react_1.useMemo)(() => state.routes[focusedIndex]?.name ?? state.routes[0].name, []);
|
|
49
49
|
const value = state.routes[focusedIndex]?.name ?? state.routes[0].name;
|
|
50
|
+
const currentTabKey = state.routes[focusedIndex]?.key ?? state.routes[0].key;
|
|
50
51
|
const items = routes
|
|
51
52
|
.filter(({ key }) => (0, utils_1.shouldTabBeVisible)(descriptors[key].options))
|
|
52
53
|
.map((route) => (<TabItem key={route.key} route={route} title={descriptors[route.key].options.title ?? route.name} badgeValue={descriptors[route.key].options.badgeValue}/>));
|
|
@@ -65,7 +66,7 @@ function NativeTabsView(props) {
|
|
|
65
66
|
name: value,
|
|
66
67
|
},
|
|
67
68
|
});
|
|
68
|
-
}} style={convertNativeTabsPropsToStyleVars(props
|
|
69
|
+
}} style={convertNativeTabsPropsToStyleVars(props, descriptors[currentTabKey]?.options)}>
|
|
69
70
|
<react_tabs_1.TabsList aria-label="Main" className={native_tabs_module_css_1.default.navigationMenuRoot}>
|
|
70
71
|
{items}
|
|
71
72
|
</react_tabs_1.TabsList>
|
|
@@ -82,46 +83,75 @@ function TabItem(props) {
|
|
|
82
83
|
</div>)}
|
|
83
84
|
</react_tabs_1.TabsTrigger>);
|
|
84
85
|
}
|
|
85
|
-
function convertNativeTabsPropsToStyleVars(
|
|
86
|
+
function convertNativeTabsPropsToStyleVars(props, currentTabOptions) {
|
|
86
87
|
const vars = {};
|
|
87
|
-
if (!
|
|
88
|
+
if (!props) {
|
|
88
89
|
return vars;
|
|
89
90
|
}
|
|
90
|
-
|
|
91
|
-
|
|
91
|
+
const { labelStyle } = props;
|
|
92
|
+
const optionsLabelStyle = currentTabOptions?.labelStyle;
|
|
93
|
+
if (optionsLabelStyle?.fontFamily) {
|
|
94
|
+
vars['--expo-router-tabs-font-family'] = String(optionsLabelStyle.fontFamily);
|
|
92
95
|
}
|
|
93
|
-
if (
|
|
94
|
-
vars['--expo-router-tabs-font-
|
|
96
|
+
else if (labelStyle?.fontFamily) {
|
|
97
|
+
vars['--expo-router-tabs-font-family'] = String(labelStyle.fontFamily);
|
|
95
98
|
}
|
|
96
|
-
if (
|
|
97
|
-
vars['--expo-router-tabs-font-
|
|
99
|
+
if (optionsLabelStyle?.fontSize) {
|
|
100
|
+
vars['--expo-router-tabs-font-size'] = String(optionsLabelStyle.fontSize);
|
|
98
101
|
}
|
|
99
|
-
if (
|
|
100
|
-
vars['--expo-router-tabs-font-
|
|
102
|
+
else if (labelStyle?.fontSize) {
|
|
103
|
+
vars['--expo-router-tabs-font-size'] = String(labelStyle.fontSize);
|
|
101
104
|
}
|
|
102
|
-
if (
|
|
103
|
-
vars['--expo-router-tabs-
|
|
105
|
+
if (optionsLabelStyle?.fontWeight) {
|
|
106
|
+
vars['--expo-router-tabs-font-weight'] = String(optionsLabelStyle.fontWeight);
|
|
104
107
|
}
|
|
105
|
-
if (
|
|
106
|
-
vars['--expo-router-tabs-
|
|
108
|
+
else if (labelStyle?.fontWeight) {
|
|
109
|
+
vars['--expo-router-tabs-font-weight'] = String(labelStyle.fontWeight);
|
|
107
110
|
}
|
|
108
|
-
|
|
109
|
-
vars['--expo-router-tabs-
|
|
111
|
+
if (optionsLabelStyle?.fontStyle) {
|
|
112
|
+
vars['--expo-router-tabs-font-style'] = String(optionsLabelStyle.fontStyle);
|
|
110
113
|
}
|
|
111
|
-
if (
|
|
112
|
-
vars['--expo-router-tabs-
|
|
114
|
+
else if (labelStyle?.fontStyle) {
|
|
115
|
+
vars['--expo-router-tabs-font-style'] = String(labelStyle.fontStyle);
|
|
113
116
|
}
|
|
114
|
-
if (
|
|
115
|
-
vars['--expo-router-tabs-
|
|
117
|
+
if (optionsLabelStyle?.color) {
|
|
118
|
+
vars['--expo-router-tabs-text-color'] = String(optionsLabelStyle.color);
|
|
116
119
|
}
|
|
117
|
-
if (
|
|
118
|
-
vars['--expo-router-tabs-
|
|
120
|
+
else if (labelStyle?.color) {
|
|
121
|
+
vars['--expo-router-tabs-text-color'] = String(labelStyle.color);
|
|
119
122
|
}
|
|
120
|
-
if (
|
|
121
|
-
vars['--expo-router-tabs-
|
|
123
|
+
if (currentTabOptions?.selectedLabelStyle?.color) {
|
|
124
|
+
vars['--expo-router-tabs-active-text-color'] = String(currentTabOptions.selectedLabelStyle.color);
|
|
122
125
|
}
|
|
123
|
-
if (
|
|
124
|
-
vars['--expo-router-tabs-
|
|
126
|
+
else if (props.tintColor) {
|
|
127
|
+
vars['--expo-router-tabs-active-text-color'] = String(props.tintColor);
|
|
128
|
+
}
|
|
129
|
+
if (currentTabOptions?.selectedLabelStyle?.fontSize) {
|
|
130
|
+
vars['--expo-router-tabs-active-font-size'] = String(currentTabOptions.selectedLabelStyle.fontSize);
|
|
131
|
+
}
|
|
132
|
+
if (currentTabOptions?.indicatorColor) {
|
|
133
|
+
vars['--expo-router-tabs-active-background-color'] = String(currentTabOptions.indicatorColor);
|
|
134
|
+
}
|
|
135
|
+
else if (props.indicatorColor) {
|
|
136
|
+
vars['--expo-router-tabs-active-background-color'] = String(props.indicatorColor);
|
|
137
|
+
}
|
|
138
|
+
if (currentTabOptions?.backgroundColor) {
|
|
139
|
+
vars['--expo-router-tabs-background-color'] = String(currentTabOptions.backgroundColor);
|
|
140
|
+
}
|
|
141
|
+
else if (props.backgroundColor) {
|
|
142
|
+
vars['--expo-router-tabs-background-color'] = String(props.backgroundColor);
|
|
143
|
+
}
|
|
144
|
+
if (currentTabOptions?.badgeBackgroundColor) {
|
|
145
|
+
vars['--expo-router-tabs-badge-background-color'] = String(currentTabOptions.badgeBackgroundColor);
|
|
146
|
+
}
|
|
147
|
+
else if (props.badgeBackgroundColor) {
|
|
148
|
+
vars['--expo-router-tabs-badge-background-color'] = String(props.badgeBackgroundColor);
|
|
149
|
+
}
|
|
150
|
+
if (currentTabOptions?.badgeTextColor) {
|
|
151
|
+
vars['--expo-router-tabs-badge-text-color'] = String(currentTabOptions.badgeTextColor);
|
|
152
|
+
}
|
|
153
|
+
else if (props.badgeTextColor) {
|
|
154
|
+
vars['--expo-router-tabs-badge-text-color'] = String(props.badgeTextColor);
|
|
125
155
|
}
|
|
126
156
|
return vars;
|
|
127
157
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeTabsView.web.js","sourceRoot":"","sources":["../../../src/native-tabs/NativeBottomTabs/NativeTabsView.web.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Tabs, TabsContent, TabsList, TabsTrigger } from '@radix-ui/react-tabs';\nimport React, { useMemo } from 'react';\n\nimport type { NativeTabsViewProps } from './types';\nimport { shouldTabBeVisible } from './utils';\nimport nativeTabsStyles from '../../../assets/native-tabs.module.css';\n\nexport function NativeTabsView(props: NativeTabsViewProps) {\n const { builder, focusedIndex } = props;\n const { state, descriptors, navigation } = builder;\n const { routes } = state;\n const defaultTabName = useMemo(\n () => state.routes[focusedIndex]?.name ?? state.routes[0].name,\n []\n );\n const value = state.routes[focusedIndex]?.name ?? state.routes[0].name;\n\n const items = routes\n .filter(({ key }) => shouldTabBeVisible(descriptors[key].options))\n .map((route) => (\n <TabItem\n key={route.key}\n route={route}\n title={descriptors[route.key].options.title ?? route.name}\n badgeValue={descriptors[route.key].options.badgeValue}\n />\n ));\n const children = routes\n .filter(({ key }) => shouldTabBeVisible(descriptors[key].options))\n .map((route) => {\n return (\n <TabsContent\n key={route.name}\n value={route.name}\n className={nativeTabsStyles.tabContent}\n forceMount>\n {descriptors[route.key].render()}\n </TabsContent>\n );\n });\n\n return (\n <Tabs\n className={nativeTabsStyles.nativeTabsContainer}\n defaultValue={defaultTabName}\n value={value}\n onValueChange={(value) => {\n navigation.dispatch({\n type: 'JUMP_TO',\n target: state.key,\n payload: {\n name: value,\n },\n });\n }}\n style={convertNativeTabsPropsToStyleVars(props.style)}>\n <TabsList aria-label=\"Main\" className={nativeTabsStyles.navigationMenuRoot}>\n {items}\n </TabsList>\n {children}\n </Tabs>\n );\n}\n\ninterface TabItemProps {\n title: string;\n badgeValue?: string;\n route: { name: string };\n}\n\nfunction TabItem(props: TabItemProps) {\n const { title, badgeValue, route } = props;\n const isBadgeEmpty = badgeValue === ' ';\n\n return (\n <TabsTrigger value={route.name} className={nativeTabsStyles.navigationMenuTrigger}>\n <span className={nativeTabsStyles.tabText}>{title}</span>\n {badgeValue && (\n <div\n className={`${nativeTabsStyles.tabBadge} ${isBadgeEmpty ? nativeTabsStyles.emptyTabBadge : ''}`}>\n {badgeValue}\n </div>\n )}\n </TabsTrigger>\n );\n}\n\nfunction convertNativeTabsPropsToStyleVars(\n style: NativeTabsViewProps['style'] | undefined\n): Record<string, string | undefined> {\n const vars: Record<`--expo-router-tabs-${string}`, string | undefined> = {};\n if (!style) {\n return vars;\n }\n if (style.fontFamily) {\n vars['--expo-router-tabs-font-family'] = String(style.fontFamily);\n }\n if (style.fontSize) {\n vars['--expo-router-tabs-font-size'] = String(style.fontSize);\n }\n if (style.fontWeight) {\n vars['--expo-router-tabs-font-weight'] = String(style.fontWeight);\n }\n if (style.fontStyle) {\n vars['--expo-router-tabs-font-style'] = String(style.fontStyle);\n }\n if (style.color) {\n vars['--expo-router-tabs-text-color'] = String(style.color);\n }\n if (style['&:active']?.color) {\n vars['--expo-router-tabs-active-text-color'] = String(style['&:active'].color);\n } else if (style.tintColor) {\n vars['--expo-router-tabs-active-text-color'] = String(style.tintColor);\n }\n if (style['&:active']?.fontSize) {\n vars['--expo-router-tabs-active-font-size'] = String(style['&:active'].fontSize);\n }\n if (style['&:active']?.indicatorColor) {\n vars['--expo-router-tabs-active-background-color'] = String(style['&:active'].indicatorColor);\n }\n if (style.backgroundColor) {\n vars['--expo-router-tabs-background-color'] = String(style.backgroundColor);\n }\n if (style.badgeBackgroundColor) {\n vars['--expo-router-tabs-badge-background-color'] = String(style.badgeBackgroundColor);\n }\n if (style.badgeTextColor) {\n vars['--expo-router-tabs-badge-text-color'] = String(style.badgeTextColor);\n }\n return vars;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"NativeTabsView.web.js","sourceRoot":"","sources":["../../../src/native-tabs/NativeBottomTabs/NativeTabsView.web.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Tabs, TabsContent, TabsList, TabsTrigger } from '@radix-ui/react-tabs';\nimport React, { useMemo } from 'react';\n\nimport type { NativeTabOptions, NativeTabsViewProps } from './types';\nimport { shouldTabBeVisible } from './utils';\nimport nativeTabsStyles from '../../../assets/native-tabs.module.css';\n\nexport function NativeTabsView(props: NativeTabsViewProps) {\n const { builder, focusedIndex } = props;\n const { state, descriptors, navigation } = builder;\n const { routes } = state;\n const defaultTabName = useMemo(\n () => state.routes[focusedIndex]?.name ?? state.routes[0].name,\n []\n );\n const value = state.routes[focusedIndex]?.name ?? state.routes[0].name;\n const currentTabKey = state.routes[focusedIndex]?.key ?? state.routes[0].key;\n\n const items = routes\n .filter(({ key }) => shouldTabBeVisible(descriptors[key].options))\n .map((route) => (\n <TabItem\n key={route.key}\n route={route}\n title={descriptors[route.key].options.title ?? route.name}\n badgeValue={descriptors[route.key].options.badgeValue}\n />\n ));\n const children = routes\n .filter(({ key }) => shouldTabBeVisible(descriptors[key].options))\n .map((route) => {\n return (\n <TabsContent\n key={route.name}\n value={route.name}\n className={nativeTabsStyles.tabContent}\n forceMount>\n {descriptors[route.key].render()}\n </TabsContent>\n );\n });\n\n return (\n <Tabs\n className={nativeTabsStyles.nativeTabsContainer}\n defaultValue={defaultTabName}\n value={value}\n onValueChange={(value) => {\n navigation.dispatch({\n type: 'JUMP_TO',\n target: state.key,\n payload: {\n name: value,\n },\n });\n }}\n style={convertNativeTabsPropsToStyleVars(props, descriptors[currentTabKey]?.options)}>\n <TabsList aria-label=\"Main\" className={nativeTabsStyles.navigationMenuRoot}>\n {items}\n </TabsList>\n {children}\n </Tabs>\n );\n}\n\ninterface TabItemProps {\n title: string;\n badgeValue?: string;\n route: { name: string };\n}\n\nfunction TabItem(props: TabItemProps) {\n const { title, badgeValue, route } = props;\n const isBadgeEmpty = badgeValue === ' ';\n\n return (\n <TabsTrigger value={route.name} className={nativeTabsStyles.navigationMenuTrigger}>\n <span className={nativeTabsStyles.tabText}>{title}</span>\n {badgeValue && (\n <div\n className={`${nativeTabsStyles.tabBadge} ${isBadgeEmpty ? nativeTabsStyles.emptyTabBadge : ''}`}>\n {badgeValue}\n </div>\n )}\n </TabsTrigger>\n );\n}\n\nfunction convertNativeTabsPropsToStyleVars(\n props: NativeTabsViewProps | undefined,\n currentTabOptions: NativeTabOptions | undefined\n): Record<string, string | undefined> {\n const vars: Record<`--expo-router-tabs-${string}`, string | undefined> = {};\n if (!props) {\n return vars;\n }\n const { labelStyle } = props;\n const optionsLabelStyle = currentTabOptions?.labelStyle;\n if (optionsLabelStyle?.fontFamily) {\n vars['--expo-router-tabs-font-family'] = String(optionsLabelStyle.fontFamily);\n } else if (labelStyle?.fontFamily) {\n vars['--expo-router-tabs-font-family'] = String(labelStyle.fontFamily);\n }\n if (optionsLabelStyle?.fontSize) {\n vars['--expo-router-tabs-font-size'] = String(optionsLabelStyle.fontSize);\n } else if (labelStyle?.fontSize) {\n vars['--expo-router-tabs-font-size'] = String(labelStyle.fontSize);\n }\n if (optionsLabelStyle?.fontWeight) {\n vars['--expo-router-tabs-font-weight'] = String(optionsLabelStyle.fontWeight);\n } else if (labelStyle?.fontWeight) {\n vars['--expo-router-tabs-font-weight'] = String(labelStyle.fontWeight);\n }\n if (optionsLabelStyle?.fontStyle) {\n vars['--expo-router-tabs-font-style'] = String(optionsLabelStyle.fontStyle);\n } else if (labelStyle?.fontStyle) {\n vars['--expo-router-tabs-font-style'] = String(labelStyle.fontStyle);\n }\n if (optionsLabelStyle?.color) {\n vars['--expo-router-tabs-text-color'] = String(optionsLabelStyle.color);\n } else if (labelStyle?.color) {\n vars['--expo-router-tabs-text-color'] = String(labelStyle.color);\n }\n if (currentTabOptions?.selectedLabelStyle?.color) {\n vars['--expo-router-tabs-active-text-color'] = String(\n currentTabOptions.selectedLabelStyle.color\n );\n } else if (props.tintColor) {\n vars['--expo-router-tabs-active-text-color'] = String(props.tintColor);\n }\n if (currentTabOptions?.selectedLabelStyle?.fontSize) {\n vars['--expo-router-tabs-active-font-size'] = String(\n currentTabOptions.selectedLabelStyle.fontSize\n );\n }\n if (currentTabOptions?.indicatorColor) {\n vars['--expo-router-tabs-active-background-color'] = String(currentTabOptions.indicatorColor);\n } else if (props.indicatorColor) {\n vars['--expo-router-tabs-active-background-color'] = String(props.indicatorColor);\n }\n if (currentTabOptions?.backgroundColor) {\n vars['--expo-router-tabs-background-color'] = String(currentTabOptions.backgroundColor);\n } else if (props.backgroundColor) {\n vars['--expo-router-tabs-background-color'] = String(props.backgroundColor);\n }\n if (currentTabOptions?.badgeBackgroundColor) {\n vars['--expo-router-tabs-badge-background-color'] = String(\n currentTabOptions.badgeBackgroundColor\n );\n } else if (props.badgeBackgroundColor) {\n vars['--expo-router-tabs-badge-background-color'] = String(props.badgeBackgroundColor);\n }\n if (currentTabOptions?.badgeTextColor) {\n vars['--expo-router-tabs-badge-text-color'] = String(currentTabOptions.badgeTextColor);\n } else if (props.badgeTextColor) {\n vars['--expo-router-tabs-badge-text-color'] = String(props.badgeTextColor);\n }\n return vars;\n}\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ColorValue } from 'react-native';
|
|
2
|
+
import type { BottomTabsScreenAppearance, BottomTabsScreenItemStateAppearance } from 'react-native-screens';
|
|
3
|
+
import { type NativeTabOptions, type NativeTabsBlurEffect, type NativeTabsLabelStyle } from './types';
|
|
4
|
+
export declare function createStandardAppearanceFromOptions(options: NativeTabOptions, baseStandardAppearance: BottomTabsScreenAppearance): BottomTabsScreenAppearance;
|
|
5
|
+
export declare function createScrollEdgeAppearanceFromOptions(options: NativeTabOptions, baseScrollEdgeAppearance: BottomTabsScreenAppearance): BottomTabsScreenAppearance;
|
|
6
|
+
export interface AppearanceStyle extends NativeTabsLabelStyle {
|
|
7
|
+
iconColor?: ColorValue;
|
|
8
|
+
backgroundColor?: ColorValue | null;
|
|
9
|
+
blurEffect?: NativeTabsBlurEffect;
|
|
10
|
+
badgeBackgroundColor?: ColorValue;
|
|
11
|
+
titlePositionAdjustment?: {
|
|
12
|
+
horizontal?: number;
|
|
13
|
+
vertical?: number;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export declare function appendSelectedStyleToAppearance(selectedStyle: AppearanceStyle, appearance: BottomTabsScreenAppearance): BottomTabsScreenAppearance;
|
|
17
|
+
export declare function appendStyleToAppearance(style: AppearanceStyle, appearance: BottomTabsScreenAppearance, states: ('selected' | 'focused' | 'disabled' | 'normal')[]): BottomTabsScreenAppearance;
|
|
18
|
+
export declare function convertStyleToAppearance(style: AppearanceStyle | undefined): BottomTabsScreenAppearance;
|
|
19
|
+
export declare function convertStyleToItemStateAppearance(style: AppearanceStyle | undefined): BottomTabsScreenItemStateAppearance;
|
|
20
|
+
//# sourceMappingURL=appearance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appearance.d.ts","sourceRoot":"","sources":["../../../src/native-tabs/NativeBottomTabs/appearance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EACV,0BAA0B,EAE1B,mCAAmC,EACpC,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EAC1B,MAAM,SAAS,CAAC;AAEjB,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,gBAAgB,EACzB,sBAAsB,EAAE,0BAA0B,GACjD,0BAA0B,CAsB5B;AAED,wBAAgB,qCAAqC,CACnD,OAAO,EAAE,gBAAgB,EACzB,wBAAwB,EAAE,0BAA0B,GACnD,0BAA0B,CAsB5B;AAED,MAAM,WAAW,eAAgB,SAAQ,oBAAoB;IAC3D,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,eAAe,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IACpC,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,oBAAoB,CAAC,EAAE,UAAU,CAAC;IAClC,uBAAuB,CAAC,EAAE;QACxB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,wBAAgB,+BAA+B,CAC7C,aAAa,EAAE,eAAe,EAC9B,UAAU,EAAE,0BAA0B,GACrC,0BAA0B,CAE5B;AASD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,eAAe,EACtB,UAAU,EAAE,0BAA0B,EACtC,MAAM,EAAE,CAAC,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC,EAAE,GACzD,0BAA0B,CAoC5B;AAID,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,eAAe,GAAG,SAAS,GACjC,0BAA0B,CA2B5B;AAED,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,eAAe,GAAG,SAAS,GACjC,mCAAmC,CAyBrC"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createStandardAppearanceFromOptions = createStandardAppearanceFromOptions;
|
|
4
|
+
exports.createScrollEdgeAppearanceFromOptions = createScrollEdgeAppearanceFromOptions;
|
|
5
|
+
exports.appendSelectedStyleToAppearance = appendSelectedStyleToAppearance;
|
|
6
|
+
exports.appendStyleToAppearance = appendStyleToAppearance;
|
|
7
|
+
exports.convertStyleToAppearance = convertStyleToAppearance;
|
|
8
|
+
exports.convertStyleToItemStateAppearance = convertStyleToItemStateAppearance;
|
|
9
|
+
const types_1 = require("./types");
|
|
10
|
+
function createStandardAppearanceFromOptions(options, baseStandardAppearance) {
|
|
11
|
+
const appearance = appendStyleToAppearance({
|
|
12
|
+
...options.labelStyle,
|
|
13
|
+
iconColor: options.iconColor,
|
|
14
|
+
backgroundColor: options.backgroundColor,
|
|
15
|
+
blurEffect: options.blurEffect,
|
|
16
|
+
badgeBackgroundColor: options.badgeBackgroundColor,
|
|
17
|
+
titlePositionAdjustment: options.titlePositionAdjustment,
|
|
18
|
+
}, baseStandardAppearance, ['normal', 'focused', 'selected']);
|
|
19
|
+
return appendSelectedStyleToAppearance({
|
|
20
|
+
...(options.selectedLabelStyle ?? {}),
|
|
21
|
+
iconColor: options.selectedIconColor,
|
|
22
|
+
badgeBackgroundColor: options.selectedBadgeBackgroundColor,
|
|
23
|
+
titlePositionAdjustment: options.selectedTitlePositionAdjustment,
|
|
24
|
+
}, appearance);
|
|
25
|
+
}
|
|
26
|
+
function createScrollEdgeAppearanceFromOptions(options, baseScrollEdgeAppearance) {
|
|
27
|
+
const appearance = appendStyleToAppearance({
|
|
28
|
+
...options.labelStyle,
|
|
29
|
+
iconColor: options.iconColor,
|
|
30
|
+
blurEffect: options.disableTransparentOnScrollEdge ? options.blurEffect : 'none',
|
|
31
|
+
backgroundColor: options.disableTransparentOnScrollEdge ? options.backgroundColor : null,
|
|
32
|
+
badgeBackgroundColor: options.badgeBackgroundColor,
|
|
33
|
+
titlePositionAdjustment: options.titlePositionAdjustment,
|
|
34
|
+
}, baseScrollEdgeAppearance, ['normal', 'focused', 'selected']);
|
|
35
|
+
return appendSelectedStyleToAppearance({
|
|
36
|
+
...(options.selectedLabelStyle ?? {}),
|
|
37
|
+
iconColor: options.selectedIconColor,
|
|
38
|
+
badgeBackgroundColor: options.selectedBadgeBackgroundColor,
|
|
39
|
+
titlePositionAdjustment: options.selectedTitlePositionAdjustment,
|
|
40
|
+
}, appearance);
|
|
41
|
+
}
|
|
42
|
+
function appendSelectedStyleToAppearance(selectedStyle, appearance) {
|
|
43
|
+
return appendStyleToAppearance(selectedStyle, appearance, ['selected', 'focused']);
|
|
44
|
+
}
|
|
45
|
+
const EMPTY_APPEARANCE_ITEM = {
|
|
46
|
+
normal: {},
|
|
47
|
+
selected: {},
|
|
48
|
+
focused: {},
|
|
49
|
+
disabled: {},
|
|
50
|
+
};
|
|
51
|
+
function appendStyleToAppearance(style, appearance, states) {
|
|
52
|
+
let tabBarBlurEffect = style?.blurEffect;
|
|
53
|
+
if (tabBarBlurEffect && !supportedBlurEffectsSet.has(tabBarBlurEffect)) {
|
|
54
|
+
console.warn(`Unsupported blurEffect: ${tabBarBlurEffect}. Supported values are: ${types_1.SUPPORTED_BLUR_EFFECTS.map((effect) => `"${effect}"`).join(', ')}`);
|
|
55
|
+
tabBarBlurEffect = undefined;
|
|
56
|
+
}
|
|
57
|
+
const baseItemAppearance = appearance.stacked || appearance.inline || appearance.compactInline || {};
|
|
58
|
+
const styleAppearance = convertStyleToAppearance(style);
|
|
59
|
+
const newAppearances = states.map((state) => ({
|
|
60
|
+
key: state,
|
|
61
|
+
appearance: {
|
|
62
|
+
...baseItemAppearance.normal,
|
|
63
|
+
...baseItemAppearance[state],
|
|
64
|
+
...styleAppearance.stacked?.normal,
|
|
65
|
+
},
|
|
66
|
+
}));
|
|
67
|
+
const itemAppearance = {
|
|
68
|
+
...EMPTY_APPEARANCE_ITEM,
|
|
69
|
+
...baseItemAppearance,
|
|
70
|
+
...Object.fromEntries(newAppearances.map(({ key, appearance }) => [key, appearance])),
|
|
71
|
+
};
|
|
72
|
+
return {
|
|
73
|
+
stacked: itemAppearance,
|
|
74
|
+
inline: itemAppearance,
|
|
75
|
+
compactInline: itemAppearance,
|
|
76
|
+
tabBarBackgroundColor: style.backgroundColor === null
|
|
77
|
+
? undefined
|
|
78
|
+
: (style.backgroundColor ?? appearance.tabBarBackgroundColor),
|
|
79
|
+
tabBarBlurEffect: tabBarBlurEffect ?? appearance.tabBarBlurEffect,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
const supportedBlurEffectsSet = new Set(types_1.SUPPORTED_BLUR_EFFECTS);
|
|
83
|
+
function convertStyleToAppearance(style) {
|
|
84
|
+
if (!style) {
|
|
85
|
+
return {};
|
|
86
|
+
}
|
|
87
|
+
let blurEffect = style.blurEffect;
|
|
88
|
+
if (style.blurEffect && !supportedBlurEffectsSet.has(style.blurEffect)) {
|
|
89
|
+
console.warn(`Unsupported blurEffect: ${style.blurEffect}. Supported values are: ${types_1.SUPPORTED_BLUR_EFFECTS.map((effect) => `"${effect}"`).join(', ')}`);
|
|
90
|
+
blurEffect = undefined;
|
|
91
|
+
}
|
|
92
|
+
const stateAppearance = convertStyleToItemStateAppearance(style);
|
|
93
|
+
const itemAppearance = {
|
|
94
|
+
normal: stateAppearance,
|
|
95
|
+
selected: stateAppearance,
|
|
96
|
+
focused: stateAppearance,
|
|
97
|
+
disabled: {},
|
|
98
|
+
};
|
|
99
|
+
return {
|
|
100
|
+
inline: itemAppearance,
|
|
101
|
+
stacked: itemAppearance,
|
|
102
|
+
compactInline: itemAppearance,
|
|
103
|
+
tabBarBackgroundColor: style?.backgroundColor ?? undefined,
|
|
104
|
+
tabBarBlurEffect: blurEffect,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
function convertStyleToItemStateAppearance(style) {
|
|
108
|
+
if (!style) {
|
|
109
|
+
return {};
|
|
110
|
+
}
|
|
111
|
+
const stateAppearance = {
|
|
112
|
+
tabBarItemBadgeBackgroundColor: style.badgeBackgroundColor,
|
|
113
|
+
tabBarItemTitlePositionAdjustment: style.titlePositionAdjustment,
|
|
114
|
+
tabBarItemIconColor: style.iconColor,
|
|
115
|
+
tabBarItemTitleFontFamily: style.fontFamily,
|
|
116
|
+
tabBarItemTitleFontSize: style.fontSize,
|
|
117
|
+
// Only string values are accepted by rn-screens
|
|
118
|
+
tabBarItemTitleFontWeight: style?.fontWeight
|
|
119
|
+
? String(style.fontWeight)
|
|
120
|
+
: undefined,
|
|
121
|
+
tabBarItemTitleFontStyle: style.fontStyle,
|
|
122
|
+
tabBarItemTitleFontColor: style.color,
|
|
123
|
+
};
|
|
124
|
+
Object.keys(stateAppearance).forEach((key) => {
|
|
125
|
+
if (stateAppearance[key] === undefined) {
|
|
126
|
+
delete stateAppearance[key];
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
return stateAppearance;
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=appearance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appearance.js","sourceRoot":"","sources":["../../../src/native-tabs/NativeBottomTabs/appearance.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ColorValue } from 'react-native';\nimport type {\n BottomTabsScreenAppearance,\n BottomTabsScreenItemAppearance,\n BottomTabsScreenItemStateAppearance,\n} from 'react-native-screens';\n\nimport {\n SUPPORTED_BLUR_EFFECTS,\n type NativeTabOptions,\n type NativeTabsBlurEffect,\n type NativeTabsLabelStyle,\n} from './types';\n\nexport function createStandardAppearanceFromOptions(\n options: NativeTabOptions,\n baseStandardAppearance: BottomTabsScreenAppearance\n): BottomTabsScreenAppearance {\n const appearance = appendStyleToAppearance(\n {\n ...options.labelStyle,\n iconColor: options.iconColor,\n backgroundColor: options.backgroundColor,\n blurEffect: options.blurEffect,\n badgeBackgroundColor: options.badgeBackgroundColor,\n titlePositionAdjustment: options.titlePositionAdjustment,\n },\n baseStandardAppearance,\n ['normal', 'focused', 'selected']\n );\n return appendSelectedStyleToAppearance(\n {\n ...(options.selectedLabelStyle ?? {}),\n iconColor: options.selectedIconColor,\n badgeBackgroundColor: options.selectedBadgeBackgroundColor,\n titlePositionAdjustment: options.selectedTitlePositionAdjustment,\n },\n appearance\n );\n}\n\nexport function createScrollEdgeAppearanceFromOptions(\n options: NativeTabOptions,\n baseScrollEdgeAppearance: BottomTabsScreenAppearance\n): BottomTabsScreenAppearance {\n const appearance = appendStyleToAppearance(\n {\n ...options.labelStyle,\n iconColor: options.iconColor,\n blurEffect: options.disableTransparentOnScrollEdge ? options.blurEffect : 'none',\n backgroundColor: options.disableTransparentOnScrollEdge ? options.backgroundColor : null,\n badgeBackgroundColor: options.badgeBackgroundColor,\n titlePositionAdjustment: options.titlePositionAdjustment,\n },\n baseScrollEdgeAppearance,\n ['normal', 'focused', 'selected']\n );\n return appendSelectedStyleToAppearance(\n {\n ...(options.selectedLabelStyle ?? {}),\n iconColor: options.selectedIconColor,\n badgeBackgroundColor: options.selectedBadgeBackgroundColor,\n titlePositionAdjustment: options.selectedTitlePositionAdjustment,\n },\n appearance\n );\n}\n\nexport interface AppearanceStyle extends NativeTabsLabelStyle {\n iconColor?: ColorValue;\n backgroundColor?: ColorValue | null;\n blurEffect?: NativeTabsBlurEffect;\n badgeBackgroundColor?: ColorValue;\n titlePositionAdjustment?: {\n horizontal?: number;\n vertical?: number;\n };\n}\n\nexport function appendSelectedStyleToAppearance(\n selectedStyle: AppearanceStyle,\n appearance: BottomTabsScreenAppearance\n): BottomTabsScreenAppearance {\n return appendStyleToAppearance(selectedStyle, appearance, ['selected', 'focused']);\n}\n\nconst EMPTY_APPEARANCE_ITEM: BottomTabsScreenItemAppearance = {\n normal: {},\n selected: {},\n focused: {},\n disabled: {},\n};\n\nexport function appendStyleToAppearance(\n style: AppearanceStyle,\n appearance: BottomTabsScreenAppearance,\n states: ('selected' | 'focused' | 'disabled' | 'normal')[]\n): BottomTabsScreenAppearance {\n let tabBarBlurEffect = style?.blurEffect;\n if (tabBarBlurEffect && !supportedBlurEffectsSet.has(tabBarBlurEffect)) {\n console.warn(\n `Unsupported blurEffect: ${tabBarBlurEffect}. Supported values are: ${SUPPORTED_BLUR_EFFECTS.map((effect) => `\"${effect}\"`).join(', ')}`\n );\n tabBarBlurEffect = undefined;\n }\n const baseItemAppearance =\n appearance.stacked || appearance.inline || appearance.compactInline || {};\n\n const styleAppearance = convertStyleToAppearance(style);\n const newAppearances = states.map((state) => ({\n key: state,\n appearance: {\n ...baseItemAppearance.normal,\n ...baseItemAppearance[state],\n ...styleAppearance.stacked?.normal,\n },\n }));\n\n const itemAppearance: BottomTabsScreenItemAppearance = {\n ...EMPTY_APPEARANCE_ITEM,\n ...baseItemAppearance,\n ...Object.fromEntries(newAppearances.map(({ key, appearance }) => [key, appearance])),\n };\n return {\n stacked: itemAppearance,\n inline: itemAppearance,\n compactInline: itemAppearance,\n tabBarBackgroundColor:\n style.backgroundColor === null\n ? undefined\n : (style.backgroundColor ?? appearance.tabBarBackgroundColor),\n tabBarBlurEffect: tabBarBlurEffect ?? appearance.tabBarBlurEffect,\n };\n}\n\nconst supportedBlurEffectsSet = new Set<string>(SUPPORTED_BLUR_EFFECTS);\n\nexport function convertStyleToAppearance(\n style: AppearanceStyle | undefined\n): BottomTabsScreenAppearance {\n if (!style) {\n return {};\n }\n let blurEffect = style.blurEffect;\n if (style.blurEffect && !supportedBlurEffectsSet.has(style.blurEffect)) {\n console.warn(\n `Unsupported blurEffect: ${style.blurEffect}. Supported values are: ${SUPPORTED_BLUR_EFFECTS.map(\n (effect) => `\"${effect}\"`\n ).join(', ')}`\n );\n blurEffect = undefined;\n }\n const stateAppearance = convertStyleToItemStateAppearance(style);\n const itemAppearance: BottomTabsScreenItemAppearance = {\n normal: stateAppearance,\n selected: stateAppearance,\n focused: stateAppearance,\n disabled: {},\n };\n return {\n inline: itemAppearance,\n stacked: itemAppearance,\n compactInline: itemAppearance,\n tabBarBackgroundColor: style?.backgroundColor ?? undefined,\n tabBarBlurEffect: blurEffect,\n };\n}\n\nexport function convertStyleToItemStateAppearance(\n style: AppearanceStyle | undefined\n): BottomTabsScreenItemStateAppearance {\n if (!style) {\n return {};\n }\n const stateAppearance: BottomTabsScreenItemStateAppearance = {\n tabBarItemBadgeBackgroundColor: style.badgeBackgroundColor,\n tabBarItemTitlePositionAdjustment: style.titlePositionAdjustment,\n tabBarItemIconColor: style.iconColor,\n tabBarItemTitleFontFamily: style.fontFamily,\n tabBarItemTitleFontSize: style.fontSize,\n // Only string values are accepted by rn-screens\n tabBarItemTitleFontWeight: style?.fontWeight\n ? (String(style.fontWeight) as `${NonNullable<(typeof style)['fontWeight']>}`)\n : undefined,\n tabBarItemTitleFontStyle: style.fontStyle,\n tabBarItemTitleFontColor: style.color,\n };\n\n (Object.keys(stateAppearance) as (keyof BottomTabsScreenItemStateAppearance)[]).forEach((key) => {\n if (stateAppearance[key] === undefined) {\n delete stateAppearance[key];\n }\n });\n\n return stateAppearance;\n}\n"]}
|