@react-navigation/bottom-tabs 7.10.1 → 8.0.0-alpha.1

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 (139) hide show
  1. package/lib/module/index.js +3 -2
  2. package/lib/module/index.js.map +1 -1
  3. package/lib/module/navigators/createBottomTabNavigator.js +27 -9
  4. package/lib/module/navigators/createBottomTabNavigator.js.map +1 -1
  5. package/lib/module/utils/BottomTabAnimationContext.js +5 -0
  6. package/lib/module/utils/BottomTabAnimationContext.js.map +1 -0
  7. package/lib/module/utils/useBottomTabAnimation.js +12 -0
  8. package/lib/module/utils/useBottomTabAnimation.js.map +1 -0
  9. package/lib/module/utils/useTabBarPosition.js +34 -0
  10. package/lib/module/utils/useTabBarPosition.js.map +1 -0
  11. package/lib/module/views/BottomTabBar.js +46 -49
  12. package/lib/module/views/BottomTabBar.js.map +1 -1
  13. package/lib/module/views/BottomTabItem.js +17 -15
  14. package/lib/module/views/BottomTabItem.js.map +1 -1
  15. package/lib/module/views/BottomTabViewCommon.js +16 -0
  16. package/lib/module/views/BottomTabViewCommon.js.map +1 -0
  17. package/lib/module/views/{BottomTabView.js → BottomTabViewCustom.js} +107 -106
  18. package/lib/module/views/BottomTabViewCustom.js.map +1 -0
  19. package/lib/module/views/BottomTabViewNative.android.js +4 -0
  20. package/lib/module/views/BottomTabViewNative.android.js.map +1 -0
  21. package/lib/module/views/BottomTabViewNative.ios.js +4 -0
  22. package/lib/module/views/BottomTabViewNative.ios.js.map +1 -0
  23. package/lib/module/views/BottomTabViewNative.js +5 -0
  24. package/lib/module/views/BottomTabViewNative.js.map +1 -0
  25. package/lib/module/{unstable/NativeBottomTabView.native.js → views/BottomTabViewNativeImpl.js} +103 -80
  26. package/lib/module/views/BottomTabViewNativeImpl.js.map +1 -0
  27. package/lib/module/views/ScreenContent.js +39 -0
  28. package/lib/module/views/ScreenContent.js.map +1 -0
  29. package/lib/module/views/TabBarIcon.js +62 -4
  30. package/lib/module/views/TabBarIcon.js.map +1 -1
  31. package/lib/typescript/src/index.d.ts +4 -3
  32. package/lib/typescript/src/index.d.ts.map +1 -1
  33. package/lib/typescript/src/navigators/createBottomTabNavigator.d.ts +10 -6
  34. package/lib/typescript/src/navigators/createBottomTabNavigator.d.ts.map +1 -1
  35. package/lib/typescript/src/types.d.ts +392 -114
  36. package/lib/typescript/src/types.d.ts.map +1 -1
  37. package/lib/typescript/src/utils/BottomTabAnimationContext.d.ts +4 -0
  38. package/lib/typescript/src/utils/BottomTabAnimationContext.d.ts.map +1 -0
  39. package/lib/typescript/src/utils/useBottomTabAnimation.d.ts +2 -0
  40. package/lib/typescript/src/utils/useBottomTabAnimation.d.ts.map +1 -0
  41. package/lib/typescript/src/utils/useTabBarPosition.d.ts +3 -0
  42. package/lib/typescript/src/utils/useTabBarPosition.d.ts.map +1 -0
  43. package/lib/typescript/src/views/BottomTabBar.d.ts +4 -4
  44. package/lib/typescript/src/views/BottomTabBar.d.ts.map +1 -1
  45. package/lib/typescript/src/views/BottomTabItem.d.ts +16 -14
  46. package/lib/typescript/src/views/BottomTabItem.d.ts.map +1 -1
  47. package/lib/typescript/src/views/{BottomTabView.d.ts → BottomTabViewCommon.d.ts} +2 -2
  48. package/lib/typescript/src/views/BottomTabViewCommon.d.ts.map +1 -0
  49. package/lib/typescript/src/views/BottomTabViewCustom.d.ts +10 -0
  50. package/lib/typescript/src/views/BottomTabViewCustom.d.ts.map +1 -0
  51. package/lib/typescript/src/views/BottomTabViewNative.android.d.ts +2 -0
  52. package/lib/typescript/src/views/BottomTabViewNative.android.d.ts.map +1 -0
  53. package/lib/typescript/src/views/BottomTabViewNative.d.ts +3 -0
  54. package/lib/typescript/src/views/BottomTabViewNative.d.ts.map +1 -0
  55. package/lib/typescript/src/views/BottomTabViewNative.ios.d.ts +2 -0
  56. package/lib/typescript/src/views/BottomTabViewNative.ios.d.ts.map +1 -0
  57. package/lib/typescript/src/views/BottomTabViewNativeImpl.d.ts +10 -0
  58. package/lib/typescript/src/views/BottomTabViewNativeImpl.d.ts.map +1 -0
  59. package/lib/typescript/src/views/ScreenContent.d.ts +13 -0
  60. package/lib/typescript/src/views/ScreenContent.d.ts.map +1 -0
  61. package/lib/typescript/src/views/TabBarIcon.d.ts +10 -10
  62. package/lib/typescript/src/views/TabBarIcon.d.ts.map +1 -1
  63. package/package.json +12 -17
  64. package/src/index.tsx +7 -2
  65. package/src/navigators/createBottomTabNavigator.tsx +78 -27
  66. package/src/types.tsx +425 -122
  67. package/src/utils/BottomTabAnimationContext.tsx +7 -0
  68. package/src/utils/useBottomTabAnimation.tsx +15 -0
  69. package/src/utils/useTabBarPosition.tsx +41 -0
  70. package/src/views/BottomTabBar.tsx +68 -67
  71. package/src/views/BottomTabItem.tsx +39 -34
  72. package/src/views/BottomTabViewCommon.tsx +26 -0
  73. package/src/views/{BottomTabView.tsx → BottomTabViewCustom.tsx} +142 -129
  74. package/src/views/BottomTabViewNative.android.tsx +1 -0
  75. package/src/views/BottomTabViewNative.ios.tsx +1 -0
  76. package/src/views/BottomTabViewNative.tsx +3 -0
  77. package/src/{unstable/NativeBottomTabView.native.tsx → views/BottomTabViewNativeImpl.tsx} +161 -120
  78. package/src/views/ScreenContent.tsx +58 -0
  79. package/src/views/TabBarIcon.tsx +79 -11
  80. package/lib/module/unstable/NativeBottomTabView.js +0 -6
  81. package/lib/module/unstable/NativeBottomTabView.js.map +0 -1
  82. package/lib/module/unstable/NativeBottomTabView.native.js.map +0 -1
  83. package/lib/module/unstable/NativeScreen/NativeScreen.js +0 -152
  84. package/lib/module/unstable/NativeScreen/NativeScreen.js.map +0 -1
  85. package/lib/module/unstable/NativeScreen/debounce.js +0 -12
  86. package/lib/module/unstable/NativeScreen/debounce.js.map +0 -1
  87. package/lib/module/unstable/NativeScreen/types.js +0 -4
  88. package/lib/module/unstable/NativeScreen/types.js.map +0 -1
  89. package/lib/module/unstable/NativeScreen/useAnimatedHeaderHeight.js +0 -12
  90. package/lib/module/unstable/NativeScreen/useAnimatedHeaderHeight.js.map +0 -1
  91. package/lib/module/unstable/NativeScreen/useHeaderConfig.js +0 -304
  92. package/lib/module/unstable/NativeScreen/useHeaderConfig.js.map +0 -1
  93. package/lib/module/unstable/createNativeBottomTabNavigator.js +0 -6
  94. package/lib/module/unstable/createNativeBottomTabNavigator.js.map +0 -1
  95. package/lib/module/unstable/createNativeBottomTabNavigator.native.js +0 -65
  96. package/lib/module/unstable/createNativeBottomTabNavigator.native.js.map +0 -1
  97. package/lib/module/unstable/index.js +0 -16
  98. package/lib/module/unstable/index.js.map +0 -1
  99. package/lib/module/unstable/types.js +0 -4
  100. package/lib/module/unstable/types.js.map +0 -1
  101. package/lib/module/views/BottomTabView.js.map +0 -1
  102. package/lib/module/views/ScreenFallback.js +0 -42
  103. package/lib/module/views/ScreenFallback.js.map +0 -1
  104. package/lib/typescript/src/unstable/NativeBottomTabView.d.ts +0 -10
  105. package/lib/typescript/src/unstable/NativeBottomTabView.d.ts.map +0 -1
  106. package/lib/typescript/src/unstable/NativeBottomTabView.native.d.ts +0 -10
  107. package/lib/typescript/src/unstable/NativeBottomTabView.native.d.ts.map +0 -1
  108. package/lib/typescript/src/unstable/NativeScreen/NativeScreen.d.ts +0 -8
  109. package/lib/typescript/src/unstable/NativeScreen/NativeScreen.d.ts.map +0 -1
  110. package/lib/typescript/src/unstable/NativeScreen/debounce.d.ts +0 -2
  111. package/lib/typescript/src/unstable/NativeScreen/debounce.d.ts.map +0 -1
  112. package/lib/typescript/src/unstable/NativeScreen/types.d.ts +0 -523
  113. package/lib/typescript/src/unstable/NativeScreen/types.d.ts.map +0 -1
  114. package/lib/typescript/src/unstable/NativeScreen/useAnimatedHeaderHeight.d.ts +0 -5
  115. package/lib/typescript/src/unstable/NativeScreen/useAnimatedHeaderHeight.d.ts.map +0 -1
  116. package/lib/typescript/src/unstable/NativeScreen/useHeaderConfig.d.ts +0 -11
  117. package/lib/typescript/src/unstable/NativeScreen/useHeaderConfig.d.ts.map +0 -1
  118. package/lib/typescript/src/unstable/createNativeBottomTabNavigator.d.ts +0 -2
  119. package/lib/typescript/src/unstable/createNativeBottomTabNavigator.d.ts.map +0 -1
  120. package/lib/typescript/src/unstable/createNativeBottomTabNavigator.native.d.ts +0 -16
  121. package/lib/typescript/src/unstable/createNativeBottomTabNavigator.native.d.ts.map +0 -1
  122. package/lib/typescript/src/unstable/index.d.ts +0 -13
  123. package/lib/typescript/src/unstable/index.d.ts.map +0 -1
  124. package/lib/typescript/src/unstable/types.d.ts +0 -319
  125. package/lib/typescript/src/unstable/types.d.ts.map +0 -1
  126. package/lib/typescript/src/views/BottomTabView.d.ts.map +0 -1
  127. package/lib/typescript/src/views/ScreenFallback.d.ts +0 -18
  128. package/lib/typescript/src/views/ScreenFallback.d.ts.map +0 -1
  129. package/src/unstable/NativeBottomTabView.tsx +0 -20
  130. package/src/unstable/NativeScreen/NativeScreen.tsx +0 -212
  131. package/src/unstable/NativeScreen/debounce.tsx +0 -14
  132. package/src/unstable/NativeScreen/types.ts +0 -573
  133. package/src/unstable/NativeScreen/useAnimatedHeaderHeight.tsx +0 -18
  134. package/src/unstable/NativeScreen/useHeaderConfig.tsx +0 -434
  135. package/src/unstable/createNativeBottomTabNavigator.native.tsx +0 -116
  136. package/src/unstable/createNativeBottomTabNavigator.tsx +0 -4
  137. package/src/unstable/index.tsx +0 -23
  138. package/src/unstable/types.tsx +0 -403
  139. package/src/views/ScreenFallback.tsx +0 -50
@@ -1,16 +1,18 @@
1
1
  "use strict";
2
2
 
3
- import { getHeaderTitle, Header, SafeAreaProviderCompat, Screen } from '@react-navigation/elements';
3
+ import { Container, Lazy, SafeAreaProviderCompat } from '@react-navigation/elements/internal';
4
4
  import { StackActions } from '@react-navigation/native';
5
5
  import * as React from 'react';
6
6
  import { Animated, Platform, StyleSheet } from 'react-native';
7
- import { SafeAreaInsetsContext } from 'react-native-safe-area-context';
7
+ import { Screen, ScreenContainer } from 'react-native-screens';
8
8
  import { FadeTransition, ShiftTransition } from "../TransitionConfigs/TransitionPresets.js";
9
+ import { BottomTabAnimationContext } from "../utils/BottomTabAnimationContext.js";
9
10
  import { BottomTabBarHeightCallbackContext } from "../utils/BottomTabBarHeightCallbackContext.js";
10
11
  import { BottomTabBarHeightContext } from "../utils/BottomTabBarHeightContext.js";
11
12
  import { useAnimatedHashMap } from "../utils/useAnimatedHashMap.js";
13
+ import { useTabBarPosition } from "../utils/useTabBarPosition.js";
12
14
  import { BottomTabBar, getTabBarHeight } from "./BottomTabBar.js";
13
- import { MaybeScreen, MaybeScreenContainer } from "./ScreenFallback.js";
15
+ import { ScreenContent } from "./ScreenContent.js";
14
16
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
17
  const EPSILON = 1e-5;
16
18
  const STATE_INACTIVE = 0;
@@ -43,25 +45,17 @@ const hasAnimation = options => {
43
45
  const renderTabBarDefault = props => /*#__PURE__*/_jsx(BottomTabBar, {
44
46
  ...props
45
47
  });
46
- export function BottomTabView(props) {
48
+ export function BottomTabViewCustom({
49
+ tabBar = renderTabBarDefault,
50
+ state,
51
+ navigation,
52
+ descriptors,
53
+ detachInactiveScreens = Platform.OS === 'web' || Platform.OS === 'android' || Platform.OS === 'ios'
54
+ }) {
47
55
  const {
48
- tabBar = renderTabBarDefault,
49
- state,
50
- navigation,
51
- descriptors,
52
- safeAreaInsets,
53
- detachInactiveScreens = Platform.OS === 'web' || Platform.OS === 'android' || Platform.OS === 'ios'
54
- } = props;
55
- const focusedRouteKey = state.routes[state.index].key;
56
-
57
- /**
58
- * List of loaded tabs, tabs will be loaded when navigated to.
59
- */
60
- const [loaded, setLoaded] = React.useState([focusedRouteKey]);
61
- if (!loaded.includes(focusedRouteKey)) {
62
- // Set the current tab to be loaded if it was not loaded before
63
- setLoaded([...loaded, focusedRouteKey]);
64
- }
56
+ routes
57
+ } = state;
58
+ const focusedRouteKey = routes[state.index].key;
65
59
  const previousRouteKeyRef = React.useRef(focusedRouteKey);
66
60
  const tabAnims = useAnimatedHashMap(state);
67
61
  React.useEffect(() => {
@@ -121,89 +115,85 @@ export function BottomTabView(props) {
121
115
  animateToIndex();
122
116
  previousRouteKeyRef.current = focusedRouteKey;
123
117
  }, [descriptors, focusedRouteKey, navigation, state.index, state.routes, tabAnims]);
124
- const dimensions = SafeAreaProviderCompat.initialMetrics.frame;
125
118
  const [tabBarHeight, setTabBarHeight] = React.useState(() => getTabBarHeight({
126
119
  state,
127
120
  descriptors,
128
- dimensions,
129
- insets: {
130
- ...SafeAreaProviderCompat.initialMetrics.insets,
131
- ...props.safeAreaInsets
132
- },
133
- style: descriptors[state.routes[state.index].key].options.tabBarStyle
121
+ dimensions: SafeAreaProviderCompat.initialMetrics.frame,
122
+ insets: SafeAreaProviderCompat.initialMetrics.insets,
123
+ style: descriptors[focusedRouteKey].options.tabBarStyle
134
124
  }));
135
- const renderTabBar = () => {
136
- return /*#__PURE__*/_jsx(SafeAreaInsetsContext.Consumer, {
137
- children: insets => tabBar({
138
- state: state,
139
- descriptors: descriptors,
140
- navigation: navigation,
141
- insets: {
142
- top: safeAreaInsets?.top ?? insets?.top ?? 0,
143
- right: safeAreaInsets?.right ?? insets?.right ?? 0,
144
- bottom: safeAreaInsets?.bottom ?? insets?.bottom ?? 0,
145
- left: safeAreaInsets?.left ?? insets?.left ?? 0
146
- }
147
- })
148
- });
149
- };
150
- const {
151
- routes
152
- } = state;
153
-
154
- // If there is no animation, we only have 2 states: visible and invisible
155
- const hasTwoStates = !routes.some(route => hasAnimation(descriptors[route.key].options));
156
- const {
157
- tabBarPosition = 'bottom'
158
- } = descriptors[focusedRouteKey].options;
159
125
  const tabBarElement = /*#__PURE__*/_jsx(BottomTabBarHeightCallbackContext.Provider, {
160
126
  value: setTabBarHeight,
161
- children: renderTabBar()
127
+ children: tabBar({
128
+ state: state,
129
+ descriptors: descriptors,
130
+ navigation: navigation
131
+ })
162
132
  }, "tabbar");
133
+
134
+ // If there is no animation, we only have 2 states: visible and invisible
135
+ const hasTwoStates = !routes.some(route => hasAnimation(descriptors[route.key].options));
136
+ const tabBarPosition = useTabBarPosition(descriptors[focusedRouteKey].options);
163
137
  return /*#__PURE__*/_jsxs(SafeAreaProviderCompat, {
164
138
  style: {
165
139
  flexDirection: tabBarPosition === 'left' || tabBarPosition === 'right' ? 'row' : 'column'
166
140
  },
167
- children: [tabBarPosition === 'top' || tabBarPosition === 'left' ? tabBarElement : null, /*#__PURE__*/_jsx(MaybeScreenContainer, {
141
+ children: [tabBarPosition === 'top' || tabBarPosition === 'left' ? tabBarElement : null, /*#__PURE__*/_jsx(ScreenContainer, {
168
142
  enabled: detachInactiveScreens,
169
143
  hasTwoStates: hasTwoStates,
170
144
  style: styles.screens,
171
145
  children: routes.map((route, index) => {
172
146
  const descriptor = descriptors[route.key];
147
+ const {
148
+ navigation,
149
+ options,
150
+ render
151
+ } = descriptor;
173
152
  const {
174
153
  lazy = true,
175
154
  animation = 'none',
176
- sceneStyleInterpolator = NAMED_TRANSITIONS_PRESETS[animation].sceneStyleInterpolator
177
- } = descriptor.options;
155
+ sceneStyleInterpolator = NAMED_TRANSITIONS_PRESETS[animation].sceneStyleInterpolator,
156
+ sceneStyle: customSceneStyle
157
+ } = options;
178
158
  const isFocused = state.index === index;
179
159
  const isPreloaded = state.preloadedRouteKeys.includes(route.key);
180
- if (lazy && !loaded.includes(route.key) && !isFocused && !isPreloaded) {
181
- // Don't render a lazy screen if we've never navigated to it or it wasn't preloaded
182
- return null;
183
- }
184
- const {
185
- freezeOnBlur,
186
- header = ({
187
- layout,
188
- options
189
- }) => /*#__PURE__*/_jsx(Header, {
190
- ...options,
191
- layout: layout,
192
- title: getHeaderTitle(options, route.name)
193
- }),
194
- headerShown,
195
- headerStatusBarHeight,
196
- headerTransparent,
197
- sceneStyle: customSceneStyle
198
- } = descriptor.options;
199
- const {
200
- sceneStyle
201
- } = sceneStyleInterpolator?.({
202
- current: {
203
- progress: tabAnims[route.key]
204
- }
205
- }) ?? {};
206
160
  const animationEnabled = hasAnimation(descriptor.options);
161
+ const content = /*#__PURE__*/_jsx(AnimatedScreenContent, {
162
+ progress: tabAnims[route.key],
163
+ animationEnabled: animationEnabled,
164
+ sceneStyleInterpolator: sceneStyleInterpolator,
165
+ style: customSceneStyle,
166
+ children: /*#__PURE__*/_jsx(Lazy, {
167
+ enabled: lazy,
168
+ visible: isFocused || isPreloaded,
169
+ children: /*#__PURE__*/_jsx(ScreenContent, {
170
+ isFocused: isFocused,
171
+ route: route,
172
+ navigation: navigation,
173
+ options: options,
174
+ children: /*#__PURE__*/_jsx(BottomTabBarHeightContext.Provider, {
175
+ value: tabBarPosition === 'bottom' ? tabBarHeight : 0,
176
+ children: render()
177
+ })
178
+ })
179
+ })
180
+ });
181
+ if (Platform.OS === 'web') {
182
+ /**
183
+ * Don't use react-native-screens on web:
184
+ * - It applies display: none as fallback, which triggers `onLayout` events
185
+ * - We still need to hide the view when screens is not enabled
186
+ * - We can use `inert` to handle a11y better for unfocused screens
187
+ */
188
+ return /*#__PURE__*/_jsx(Container, {
189
+ inert: !isFocused,
190
+ style: {
191
+ ...StyleSheet.absoluteFillObject,
192
+ visibility: isFocused ? 'visible' : 'hidden'
193
+ },
194
+ children: content
195
+ }, route.key);
196
+ }
207
197
  const activityState = isFocused ? STATE_ON_TOP // the screen is on top after the transition
208
198
  : animationEnabled // is animation is not enabled, immediately move to inactive state
209
199
  ? tabAnims[route.key].interpolate({
@@ -214,42 +204,53 @@ export function BottomTabView(props) {
214
204
  ],
215
205
  extrapolate: 'extend'
216
206
  }) : STATE_INACTIVE;
217
- return /*#__PURE__*/_jsx(MaybeScreen, {
207
+ return /*#__PURE__*/_jsx(Screen, {
218
208
  style: [StyleSheet.absoluteFill, {
219
- zIndex: isFocused ? 0 : -1
209
+ zIndex: isFocused ? 0 : -1,
210
+ pointerEvents: isFocused ? 'auto' : 'none'
220
211
  }],
221
- active: activityState,
212
+ activityState: activityState,
222
213
  enabled: detachInactiveScreens,
223
- freezeOnBlur: freezeOnBlur,
224
214
  shouldFreeze: activityState === STATE_INACTIVE && !isPreloaded,
225
- children: /*#__PURE__*/_jsx(BottomTabBarHeightContext.Provider, {
226
- value: tabBarPosition === 'bottom' ? tabBarHeight : 0,
227
- children: /*#__PURE__*/_jsx(Screen, {
228
- focused: isFocused,
229
- route: descriptor.route,
230
- navigation: descriptor.navigation,
231
- headerShown: headerShown,
232
- headerStatusBarHeight: headerStatusBarHeight,
233
- headerTransparent: headerTransparent,
234
- header: header({
235
- layout: dimensions,
236
- route: descriptor.route,
237
- navigation: descriptor.navigation,
238
- options: descriptor.options
239
- }),
240
- style: [customSceneStyle, animationEnabled && sceneStyle],
241
- children: descriptor.render()
242
- })
243
- })
215
+ children: content
244
216
  }, route.key);
245
217
  })
246
218
  }, "screens"), tabBarPosition === 'bottom' || tabBarPosition === 'right' ? tabBarElement : null]
247
219
  });
248
220
  }
221
+ function AnimatedScreenContent({
222
+ progress,
223
+ animationEnabled,
224
+ sceneStyleInterpolator,
225
+ children,
226
+ style
227
+ }) {
228
+ const interpolationProps = React.useMemo(() => {
229
+ return {
230
+ current: {
231
+ progress
232
+ }
233
+ };
234
+ }, [progress]);
235
+ const {
236
+ sceneStyle
237
+ } = sceneStyleInterpolator?.(interpolationProps) ?? {};
238
+ return /*#__PURE__*/_jsx(Animated.View, {
239
+ style: [styles.scene, style, animationEnabled && sceneStyle],
240
+ children: /*#__PURE__*/_jsx(BottomTabAnimationContext.Provider, {
241
+ value: interpolationProps,
242
+ children: children
243
+ })
244
+ });
245
+ }
249
246
  const styles = StyleSheet.create({
250
247
  screens: {
251
248
  flex: 1,
252
249
  overflow: 'hidden'
250
+ },
251
+ scene: {
252
+ flex: 1,
253
+ pointerEvents: 'box-none'
253
254
  }
254
255
  });
255
- //# sourceMappingURL=BottomTabView.js.map
256
+ //# sourceMappingURL=BottomTabViewCustom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Container","Lazy","SafeAreaProviderCompat","StackActions","React","Animated","Platform","StyleSheet","Screen","ScreenContainer","FadeTransition","ShiftTransition","BottomTabAnimationContext","BottomTabBarHeightCallbackContext","BottomTabBarHeightContext","useAnimatedHashMap","useTabBarPosition","BottomTabBar","getTabBarHeight","ScreenContent","jsx","_jsx","jsxs","_jsxs","EPSILON","STATE_INACTIVE","STATE_TRANSITIONING_OR_BELOW_TOP","STATE_ON_TOP","NAMED_TRANSITIONS_PRESETS","fade","shift","none","sceneStyleInterpolator","undefined","transitionSpec","animation","config","duration","useNativeDriver","OS","hasAnimation","options","Boolean","renderTabBarDefault","props","BottomTabViewCustom","tabBar","state","navigation","descriptors","detachInactiveScreens","routes","focusedRouteKey","index","key","previousRouteKeyRef","useRef","tabAnims","useEffect","previousRouteKey","current","popToTopAction","popToTopOnBlur","prevRoute","find","route","type","popToTop","target","animateToIndex","emit","parallel","map","spec","toValue","filter","start","finished","dispatch","tabBarHeight","setTabBarHeight","useState","dimensions","initialMetrics","frame","insets","style","tabBarStyle","tabBarElement","Provider","value","children","hasTwoStates","some","tabBarPosition","flexDirection","enabled","styles","screens","descriptor","render","lazy","sceneStyle","customSceneStyle","isFocused","isPreloaded","preloadedRouteKeys","includes","animationEnabled","content","AnimatedScreenContent","progress","visible","inert","absoluteFillObject","visibility","activityState","interpolate","inputRange","outputRange","extrapolate","absoluteFill","zIndex","pointerEvents","shouldFreeze","interpolationProps","useMemo","View","scene","create","flex","overflow"],"sourceRoot":"../../../src","sources":["views/BottomTabViewCustom.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export * from "./BottomTabViewNativeImpl.js";
4
+ //# sourceMappingURL=BottomTabViewNative.android.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["views/BottomTabViewNative.android.tsx"],"mappings":";;AAAA,cAAc,8BAA2B","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export * from "./BottomTabViewNativeImpl.js";
4
+ //# sourceMappingURL=BottomTabViewNative.ios.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["views/BottomTabViewNative.ios.tsx"],"mappings":";;AAAA,cAAc,8BAA2B","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ import { BottomTabViewCustom } from "./BottomTabViewCustom.js";
4
+ export { BottomTabViewCustom as BottomTabViewNative };
5
+ //# sourceMappingURL=BottomTabViewNative.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BottomTabViewCustom","BottomTabViewNative"],"sourceRoot":"../../../src","sources":["views/BottomTabViewNative.tsx"],"mappings":";;AAAA,SAASA,mBAAmB,QAAQ,0BAAuB;AAE3D,SAASA,mBAAmB,IAAIC,mBAAmB","ignoreList":[]}
@@ -1,20 +1,28 @@
1
1
  "use strict";
2
2
 
3
- import { getLabel, Lazy, SafeAreaProviderCompat, Screen as ScreenContent } from '@react-navigation/elements';
3
+ import { getLabel } from '@react-navigation/elements';
4
+ import { Color, Lazy, SafeAreaProviderCompat } from '@react-navigation/elements/internal';
4
5
  import { CommonActions, NavigationMetaContext, StackActions, useTheme } from '@react-navigation/native';
5
- import Color from 'color';
6
6
  import * as React from 'react';
7
- import { Platform, PlatformColor } from 'react-native';
7
+ import { Animated, Platform, PlatformColor } from 'react-native';
8
8
  import { Tabs } from 'react-native-screens';
9
- import { NativeScreen } from "./NativeScreen/NativeScreen.js";
10
- import { jsx as _jsx } from "react/jsx-runtime";
9
+ import { BottomTabAnimationContext } from "../utils/BottomTabAnimationContext.js";
10
+ import { BottomTabBarHeightContext } from "../utils/BottomTabBarHeightContext.js";
11
+ import { useTabBarPosition } from "../utils/useTabBarPosition.js";
12
+ import { ScreenContent } from "./ScreenContent.js";
13
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
+ const ICON_SIZE = Platform.select({
15
+ ios: 25,
16
+ default: 24
17
+ });
11
18
  const meta = {
12
19
  type: 'native-tabs'
13
20
  };
14
- export function NativeBottomTabView({
21
+ export function BottomTabViewNative({
15
22
  state,
16
23
  navigation,
17
- descriptors
24
+ descriptors,
25
+ tabBar
18
26
  }) {
19
27
  const {
20
28
  dark,
@@ -55,36 +63,39 @@ export function NativeBottomTabView({
55
63
  ios: PlatformColor('label'),
56
64
  default: colors.text
57
65
  });
58
- const activeIndicatorColor = currentOptions?.tabBarActiveIndicatorColor ?? typeof activeTintColor === 'string' ? Color(activeTintColor)?.alpha(0.1).string() : undefined;
66
+ const activeIndicatorColor = currentOptions?.tabBarActiveIndicatorColor ?? Color(activeTintColor)?.alpha(0.1).string();
59
67
  const onTransitionStart = ({
60
- closing,
61
68
  route
62
69
  }) => {
63
70
  navigation.emit({
64
71
  type: 'transitionStart',
65
- data: {
66
- closing
67
- },
68
72
  target: route.key
69
73
  });
70
74
  };
71
75
  const onTransitionEnd = ({
72
- closing,
73
76
  route
74
77
  }) => {
75
78
  navigation.emit({
76
79
  type: 'transitionEnd',
77
- data: {
78
- closing
79
- },
80
80
  target: route.key
81
81
  });
82
82
  };
83
+ const tabBarPosition = useTabBarPosition(currentOptions);
84
+ const hasCustomTabBar = tabBar != null;
85
+ const tabBarElement = tabBar ? tabBar({
86
+ state,
87
+ descriptors,
88
+ navigation
89
+ }) : null;
83
90
  const tabBarControllerMode = currentOptions.tabBarControllerMode === 'auto' ? 'automatic' : currentOptions.tabBarControllerMode;
84
- const tabBarMinimizeBehavior = currentOptions.tabBarMinimizeBehavior === 'auto' ? 'automatic' : currentOptions.tabBarMinimizeBehavior;
91
+ const tabBarMinimizeBehavior = currentOptions.tabBarMinimizeBehavior === 'auto' ? 'automatic' : currentOptions.tabBarMinimizeBehavior === 'none' ? 'never' : currentOptions.tabBarMinimizeBehavior;
85
92
  const bottomAccessory = currentOptions.bottomAccessory;
86
- return /*#__PURE__*/_jsx(SafeAreaProviderCompat, {
87
- children: /*#__PURE__*/_jsx(Tabs.Host, {
93
+ return /*#__PURE__*/_jsxs(SafeAreaProviderCompat, {
94
+ style: {
95
+ flexDirection: tabBarPosition === 'left' || tabBarPosition === 'right' ? 'row' : 'column'
96
+ },
97
+ children: [tabBarPosition === 'top' || tabBarPosition === 'left' ? tabBarElement : null, /*#__PURE__*/_jsx(Tabs.Host, {
98
+ tabBarHidden: hasCustomTabBar,
88
99
  bottomAccessory: bottomAccessory ? environment => bottomAccessory({
89
100
  placement: environment
90
101
  }) : undefined,
@@ -109,10 +120,14 @@ export function NativeBottomTabView({
109
120
  onNativeFocusChange: e => {
110
121
  const route = state.routes.find(route => route.key === e.nativeEvent.tabKey);
111
122
  if (route) {
112
- navigation.emit({
123
+ const event = navigation.emit({
113
124
  type: 'tabPress',
114
- target: route.key
125
+ target: route.key,
126
+ canPreventDefault: true
115
127
  });
128
+ if (event.defaultPrevented) {
129
+ throw new Error("Preventing default for 'tabPress' is not supported with native tab bar.");
130
+ }
116
131
  const isFocused = state.index === state.routes.findIndex(r => r.key === route.key);
117
132
  if (!isFocused) {
118
133
  navigation.dispatch({
@@ -139,7 +154,9 @@ export function NativeBottomTabView({
139
154
  tabBarBadge,
140
155
  tabBarSystemItem,
141
156
  tabBarBlurEffect = dark ? 'systemMaterialDark' : 'systemMaterial',
142
- tabBarStyle
157
+ tabBarStyle,
158
+ sceneStyle,
159
+ scrollEdgeEffects
143
160
  } = options;
144
161
  const {
145
162
  backgroundColor: tabBarBackgroundColor,
@@ -159,28 +176,33 @@ export function NativeBottomTabView({
159
176
  tabBarItemTitleFontStyle: fontStyle
160
177
  };
161
178
  const badgeBackgroundColor = tabBarBadgeStyle?.backgroundColor ?? colors.notification;
162
- const badgeTextColor = tabBarBadgeStyle?.color ?? (typeof badgeBackgroundColor === 'string' ? Color(badgeBackgroundColor).isLight() ? 'black' : 'white' : undefined);
163
- const icon = typeof tabBarIcon === 'function' ? getPlatformIcon(tabBarIcon({
164
- focused: false
165
- })) : tabBarIcon != null ? getPlatformIcon(tabBarIcon) : undefined;
166
- const selectedIcon = typeof tabBarIcon === 'function' ? getPlatformIcon(tabBarIcon({
167
- focused: true
168
- })) : undefined;
179
+ const badgeTextColor = tabBarBadgeStyle?.color ?? (Color(badgeBackgroundColor)?.isLight() ? 'black' : 'white');
180
+ const getIcon = selected => {
181
+ if (typeof tabBarIcon === 'function') {
182
+ const result = tabBarIcon({
183
+ focused: selected,
184
+ size: ICON_SIZE,
185
+ color: selected ? activeTintColor : inactiveTintColor
186
+ });
187
+ if (/*#__PURE__*/React.isValidElement(result)) {
188
+ throw new Error(`Returning a React element from 'tabBarIcon' is not supported with native tab bar.`);
189
+ } else if (result && typeof result === 'object' && 'type' in result) {
190
+ return getPlatformIcon(result);
191
+ } else {
192
+ throw new Error(`The 'tabBarIcon' function must return an icon object (got ${typeof result}).`);
193
+ }
194
+ } else if (tabBarIcon != null) {
195
+ return getPlatformIcon(tabBarIcon);
196
+ }
197
+ return undefined;
198
+ };
199
+ const icon = getIcon(false);
200
+ const selectedIcon = getIcon(true);
169
201
  return /*#__PURE__*/_jsx(Tabs.Screen, {
170
- onWillDisappear: () => onTransitionStart({
171
- closing: true,
172
- route
173
- }),
174
202
  onWillAppear: () => onTransitionStart({
175
- closing: false,
176
203
  route
177
204
  }),
178
205
  onDidAppear: () => onTransitionEnd({
179
- closing: false,
180
- route
181
- }),
182
- onDidDisappear: () => onTransitionEnd({
183
- closing: true,
184
206
  route
185
207
  }),
186
208
  tabKey: route.key,
@@ -192,6 +214,16 @@ export function NativeBottomTabView({
192
214
  systemItem: tabBarSystemItem,
193
215
  isFocused: isFocused,
194
216
  title: tabTitle,
217
+ scrollEdgeEffects: {
218
+ top: scrollEdgeEffects?.top === 'auto' ? 'automatic' : scrollEdgeEffects?.top,
219
+ bottom: scrollEdgeEffects?.bottom === 'auto' ? 'automatic' : scrollEdgeEffects?.bottom,
220
+ left: scrollEdgeEffects?.left === 'auto' ? 'automatic' : scrollEdgeEffects?.left,
221
+ right: scrollEdgeEffects?.right === 'auto' ? 'automatic' : scrollEdgeEffects?.right
222
+ }
223
+ // FIXME: if this is not provided, ScrollView on lazy tabs glitches on iOS 18
224
+ // For now we provide an empty object before adding proper support
225
+ ,
226
+ scrollEdgeAppearance: {},
195
227
  standardAppearance: {
196
228
  tabBarBackgroundColor,
197
229
  tabBarShadowColor,
@@ -216,60 +248,51 @@ export function NativeBottomTabView({
216
248
  children: /*#__PURE__*/_jsx(Lazy, {
217
249
  enabled: lazy,
218
250
  visible: isFocused || isPreloaded,
219
- children: /*#__PURE__*/_jsx(ScreenWithHeader, {
251
+ children: /*#__PURE__*/_jsx(ScreenContent, {
220
252
  isFocused: isFocused,
221
253
  route: route,
222
254
  navigation: navigation,
223
255
  options: options,
224
- children: /*#__PURE__*/_jsx(NavigationMetaContext.Provider, {
225
- value: meta,
226
- children: render()
256
+ style: sceneStyle,
257
+ children: /*#__PURE__*/_jsx(AnimatedScreenContent, {
258
+ isFocused: isFocused,
259
+ children: /*#__PURE__*/_jsx(BottomTabBarHeightContext.Provider, {
260
+ value: 0,
261
+ children: /*#__PURE__*/_jsx(NavigationMetaContext.Provider, {
262
+ value: meta,
263
+ children: render()
264
+ })
265
+ })
227
266
  })
228
267
  })
229
268
  })
230
269
  }, route.key);
231
270
  })
232
- })
271
+ }), tabBarPosition === 'bottom' || tabBarPosition === 'right' ? tabBarElement : null]
233
272
  });
234
273
  }
235
- function ScreenWithHeader({
274
+ function AnimatedScreenContent({
236
275
  isFocused,
237
- route,
238
- navigation,
239
- options,
240
276
  children
241
277
  }) {
242
- const {
243
- headerTransparent,
244
- header: renderCustomHeader,
245
- headerShown = renderCustomHeader != null
246
- } = options;
247
- const hasNativeHeader = headerShown && renderCustomHeader == null;
248
- const [wasNativeHeaderShown] = React.useState(hasNativeHeader);
249
- React.useEffect(() => {
250
- if (wasNativeHeaderShown !== hasNativeHeader) {
251
- throw new Error(`Changing 'headerShown' or 'header' options dynamically is not supported when using native header.`);
252
- }
253
- }, [wasNativeHeaderShown, hasNativeHeader]);
254
- if (hasNativeHeader) {
255
- return /*#__PURE__*/_jsx(NativeScreen, {
256
- route: route,
257
- navigation: navigation,
258
- options: options,
259
- children: children
260
- });
261
- }
262
- return /*#__PURE__*/_jsx(ScreenContent, {
263
- focused: isFocused,
264
- route: route,
265
- navigation: navigation,
266
- headerShown: headerShown,
267
- headerTransparent: headerTransparent,
268
- header: renderCustomHeader?.({
269
- route,
270
- navigation,
271
- options
272
- }),
278
+ const [progress] = React.useState(() => new Animated.Value(isFocused ? 1 : 0));
279
+ React.useLayoutEffect(() => {
280
+ /**
281
+ * We don't have animation progress from native,
282
+ * So we expose a static value (0 or 1) based on focus state.
283
+ * Otherwise code using the `useTabAnimation` hook will crash
284
+ */
285
+ progress.setValue(isFocused ? 1 : 0);
286
+ }, [isFocused, progress]);
287
+ const interpolationProps = React.useMemo(() => {
288
+ return {
289
+ current: {
290
+ progress
291
+ }
292
+ };
293
+ }, [progress]);
294
+ return /*#__PURE__*/_jsx(BottomTabAnimationContext.Provider, {
295
+ value: interpolationProps,
273
296
  children: children
274
297
  });
275
298
  }
@@ -286,4 +309,4 @@ function getPlatformIcon(icon) {
286
309
  } : undefined
287
310
  };
288
311
  }
289
- //# sourceMappingURL=NativeBottomTabView.native.js.map
312
+ //# sourceMappingURL=BottomTabViewNativeImpl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getLabel","Color","Lazy","SafeAreaProviderCompat","CommonActions","NavigationMetaContext","StackActions","useTheme","React","Animated","Platform","PlatformColor","Tabs","BottomTabAnimationContext","BottomTabBarHeightContext","useTabBarPosition","ScreenContent","jsx","_jsx","jsxs","_jsxs","ICON_SIZE","select","ios","default","meta","type","BottomTabViewNative","state","navigation","descriptors","tabBar","dark","colors","fonts","focusedRouteKey","routes","index","key","previousRouteKeyRef","useRef","useEffect","previousRouteKey","current","options","popToTopOnBlur","prevRoute","find","route","popToTopAction","popToTop","target","dispatch","currentOptions","fontFamily","medium","regular","fontWeight","fontSize","fontStyle","tabBarLabelStyle","activeTintColor","tabBarActiveTintColor","primary","inactiveTintColor","tabBarInactiveTintColor","text","activeIndicatorColor","tabBarActiveIndicatorColor","alpha","string","onTransitionStart","emit","onTransitionEnd","tabBarPosition","hasCustomTabBar","tabBarElement","tabBarControllerMode","tabBarMinimizeBehavior","bottomAccessory","style","flexDirection","children","Host","tabBarHidden","environment","placement","undefined","tabBarItemLabelVisibilityMode","tabBarLabelVisibilityMode","tabBarTintColor","tabBarItemIconColor","tabBarItemIconColorActive","tabBarItemTitleFontColor","tabBarItemTitleFontColorActive","tabBarItemTitleFontFamily","tabBarItemTitleFontWeight","tabBarItemTitleFontSize","tabBarItemTitleFontSizeActive","tabBarItemTitleFontStyle","tabBarBackgroundColor","tabBarStyle","backgroundColor","card","tabBarItemActiveIndicatorColor","tabBarItemActiveIndicatorEnabled","tabBarActiveIndicatorEnabled","tabBarItemRippleColor","tabBarRippleColor","experimentalControlNavigationStateInJS","onNativeFocusChange","e","nativeEvent","tabKey","event","canPreventDefault","defaultPrevented","Error","isFocused","findIndex","r","navigate","name","params","map","render","isPreloaded","preloadedRouteKeys","includes","title","lazy","tabBarLabel","tabBarBadgeStyle","tabBarIcon","tabBarBadge","tabBarSystemItem","tabBarBlurEffect","sceneStyle","scrollEdgeEffects","shadowColor","tabBarShadowColor","tabTitle","OS","label","tabItemAppearance","badgeBackgroundColor","notification","badgeTextColor","color","isLight","getIcon","selected","result","focused","size","isValidElement","getPlatformIcon","icon","selectedIcon","Screen","onWillAppear","onDidAppear","shared","tabBarItemBadgeBackgroundColor","tabBarItemBadgeTextColor","badgeValue","toString","systemItem","top","bottom","left","right","scrollEdgeAppearance","standardAppearance","stacked","normal","inline","compactInline","specialEffects","repeatedTabSelection","popToRoot","scrollToTop","experimental_userInterfaceStyle","enabled","visible","AnimatedScreenContent","Provider","value","progress","useState","Value","useLayoutEffect","setValue","interpolationProps","useMemo","tinted","templateSource","source","android","imageSource"],"sourceRoot":"../../../src","sources":["views/BottomTabViewNativeImpl.tsx"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,4BAA4B;AACrD,SACEC,KAAK,EACLC,IAAI,EACJC,sBAAsB,QACjB,qCAAqC;AAC5C,SACEC,aAAa,EACbC,qBAAqB,EAGrBC,YAAY,EAEZC,QAAQ,QACH,0BAA0B;AACjC,OAAO,KAAKC,KAAK,MAAM,OAAO;AAC9B,SAASC,QAAQ,EAAEC,QAAQ,EAAEC,aAAa,QAAQ,cAAc;AAChE,SAEEC,IAAI,QAEC,sBAAsB;AAQ7B,SAASC,yBAAyB,QAAQ,uCAAoC;AAC9E,SAASC,yBAAyB,QAAQ,uCAAoC;AAC9E,SAASC,iBAAiB,QAAQ,+BAA4B;AAC9D,SAASC,aAAa,QAAQ,oBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAQhD,MAAMC,SAAS,GAAGX,QAAQ,CAACY,MAAM,CAAC;EAChCC,GAAG,EAAE,EAAE;EACPC,OAAO,EAAE;AACX,CAAC,CAAC;AAEF,MAAMC,IAAI,GAAG;EACXC,IAAI,EAAE;AACR,CAAC;AAED,OAAO,SAASC,mBAAmBA,CAAC;EAClCC,KAAK;EACLC,UAAU;EACVC,WAAW;EACXC;AACK,CAAC,EAAE;EACR,MAAM;IAAEC,IAAI;IAAEC,MAAM;IAAEC;EAAM,CAAC,GAAG3B,QAAQ,CAAC,CAAC;EAE1C,MAAM4B,eAAe,GAAGP,KAAK,CAACQ,MAAM,CAACR,KAAK,CAACS,KAAK,CAAC,CAACC,GAAG;EACrD,MAAMC,mBAAmB,GAAG/B,KAAK,CAACgC,MAAM,CAACL,eAAe,CAAC;EAEzD3B,KAAK,CAACiC,SAAS,CAAC,MAAM;IACpB,MAAMC,gBAAgB,GAAGH,mBAAmB,CAACI,OAAO;IAEpD,IACED,gBAAgB,KAAKP,eAAe,IACpCL,WAAW,CAACY,gBAAgB,CAAC,EAAEE,OAAO,CAACC,cAAc,EACrD;MACA,MAAMC,SAAS,GAAGlB,KAAK,CAACQ,MAAM,CAACW,IAAI,CAChCC,KAAK,IAAKA,KAAK,CAACV,GAAG,KAAKI,gBAC3B,CAAC;MAED,IAAII,SAAS,EAAElB,KAAK,EAAEF,IAAI,KAAK,OAAO,IAAIoB,SAAS,CAAClB,KAAK,CAACU,GAAG,EAAE;QAC7D,MAAMW,cAAc,GAAG;UACrB,GAAG3C,YAAY,CAAC4C,QAAQ,CAAC,CAAC;UAC1BC,MAAM,EAAEL,SAAS,CAAClB,KAAK,CAACU;QAC1B,CAAC;QACDT,UAAU,CAACuB,QAAQ,CAACH,cAAc,CAAC;MACrC;IACF;IAEAV,mBAAmB,CAACI,OAAO,GAAGR,eAAe;EAC/C,CAAC,EAAE,CAACL,WAAW,EAAEK,eAAe,EAAEN,UAAU,EAAED,KAAK,CAACS,KAAK,EAAET,KAAK,CAACQ,MAAM,CAAC,CAAC;EAEzE,MAAMiB,cAAc,GAAGvB,WAAW,CAACF,KAAK,CAACQ,MAAM,CAACR,KAAK,CAACS,KAAK,CAAC,CAACC,GAAG,CAAC,EAAEM,OAAO;EAE1E,MAAM;IACJU,UAAU,GAAG5C,QAAQ,CAACY,MAAM,CAAC;MAC3BC,GAAG,EAAEW,KAAK,CAACqB,MAAM,CAACD,UAAU;MAC5B9B,OAAO,EAAEU,KAAK,CAACsB,OAAO,CAACF;IACzB,CAAC,CAAC;IACFG,UAAU,GAAG/C,QAAQ,CAACY,MAAM,CAAC;MAC3BC,GAAG,EAAEW,KAAK,CAACqB,MAAM,CAACE,UAAU;MAC5BjC,OAAO,EAAEU,KAAK,CAACsB,OAAO,CAACC;IACzB,CAAC,CAAC;IACFC,QAAQ;IACRC;EACF,CAAC,GAAGN,cAAc,CAACO,gBAAgB,IAAI,CAAC,CAAC;EAEzC,MAAMC,eAAe,GACnBR,cAAc,CAACS,qBAAqB,IAAI7B,MAAM,CAAC8B,OAAO;EAExD,MAAMC,iBAAiB,GACrBX,cAAc,CAACY,uBAAuB,IACtCvD,QAAQ,CAACY,MAAM,CAAC;IAAEC,GAAG,EAAEZ,aAAa,CAAC,OAAO,CAAC;IAAEa,OAAO,EAAES,MAAM,CAACiC;EAAK,CAAC,CAAC;EAExE,MAAMC,oBAAoB,GACxBd,cAAc,EAAEe,0BAA0B,IAC1CnE,KAAK,CAAC4D,eAAe,CAAC,EAAEQ,KAAK,CAAC,GAAG,CAAC,CAACC,MAAM,CAAC,CAAC;EAE7C,MAAMC,iBAAiB,GAAGA,CAAC;IAAEvB;EAAgC,CAAC,KAAK;IACjEnB,UAAU,CAAC2C,IAAI,CAAC;MACd9C,IAAI,EAAE,iBAAiB;MACvByB,MAAM,EAAEH,KAAK,CAACV;IAChB,CAAC,CAAC;EACJ,CAAC;EAED,MAAMmC,eAAe,GAAGA,CAAC;IAAEzB;EAAgC,CAAC,KAAK;IAC/DnB,UAAU,CAAC2C,IAAI,CAAC;MACd9C,IAAI,EAAE,eAAe;MACrByB,MAAM,EAAEH,KAAK,CAACV;IAChB,CAAC,CAAC;EACJ,CAAC;EAED,MAAMoC,cAAc,GAAG3D,iBAAiB,CAACsC,cAAc,CAAC;EAExD,MAAMsB,eAAe,GAAG5C,MAAM,IAAI,IAAI;EACtC,MAAM6C,aAAa,GAAG7C,MAAM,GACxBA,MAAM,CAAC;IACLH,KAAK;IACLE,WAAW;IACXD;EACF,CAAC,CAAC,GACF,IAAI;EAER,MAAMgD,oBAAoB,GACxBxB,cAAc,CAACwB,oBAAoB,KAAK,MAAM,GAC1C,WAAW,GACXxB,cAAc,CAACwB,oBAAoB;EAEzC,MAAMC,sBAAsB,GAC1BzB,cAAc,CAACyB,sBAAsB,KAAK,MAAM,GAC5C,WAAW,GACXzB,cAAc,CAACyB,sBAAsB,KAAK,MAAM,GAC9C,OAAO,GACPzB,cAAc,CAACyB,sBAAsB;EAE7C,MAAMC,eAAe,GAAG1B,cAAc,CAAC0B,eAAe;EAEtD,oBACE3D,KAAA,CAACjB,sBAAsB;IACrB6E,KAAK,EAAE;MACLC,aAAa,EACXP,cAAc,KAAK,MAAM,IAAIA,cAAc,KAAK,OAAO,GACnD,KAAK,GACL;IACR,CAAE;IAAAQ,QAAA,GAEDR,cAAc,KAAK,KAAK,IAAIA,cAAc,KAAK,MAAM,GAClDE,aAAa,GACb,IAAI,eACR1D,IAAA,CAACN,IAAI,CAACuE,IAAI;MACRC,YAAY,EAAET,eAAgB;MAC9BI,eAAe,EACbA,eAAe,GACVM,WAAW,IAAKN,eAAe,CAAC;QAAEO,SAAS,EAAED;MAAY,CAAC,CAAC,GAC5DE,SACL;MACDC,6BAA6B,EAC3BnC,cAAc,EAAEoC,yBACjB;MACDZ,oBAAoB,EAAEA,oBAAqB;MAC3CC,sBAAsB,EAAEA,sBAAuB;MAC/CY,eAAe,EAAE7B,eAAgB;MACjC8B,mBAAmB,EAAE3B,iBAAkB;MACvC4B,yBAAyB,EAAE/B,eAAgB;MAC3CgC,wBAAwB,EAAE7B,iBAAkB;MAC5C8B,8BAA8B,EAAEjC,eAAgB;MAChDkC,yBAAyB,EAAEzC,UAAW;MACtC0C,yBAAyB,EAAEvC,UAAW;MACtCwC,uBAAuB,EAAEvC,QAAS;MAClCwC,6BAA6B,EAAExC,QAAS;MACxCyC,wBAAwB,EAAExC,SAAU;MACpCyC,qBAAqB,EACnB/C,cAAc,CAACgD,WAAW,EAAEC,eAAe,IAAIrE,MAAM,CAACsE,IACvD;MACDC,8BAA8B,EAAErC,oBAAqB;MACrDsC,gCAAgC,EAC9BpD,cAAc,EAAEqD,4BACjB;MACDC,qBAAqB,EAAEtD,cAAc,EAAEuD,iBAAkB;MACzDC,sCAAsC,EAAE,KAAM;MAC9CC,mBAAmB,EAAGC,CAAC,IAAK;QAC1B,MAAM/D,KAAK,GAAGpB,KAAK,CAACQ,MAAM,CAACW,IAAI,CAC5BC,KAAK,IAAKA,KAAK,CAACV,GAAG,KAAKyE,CAAC,CAACC,WAAW,CAACC,MACzC,CAAC;QAED,IAAIjE,KAAK,EAAE;UACT,MAAMkE,KAAK,GAAGrF,UAAU,CAAC2C,IAAI,CAAC;YAC5B9C,IAAI,EAAE,UAAU;YAChByB,MAAM,EAAEH,KAAK,CAACV,GAAG;YACjB6E,iBAAiB,EAAE;UACrB,CAAC,CAAC;UAEF,IAAID,KAAK,CAACE,gBAAgB,EAAE;YAC1B,MAAM,IAAIC,KAAK,CACb,yEACF,CAAC;UACH;UAEA,MAAMC,SAAS,GACb1F,KAAK,CAACS,KAAK,KACXT,KAAK,CAACQ,MAAM,CAACmF,SAAS,CAAEC,CAAC,IAAKA,CAAC,CAAClF,GAAG,KAAKU,KAAK,CAACV,GAAG,CAAC;UAEpD,IAAI,CAACgF,SAAS,EAAE;YACdzF,UAAU,CAACuB,QAAQ,CAAC;cAClB,GAAGhD,aAAa,CAACqH,QAAQ,CAACzE,KAAK,CAAC0E,IAAI,EAAE1E,KAAK,CAAC2E,MAAM,CAAC;cACnDxE,MAAM,EAAEvB,KAAK,CAACU;YAChB,CAAC,CAAC;UACJ;QACF;MACF,CAAE;MAAA4C,QAAA,EAEDtD,KAAK,CAACQ,MAAM,CAACwF,GAAG,CAAC,CAAC5E,KAAK,EAAEX,KAAK,KAAK;QAClC,MAAM;UAAEO,OAAO;UAAEiF,MAAM;UAAEhG;QAAW,CAAC,GAAGC,WAAW,CAACkB,KAAK,CAACV,GAAG,CAAC;QAC9D,MAAMgF,SAAS,GAAG1F,KAAK,CAACS,KAAK,KAAKA,KAAK;QACvC,MAAMyF,WAAW,GAAGlG,KAAK,CAACmG,kBAAkB,CAACC,QAAQ,CAAChF,KAAK,CAACV,GAAG,CAAC;QAEhE,MAAM;UACJ2F,KAAK;UACLC,IAAI,GAAG,IAAI;UACXC,WAAW;UACXC,gBAAgB;UAChBC,UAAU;UACVC,WAAW;UACXC,gBAAgB;UAChBC,gBAAgB,GAAGxG,IAAI,GAAG,oBAAoB,GAAG,gBAAgB;UACjEqE,WAAW;UACXoC,UAAU;UACVC;QACF,CAAC,GAAG9F,OAAO;QAEX,MAAM;UACJ0D,eAAe,EAAEF,qBAAqB;UACtCuC,WAAW,EAAEC;QACf,CAAC,GAAGvC,WAAW,IAAI,CAAC,CAAC;QAErB,MAAMwC,QAAQ;QACZ;QACA;QACAnI,QAAQ,CAACoI,EAAE,KAAK,KAAK,IAAIP,gBAAgB,IAAI,IAAI,GAC7CJ,WAAW,GACXnI,QAAQ,CAAC;UAAE+I,KAAK,EAAEZ,WAAW;UAAEF;QAAM,CAAC,EAAEjF,KAAK,CAAC0E,IAAI,CAAC;QAEzD,MAAMsB,iBAAgD,GAAG;UACvDjD,yBAAyB,EAAEzC,UAAU;UACrC2C,uBAAuB,EAAEvC,QAAQ;UACjCsC,yBAAyB,EAAEvC,UAAU;UACrC0C,wBAAwB,EAAExC;QAC5B,CAAC;QAED,MAAMsF,oBAAoB,GACxBb,gBAAgB,EAAE9B,eAAe,IAAIrE,MAAM,CAACiH,YAAY;QAC1D,MAAMC,cAAc,GAClBf,gBAAgB,EAAEgB,KAAK,KACtBnJ,KAAK,CAACgJ,oBAAoB,CAAC,EAAEI,OAAO,CAAC,CAAC,GAAG,OAAO,GAAG,OAAO,CAAC;QAE9D,MAAMC,OAAO,GAAIC,QAAiB,IAAK;UACrC,IAAI,OAAOlB,UAAU,KAAK,UAAU,EAAE;YACpC,MAAMmB,MAAM,GAAGnB,UAAU,CAAC;cACxBoB,OAAO,EAAEF,QAAQ;cACjBG,IAAI,EAAErI,SAAU;cAChB+H,KAAK,EAAEG,QAAQ,GAAG1F,eAAe,GAAGG;YACtC,CAAC,CAAC;YAEF,iBAAIxD,KAAK,CAACmJ,cAAc,CAACH,MAAM,CAAC,EAAE;cAChC,MAAM,IAAInC,KAAK,CACb,mFACF,CAAC;YACH,CAAC,MAAM,IACLmC,MAAM,IACN,OAAOA,MAAM,KAAK,QAAQ,IAC1B,MAAM,IAAIA,MAAM,EAChB;cACA,OAAOI,eAAe,CAACJ,MAAM,CAAC;YAChC,CAAC,MAAM;cACL,MAAM,IAAInC,KAAK,CACb,6DAA6D,OAAOmC,MAAM,IAC5E,CAAC;YACH;UACF,CAAC,MAAM,IAAInB,UAAU,IAAI,IAAI,EAAE;YAC7B,OAAOuB,eAAe,CAACvB,UAAU,CAAC;UACpC;UAEA,OAAO9C,SAAS;QAClB,CAAC;QAED,MAAMsE,IAAI,GAAGP,OAAO,CAAC,KAAK,CAAC;QAC3B,MAAMQ,YAAY,GAAGR,OAAO,CAAC,IAAI,CAAC;QAElC,oBACEpI,IAAA,CAACN,IAAI,CAACmJ,MAAM;UACVC,YAAY,EAAEA,CAAA,KAAMzF,iBAAiB,CAAC;YAAEvB;UAAM,CAAC,CAAE;UACjDiH,WAAW,EAAEA,CAAA,KAAMxF,eAAe,CAAC;YAAEzB;UAAM,CAAC,CAAE;UAE9CiE,MAAM,EAAEjE,KAAK,CAACV,GAAI;UAClBuH,IAAI,EAAEA,IAAK;UACXC,YAAY,EAAEA,YAAY,EAAEvI,GAAG,IAAIuI,YAAY,EAAEI,MAAO;UACxDC,8BAA8B,EAAElB,oBAAqB;UACrDmB,wBAAwB,EAAEjB,cAAe;UACzCkB,UAAU,EAAE/B,WAAW,EAAEgC,QAAQ,CAAC,CAAE;UACpCC,UAAU,EAAEhC,gBAAiB;UAC7BjB,SAAS,EAAEA,SAAU;UACrBW,KAAK,EAAEY,QAAS;UAChBH,iBAAiB,EAAE;YACjB8B,GAAG,EACD9B,iBAAiB,EAAE8B,GAAG,KAAK,MAAM,GAC7B,WAAW,GACX9B,iBAAiB,EAAE8B,GAAG;YAC5BC,MAAM,EACJ/B,iBAAiB,EAAE+B,MAAM,KAAK,MAAM,GAChC,WAAW,GACX/B,iBAAiB,EAAE+B,MAAM;YAC/BC,IAAI,EACFhC,iBAAiB,EAAEgC,IAAI,KAAK,MAAM,GAC9B,WAAW,GACXhC,iBAAiB,EAAEgC,IAAI;YAC7BC,KAAK,EACHjC,iBAAiB,EAAEiC,KAAK,KAAK,MAAM,GAC/B,WAAW,GACXjC,iBAAiB,EAAEiC;UAC3B;UACA;UACA;UAAA;UACAC,oBAAoB,EAAE,CAAC,CAAE;UACzBC,kBAAkB,EAAE;YAClBzE,qBAAqB;YACrBwC,iBAAiB;YACjBJ,gBAAgB;YAChBsC,OAAO,EAAE;cACPC,MAAM,EAAE/B;YACV,CAAC;YACDgC,MAAM,EAAE;cACND,MAAM,EAAE/B;YACV,CAAC;YACDiC,aAAa,EAAE;cACbF,MAAM,EAAE/B;YACV;UACF,CAAE;UACFkC,cAAc,EAAE;YACdC,oBAAoB,EAAE;cACpBC,SAAS,EAAE,IAAI;cACfC,WAAW,EAAE;YACf;UACF,CAAE;UACFC,+BAA+B,EAAEtJ,IAAI,GAAG,MAAM,GAAG,OAAQ;UAAAkD,QAAA,eAEzDhE,IAAA,CAAChB,IAAI;YAACqL,OAAO,EAAErD,IAAK;YAACsD,OAAO,EAAElE,SAAS,IAAIQ,WAAY;YAAA5C,QAAA,eACrDhE,IAAA,CAACF,aAAa;cACZsG,SAAS,EAAEA,SAAU;cACrBtE,KAAK,EAAEA,KAAM;cACbnB,UAAU,EAAEA,UAAW;cACvBe,OAAO,EAAEA,OAAQ;cACjBoC,KAAK,EAAEyD,UAAW;cAAAvD,QAAA,eAElBhE,IAAA,CAACuK,qBAAqB;gBAACnE,SAAS,EAAEA,SAAU;gBAAApC,QAAA,eAC1ChE,IAAA,CAACJ,yBAAyB,CAAC4K,QAAQ;kBAACC,KAAK,EAAE,CAAE;kBAAAzG,QAAA,eAC3ChE,IAAA,CAACb,qBAAqB,CAACqL,QAAQ;oBAACC,KAAK,EAAElK,IAAK;oBAAAyD,QAAA,EACzC2C,MAAM,CAAC;kBAAC,CACqB;gBAAC,CACC;cAAC,CAChB;YAAC,CACX;UAAC,CACZ;QAAC,GArEF7E,KAAK,CAACV,GAsEA,CAAC;MAElB,CAAC;IAAC,CACO,CAAC,EACXoC,cAAc,KAAK,QAAQ,IAAIA,cAAc,KAAK,OAAO,GACtDE,aAAa,GACb,IAAI;EAAA,CACc,CAAC;AAE7B;AACA,SAAS6G,qBAAqBA,CAAC;EAC7BnE,SAAS;EACTpC;AAIF,CAAC,EAAE;EACD,MAAM,CAAC0G,QAAQ,CAAC,GAAGpL,KAAK,CAACqL,QAAQ,CAC/B,MAAM,IAAIpL,QAAQ,CAACqL,KAAK,CAACxE,SAAS,GAAG,CAAC,GAAG,CAAC,CAC5C,CAAC;EAED9G,KAAK,CAACuL,eAAe,CAAC,MAAM;IAC1B;AACJ;AACA;AACA;AACA;IACIH,QAAQ,CAACI,QAAQ,CAAC1E,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC;EACtC,CAAC,EAAE,CAACA,SAAS,EAAEsE,QAAQ,CAAC,CAAC;EAEzB,MAAMK,kBAAkB,GAAGzL,KAAK,CAAC0L,OAAO,CAAC,MAAM;IAC7C,OAAO;MACLvJ,OAAO,EAAE;QAAEiJ;MAAS;IACtB,CAAC;EACH,CAAC,EAAE,CAACA,QAAQ,CAAC,CAAC;EAEd,oBACE1K,IAAA,CAACL,yBAAyB,CAAC6K,QAAQ;IAACC,KAAK,EAAEM,kBAAmB;IAAA/G,QAAA,EAC3DA;EAAQ,CACyB,CAAC;AAEzC;AAEA,SAAS0E,eAAeA,CAACC,IAAmB,EAAgB;EAC1D,OAAO;IACLtI,GAAG,EACDsI,IAAI,EAAEnI,IAAI,KAAK,UAAU,GACrBmI,IAAI,GACJA,IAAI,EAAEnI,IAAI,KAAK,OAAO,IAAImI,IAAI,CAACsC,MAAM,KAAK,KAAK,GAC7C;MACEzK,IAAI,EAAE,gBAAgB;MACtB0K,cAAc,EAAEvC,IAAI,CAACwC;IACvB,CAAC,GACD9G,SAAS;IACjB+G,OAAO,EAAEzC,IAAI,EAAEnI,IAAI,KAAK,kBAAkB,GAAGmI,IAAI,GAAGtE,SAAS;IAC7D2E,MAAM,EACJL,IAAI,EAAEnI,IAAI,KAAK,OAAO,GAClB;MACEA,IAAI,EAAE,aAAa;MACnB6K,WAAW,EAAE1C,IAAI,CAACwC;IACpB,CAAC,GACD9G;EACR,CAAC;AACH","ignoreList":[]}